var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x + '" is not supported'); }); var __esm = (fn, res, err) => function __init() { if (err) throw err[0]; try { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; } catch (e) { throw err = [e], e; } }; var __commonJS = (cb, mod) => function __require2() { try { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; } catch (e) { throw mod = 0, e; } }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/base64-js/index.js var require_base64_js = __commonJS({ "node_modules/base64-js/index.js"(exports) { "use strict"; init_inject_buffer(); exports.byteLength = byteLength; exports.toByteArray = toByteArray; exports.fromByteArray = fromByteArray; var lookup = []; var revLookup = []; var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (i2 = 0, len = code.length; i2 < len; ++i2) { lookup[i2] = code[i2]; revLookup[code.charCodeAt(i2)] = i2; } var i2; var len; revLookup["-".charCodeAt(0)] = 62; revLookup["_".charCodeAt(0)] = 63; function getLens(b64) { var len2 = b64.length; if (len2 % 4 > 0) { throw new Error("Invalid string. Length must be a multiple of 4"); } var validLen = b64.indexOf("="); if (validLen === -1) validLen = len2; var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; return [validLen, placeHoldersLen]; } function byteLength(b64) { var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function _byteLength(b64, validLen, placeHoldersLen) { return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function toByteArray(b64) { var tmp; var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); var curByte = 0; var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; var i3; for (i3 = 0; i3 < len2; i3 += 4) { tmp = revLookup[b64.charCodeAt(i3)] << 18 | revLookup[b64.charCodeAt(i3 + 1)] << 12 | revLookup[b64.charCodeAt(i3 + 2)] << 6 | revLookup[b64.charCodeAt(i3 + 3)]; arr[curByte++] = tmp >> 16 & 255; arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255; } if (placeHoldersLen === 2) { tmp = revLookup[b64.charCodeAt(i3)] << 2 | revLookup[b64.charCodeAt(i3 + 1)] >> 4; arr[curByte++] = tmp & 255; } if (placeHoldersLen === 1) { tmp = revLookup[b64.charCodeAt(i3)] << 10 | revLookup[b64.charCodeAt(i3 + 1)] << 4 | revLookup[b64.charCodeAt(i3 + 2)] >> 2; arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255; } return arr; } function tripletToBase64(num) { return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; } function encodeChunk(uint8, start, end) { var tmp; var output = []; for (var i3 = start; i3 < end; i3 += 3) { tmp = (uint8[i3] << 16 & 16711680) + (uint8[i3 + 1] << 8 & 65280) + (uint8[i3 + 2] & 255); output.push(tripletToBase64(tmp)); } return output.join(""); } function fromByteArray(uint8) { var tmp; var len2 = uint8.length; var extraBytes = len2 % 3; var parts = []; var maxChunkLength = 16383; for (var i3 = 0, len22 = len2 - extraBytes; i3 < len22; i3 += maxChunkLength) { parts.push(encodeChunk(uint8, i3, i3 + maxChunkLength > len22 ? len22 : i3 + maxChunkLength)); } if (extraBytes === 1) { tmp = uint8[len2 - 1]; parts.push( lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" ); } else if (extraBytes === 2) { tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; parts.push( lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" ); } return parts.join(""); } } }); // node_modules/ieee754/index.js var require_ieee754 = __commonJS({ "node_modules/ieee754/index.js"(exports) { init_inject_buffer(); exports.read = function(buffer, offset, isLE, mLen, nBytes) { var e, m; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; var eBias = eMax >> 1; var nBits = -7; var i2 = isLE ? nBytes - 1 : 0; var d = isLE ? -1 : 1; var s = buffer[offset + i2]; i2 += d; e = s & (1 << -nBits) - 1; s >>= -nBits; nBits += eLen; for (; nBits > 0; e = e * 256 + buffer[offset + i2], i2 += d, nBits -= 8) { } m = e & (1 << -nBits) - 1; e >>= -nBits; nBits += mLen; for (; nBits > 0; m = m * 256 + buffer[offset + i2], i2 += d, nBits -= 8) { } if (e === 0) { e = 1 - eBias; } else if (e === eMax) { return m ? NaN : (s ? -1 : 1) * Infinity; } else { m = m + Math.pow(2, mLen); e = e - eBias; } return (s ? -1 : 1) * m * Math.pow(2, e - mLen); }; exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { var e, m, c; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; var eBias = eMax >> 1; var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; var i2 = isLE ? 0 : nBytes - 1; var d = isLE ? 1 : -1; var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; value = Math.abs(value); if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0; e = eMax; } else { e = Math.floor(Math.log(value) / Math.LN2); if (value * (c = Math.pow(2, -e)) < 1) { e--; c *= 2; } if (e + eBias >= 1) { value += rt / c; } else { value += rt * Math.pow(2, 1 - eBias); } if (value * c >= 2) { e++; c /= 2; } if (e + eBias >= eMax) { m = 0; e = eMax; } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen); e = e + eBias; } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); e = 0; } } for (; mLen >= 8; buffer[offset + i2] = m & 255, i2 += d, m /= 256, mLen -= 8) { } e = e << mLen | m; eLen += mLen; for (; eLen > 0; buffer[offset + i2] = e & 255, i2 += d, e /= 256, eLen -= 8) { } buffer[offset + i2 - d] |= s * 128; }; } }); // node_modules/buffer/index.js var require_buffer = __commonJS({ "node_modules/buffer/index.js"(exports) { "use strict"; init_inject_buffer(); var base64 = require_base64_js(); var ieee754 = require_ieee754(); var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; exports.Buffer = Buffer2; exports.SlowBuffer = SlowBuffer; exports.INSPECT_MAX_BYTES = 50; var K_MAX_LENGTH = 2147483647; exports.kMaxLength = K_MAX_LENGTH; Buffer2.TYPED_ARRAY_SUPPORT = typedArraySupport(); if (!Buffer2.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { console.error( "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." ); } function typedArraySupport() { try { const arr = new Uint8Array(1); const proto = { foo: function() { return 42; } }; Object.setPrototypeOf(proto, Uint8Array.prototype); Object.setPrototypeOf(arr, proto); return arr.foo() === 42; } catch (e) { return false; } } Object.defineProperty(Buffer2.prototype, "parent", { enumerable: true, get: function() { if (!Buffer2.isBuffer(this)) return void 0; return this.buffer; } }); Object.defineProperty(Buffer2.prototype, "offset", { enumerable: true, get: function() { if (!Buffer2.isBuffer(this)) return void 0; return this.byteOffset; } }); function createBuffer(length) { if (length > K_MAX_LENGTH) { throw new RangeError('The value "' + length + '" is invalid for option "size"'); } const buf = new Uint8Array(length); Object.setPrototypeOf(buf, Buffer2.prototype); return buf; } function Buffer2(arg, encodingOrOffset, length) { if (typeof arg === "number") { if (typeof encodingOrOffset === "string") { throw new TypeError( 'The "string" argument must be of type string. Received type number' ); } return allocUnsafe(arg); } return from(arg, encodingOrOffset, length); } Buffer2.poolSize = 8192; function from(value, encodingOrOffset, length) { if (typeof value === "string") { return fromString(value, encodingOrOffset); } if (ArrayBuffer.isView(value)) { return fromArrayView(value); } if (value == null) { throw new TypeError( "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value ); } if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { return fromArrayBuffer(value, encodingOrOffset, length); } if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { return fromArrayBuffer(value, encodingOrOffset, length); } if (typeof value === "number") { throw new TypeError( 'The "value" argument must not be of type number. Received type number' ); } const valueOf = value.valueOf && value.valueOf(); if (valueOf != null && valueOf !== value) { return Buffer2.from(valueOf, encodingOrOffset, length); } const b = fromObject(value); if (b) return b; if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { return Buffer2.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); } throw new TypeError( "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value ); } Buffer2.from = function(value, encodingOrOffset, length) { return from(value, encodingOrOffset, length); }; Object.setPrototypeOf(Buffer2.prototype, Uint8Array.prototype); Object.setPrototypeOf(Buffer2, Uint8Array); function assertSize(size) { if (typeof size !== "number") { throw new TypeError('"size" argument must be of type number'); } else if (size < 0) { throw new RangeError('The value "' + size + '" is invalid for option "size"'); } } function alloc(size, fill, encoding) { assertSize(size); if (size <= 0) { return createBuffer(size); } if (fill !== void 0) { return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); } return createBuffer(size); } Buffer2.alloc = function(size, fill, encoding) { return alloc(size, fill, encoding); }; function allocUnsafe(size) { assertSize(size); return createBuffer(size < 0 ? 0 : checked(size) | 0); } Buffer2.allocUnsafe = function(size) { return allocUnsafe(size); }; Buffer2.allocUnsafeSlow = function(size) { return allocUnsafe(size); }; function fromString(string, encoding) { if (typeof encoding !== "string" || encoding === "") { encoding = "utf8"; } if (!Buffer2.isEncoding(encoding)) { throw new TypeError("Unknown encoding: " + encoding); } const length = byteLength(string, encoding) | 0; let buf = createBuffer(length); const actual = buf.write(string, encoding); if (actual !== length) { buf = buf.slice(0, actual); } return buf; } function fromArrayLike(array) { const length = array.length < 0 ? 0 : checked(array.length) | 0; const buf = createBuffer(length); for (let i2 = 0; i2 < length; i2 += 1) { buf[i2] = array[i2] & 255; } return buf; } function fromArrayView(arrayView) { if (isInstance(arrayView, Uint8Array)) { const copy = new Uint8Array(arrayView); return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); } return fromArrayLike(arrayView); } function fromArrayBuffer(array, byteOffset, length) { if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('"offset" is outside of buffer bounds'); } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('"length" is outside of buffer bounds'); } let buf; if (byteOffset === void 0 && length === void 0) { buf = new Uint8Array(array); } else if (length === void 0) { buf = new Uint8Array(array, byteOffset); } else { buf = new Uint8Array(array, byteOffset, length); } Object.setPrototypeOf(buf, Buffer2.prototype); return buf; } function fromObject(obj) { if (Buffer2.isBuffer(obj)) { const len = checked(obj.length) | 0; const buf = createBuffer(len); if (buf.length === 0) { return buf; } obj.copy(buf, 0, 0, len); return buf; } if (obj.length !== void 0) { if (typeof obj.length !== "number" || numberIsNaN(obj.length)) { return createBuffer(0); } return fromArrayLike(obj); } if (obj.type === "Buffer" && Array.isArray(obj.data)) { return fromArrayLike(obj.data); } } function checked(length) { if (length >= K_MAX_LENGTH) { throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes"); } return length | 0; } function SlowBuffer(length) { if (+length != length) { length = 0; } return Buffer2.alloc(+length); } Buffer2.isBuffer = function isBuffer(b) { return b != null && b._isBuffer === true && b !== Buffer2.prototype; }; Buffer2.compare = function compare(a, b) { if (isInstance(a, Uint8Array)) a = Buffer2.from(a, a.offset, a.byteLength); if (isInstance(b, Uint8Array)) b = Buffer2.from(b, b.offset, b.byteLength); if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { throw new TypeError( 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' ); } if (a === b) return 0; let x = a.length; let y = b.length; for (let i2 = 0, len = Math.min(x, y); i2 < len; ++i2) { if (a[i2] !== b[i2]) { x = a[i2]; y = b[i2]; break; } } if (x < y) return -1; if (y < x) return 1; return 0; }; Buffer2.isEncoding = function isEncoding(encoding) { switch (String(encoding).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return true; default: return false; } }; Buffer2.concat = function concat(list, length) { if (!Array.isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers'); } if (list.length === 0) { return Buffer2.alloc(0); } let i2; if (length === void 0) { length = 0; for (i2 = 0; i2 < list.length; ++i2) { length += list[i2].length; } } const buffer = Buffer2.allocUnsafe(length); let pos = 0; for (i2 = 0; i2 < list.length; ++i2) { let buf = list[i2]; if (isInstance(buf, Uint8Array)) { if (pos + buf.length > buffer.length) { if (!Buffer2.isBuffer(buf)) buf = Buffer2.from(buf); buf.copy(buffer, pos); } else { Uint8Array.prototype.set.call( buffer, buf, pos ); } } else if (!Buffer2.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers'); } else { buf.copy(buffer, pos); } pos += buf.length; } return buffer; }; function byteLength(string, encoding) { if (Buffer2.isBuffer(string)) { return string.length; } if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { return string.byteLength; } if (typeof string !== "string") { throw new TypeError( 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string ); } const len = string.length; const mustMatch = arguments.length > 2 && arguments[2] === true; if (!mustMatch && len === 0) return 0; let loweredCase = false; for (; ; ) { switch (encoding) { case "ascii": case "latin1": case "binary": return len; case "utf8": case "utf-8": return utf8ToBytes(string).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return len * 2; case "hex": return len >>> 1; case "base64": return base64ToBytes(string).length; default: if (loweredCase) { return mustMatch ? -1 : utf8ToBytes(string).length; } encoding = ("" + encoding).toLowerCase(); loweredCase = true; } } } Buffer2.byteLength = byteLength; function slowToString(encoding, start, end) { let loweredCase = false; if (start === void 0 || start < 0) { start = 0; } if (start > this.length) { return ""; } if (end === void 0 || end > this.length) { end = this.length; } if (end <= 0) { return ""; } end >>>= 0; start >>>= 0; if (end <= start) { return ""; } if (!encoding) encoding = "utf8"; while (true) { switch (encoding) { case "hex": return hexSlice(this, start, end); case "utf8": case "utf-8": return utf8Slice(this, start, end); case "ascii": return asciiSlice(this, start, end); case "latin1": case "binary": return latin1Slice(this, start, end); case "base64": return base64Slice(this, start, end); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return utf16leSlice(this, start, end); default: if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); encoding = (encoding + "").toLowerCase(); loweredCase = true; } } } Buffer2.prototype._isBuffer = true; function swap(b, n, m) { const i2 = b[n]; b[n] = b[m]; b[m] = i2; } Buffer2.prototype.swap16 = function swap16() { const len = this.length; if (len % 2 !== 0) { throw new RangeError("Buffer size must be a multiple of 16-bits"); } for (let i2 = 0; i2 < len; i2 += 2) { swap(this, i2, i2 + 1); } return this; }; Buffer2.prototype.swap32 = function swap32() { const len = this.length; if (len % 4 !== 0) { throw new RangeError("Buffer size must be a multiple of 32-bits"); } for (let i2 = 0; i2 < len; i2 += 4) { swap(this, i2, i2 + 3); swap(this, i2 + 1, i2 + 2); } return this; }; Buffer2.prototype.swap64 = function swap64() { const len = this.length; if (len % 8 !== 0) { throw new RangeError("Buffer size must be a multiple of 64-bits"); } for (let i2 = 0; i2 < len; i2 += 8) { swap(this, i2, i2 + 7); swap(this, i2 + 1, i2 + 6); swap(this, i2 + 2, i2 + 5); swap(this, i2 + 3, i2 + 4); } return this; }; Buffer2.prototype.toString = function toString() { const length = this.length; if (length === 0) return ""; if (arguments.length === 0) return utf8Slice(this, 0, length); return slowToString.apply(this, arguments); }; Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; Buffer2.prototype.equals = function equals(b) { if (!Buffer2.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); if (this === b) return true; return Buffer2.compare(this, b) === 0; }; Buffer2.prototype.inspect = function inspect() { let str = ""; const max = exports.INSPECT_MAX_BYTES; str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); if (this.length > max) str += " ... "; return ""; }; if (customInspectSymbol) { Buffer2.prototype[customInspectSymbol] = Buffer2.prototype.inspect; } Buffer2.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { if (isInstance(target, Uint8Array)) { target = Buffer2.from(target, target.offset, target.byteLength); } if (!Buffer2.isBuffer(target)) { throw new TypeError( 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target ); } if (start === void 0) { start = 0; } if (end === void 0) { end = target ? target.length : 0; } if (thisStart === void 0) { thisStart = 0; } if (thisEnd === void 0) { thisEnd = this.length; } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError("out of range index"); } if (thisStart >= thisEnd && start >= end) { return 0; } if (thisStart >= thisEnd) { return -1; } if (start >= end) { return 1; } start >>>= 0; end >>>= 0; thisStart >>>= 0; thisEnd >>>= 0; if (this === target) return 0; let x = thisEnd - thisStart; let y = end - start; const len = Math.min(x, y); const thisCopy = this.slice(thisStart, thisEnd); const targetCopy = target.slice(start, end); for (let i2 = 0; i2 < len; ++i2) { if (thisCopy[i2] !== targetCopy[i2]) { x = thisCopy[i2]; y = targetCopy[i2]; break; } } if (x < y) return -1; if (y < x) return 1; return 0; }; function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { if (buffer.length === 0) return -1; if (typeof byteOffset === "string") { encoding = byteOffset; byteOffset = 0; } else if (byteOffset > 2147483647) { byteOffset = 2147483647; } else if (byteOffset < -2147483648) { byteOffset = -2147483648; } byteOffset = +byteOffset; if (numberIsNaN(byteOffset)) { byteOffset = dir ? 0 : buffer.length - 1; } if (byteOffset < 0) byteOffset = buffer.length + byteOffset; if (byteOffset >= buffer.length) { if (dir) return -1; else byteOffset = buffer.length - 1; } else if (byteOffset < 0) { if (dir) byteOffset = 0; else return -1; } if (typeof val === "string") { val = Buffer2.from(val, encoding); } if (Buffer2.isBuffer(val)) { if (val.length === 0) { return -1; } return arrayIndexOf(buffer, val, byteOffset, encoding, dir); } else if (typeof val === "number") { val = val & 255; if (typeof Uint8Array.prototype.indexOf === "function") { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); } } return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); } throw new TypeError("val must be string, number or Buffer"); } function arrayIndexOf(arr, val, byteOffset, encoding, dir) { let indexSize = 1; let arrLength = arr.length; let valLength = val.length; if (encoding !== void 0) { encoding = String(encoding).toLowerCase(); if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") { if (arr.length < 2 || val.length < 2) { return -1; } indexSize = 2; arrLength /= 2; valLength /= 2; byteOffset /= 2; } } function read2(buf, i3) { if (indexSize === 1) { return buf[i3]; } else { return buf.readUInt16BE(i3 * indexSize); } } let i2; if (dir) { let foundIndex = -1; for (i2 = byteOffset; i2 < arrLength; i2++) { if (read2(arr, i2) === read2(val, foundIndex === -1 ? 0 : i2 - foundIndex)) { if (foundIndex === -1) foundIndex = i2; if (i2 - foundIndex + 1 === valLength) return foundIndex * indexSize; } else { if (foundIndex !== -1) i2 -= i2 - foundIndex; foundIndex = -1; } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; for (i2 = byteOffset; i2 >= 0; i2--) { let found = true; for (let j = 0; j < valLength; j++) { if (read2(arr, i2 + j) !== read2(val, j)) { found = false; break; } } if (found) return i2; } } return -1; } Buffer2.prototype.includes = function includes(val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1; }; Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true); }; Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false); }; function hexWrite(buf, string, offset, length) { offset = Number(offset) || 0; const remaining = buf.length - offset; if (!length) { length = remaining; } else { length = Number(length); if (length > remaining) { length = remaining; } } const strLen = string.length; if (length > strLen / 2) { length = strLen / 2; } let i2; for (i2 = 0; i2 < length; ++i2) { const parsed = parseInt(string.substr(i2 * 2, 2), 16); if (numberIsNaN(parsed)) return i2; buf[offset + i2] = parsed; } return i2; } function utf8Write(buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); } function asciiWrite(buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length); } function base64Write(buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length); } function ucs2Write(buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); } Buffer2.prototype.write = function write(string, offset, length, encoding) { if (offset === void 0) { encoding = "utf8"; length = this.length; offset = 0; } else if (length === void 0 && typeof offset === "string") { encoding = offset; length = this.length; offset = 0; } else if (isFinite(offset)) { offset = offset >>> 0; if (isFinite(length)) { length = length >>> 0; if (encoding === void 0) encoding = "utf8"; } else { encoding = length; length = void 0; } } else { throw new Error( "Buffer.write(string, encoding, offset[, length]) is no longer supported" ); } const remaining = this.length - offset; if (length === void 0 || length > remaining) length = remaining; if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { throw new RangeError("Attempt to write outside buffer bounds"); } if (!encoding) encoding = "utf8"; let loweredCase = false; for (; ; ) { switch (encoding) { case "hex": return hexWrite(this, string, offset, length); case "utf8": case "utf-8": return utf8Write(this, string, offset, length); case "ascii": case "latin1": case "binary": return asciiWrite(this, string, offset, length); case "base64": return base64Write(this, string, offset, length); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return ucs2Write(this, string, offset, length); default: if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); encoding = ("" + encoding).toLowerCase(); loweredCase = true; } } }; Buffer2.prototype.toJSON = function toJSON() { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) }; }; function base64Slice(buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf); } else { return base64.fromByteArray(buf.slice(start, end)); } } function utf8Slice(buf, start, end) { end = Math.min(buf.length, end); const res = []; let i2 = start; while (i2 < end) { const firstByte = buf[i2]; let codePoint = null; let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; if (i2 + bytesPerSequence <= end) { let secondByte, thirdByte, fourthByte, tempCodePoint; switch (bytesPerSequence) { case 1: if (firstByte < 128) { codePoint = firstByte; } break; case 2: secondByte = buf[i2 + 1]; if ((secondByte & 192) === 128) { tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; if (tempCodePoint > 127) { codePoint = tempCodePoint; } } break; case 3: secondByte = buf[i2 + 1]; thirdByte = buf[i2 + 2]; if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { codePoint = tempCodePoint; } } break; case 4: secondByte = buf[i2 + 1]; thirdByte = buf[i2 + 2]; fourthByte = buf[i2 + 3]; if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; if (tempCodePoint > 65535 && tempCodePoint < 1114112) { codePoint = tempCodePoint; } } } } if (codePoint === null) { codePoint = 65533; bytesPerSequence = 1; } else if (codePoint > 65535) { codePoint -= 65536; res.push(codePoint >>> 10 & 1023 | 55296); codePoint = 56320 | codePoint & 1023; } res.push(codePoint); i2 += bytesPerSequence; } return decodeCodePointsArray(res); } var MAX_ARGUMENTS_LENGTH = 4096; function decodeCodePointsArray(codePoints) { const len = codePoints.length; if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints); } let res = ""; let i2 = 0; while (i2 < len) { res += String.fromCharCode.apply( String, codePoints.slice(i2, i2 += MAX_ARGUMENTS_LENGTH) ); } return res; } function asciiSlice(buf, start, end) { let ret = ""; end = Math.min(buf.length, end); for (let i2 = start; i2 < end; ++i2) { ret += String.fromCharCode(buf[i2] & 127); } return ret; } function latin1Slice(buf, start, end) { let ret = ""; end = Math.min(buf.length, end); for (let i2 = start; i2 < end; ++i2) { ret += String.fromCharCode(buf[i2]); } return ret; } function hexSlice(buf, start, end) { const len = buf.length; if (!start || start < 0) start = 0; if (!end || end < 0 || end > len) end = len; let out = ""; for (let i2 = start; i2 < end; ++i2) { out += hexSliceLookupTable[buf[i2]]; } return out; } function utf16leSlice(buf, start, end) { const bytes = buf.slice(start, end); let res = ""; for (let i2 = 0; i2 < bytes.length - 1; i2 += 2) { res += String.fromCharCode(bytes[i2] + bytes[i2 + 1] * 256); } return res; } Buffer2.prototype.slice = function slice(start, end) { const len = this.length; start = ~~start; end = end === void 0 ? len : ~~end; if (start < 0) { start += len; if (start < 0) start = 0; } else if (start > len) { start = len; } if (end < 0) { end += len; if (end < 0) end = 0; } else if (end > len) { end = len; } if (end < start) end = start; const newBuf = this.subarray(start, end); Object.setPrototypeOf(newBuf, Buffer2.prototype); return newBuf; }; function checkOffset(offset, ext, length) { if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint"); if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length"); } Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) checkOffset(offset, byteLength2, this.length); let val = this[offset]; let mul = 1; let i2 = 0; while (++i2 < byteLength2 && (mul *= 256)) { val += this[offset + i2] * mul; } return val; }; Buffer2.prototype.readUintBE = Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) { checkOffset(offset, byteLength2, this.length); } let val = this[offset + --byteLength2]; let mul = 1; while (byteLength2 > 0 && (mul *= 256)) { val += this[offset + --byteLength2] * mul; } return val; }; Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); return this[offset]; }; Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] | this[offset + 1] << 8; }; Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] << 8 | this[offset + 1]; }; Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; }; Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); }; Buffer2.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first = this[offset]; const last = this[offset + 7]; if (first === void 0 || last === void 0) { boundsError(offset, this.length - 8); } const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24; const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24; return BigInt(lo) + (BigInt(hi) << BigInt(32)); }); Buffer2.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first = this[offset]; const last = this[offset + 7]; if (first === void 0 || last === void 0) { boundsError(offset, this.length - 8); } const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last; return (BigInt(hi) << BigInt(32)) + BigInt(lo); }); Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) checkOffset(offset, byteLength2, this.length); let val = this[offset]; let mul = 1; let i2 = 0; while (++i2 < byteLength2 && (mul *= 256)) { val += this[offset + i2] * mul; } mul *= 128; if (val >= mul) val -= Math.pow(2, 8 * byteLength2); return val; }; Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) checkOffset(offset, byteLength2, this.length); let i2 = byteLength2; let mul = 1; let val = this[offset + --i2]; while (i2 > 0 && (mul *= 256)) { val += this[offset + --i2] * mul; } mul *= 128; if (val >= mul) val -= Math.pow(2, 8 * byteLength2); return val; }; Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); if (!(this[offset] & 128)) return this[offset]; return (255 - this[offset] + 1) * -1; }; Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset] | this[offset + 1] << 8; return val & 32768 ? val | 4294901760 : val; }; Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset + 1] | this[offset] << 8; return val & 32768 ? val | 4294901760 : val; }; Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; }; Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; }; Buffer2.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first = this[offset]; const last = this[offset + 7]; if (first === void 0 || last === void 0) { boundsError(offset, this.length - 8); } const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24); }); Buffer2.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { offset = offset >>> 0; validateNumber(offset, "offset"); const first = this[offset]; const last = this[offset + 7]; if (first === void 0 || last === void 0) { boundsError(offset, this.length - 8); } const val = (first << 24) + // Overflow this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset]; return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last); }); Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, true, 23, 4); }; Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, false, 23, 4); }; Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, true, 52, 8); }; Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, false, 52, 8); }; function checkInt(buf, value, offset, ext, max, min) { if (!Buffer2.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); if (offset + ext > buf.length) throw new RangeError("Index out of range"); } Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) { const maxBytes = Math.pow(2, 8 * byteLength2) - 1; checkInt(this, value, offset, byteLength2, maxBytes, 0); } let mul = 1; let i2 = 0; this[offset] = value & 255; while (++i2 < byteLength2 && (mul *= 256)) { this[offset + i2] = value / mul & 255; } return offset + byteLength2; }; Buffer2.prototype.writeUintBE = Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; if (!noAssert) { const maxBytes = Math.pow(2, 8 * byteLength2) - 1; checkInt(this, value, offset, byteLength2, maxBytes, 0); } let i2 = byteLength2 - 1; let mul = 1; this[offset + i2] = value & 255; while (--i2 >= 0 && (mul *= 256)) { this[offset + i2] = value / mul & 255; } return offset + byteLength2; }; Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 1, 255, 0); this[offset] = value & 255; return offset + 1; }; Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); this[offset] = value & 255; this[offset + 1] = value >>> 8; return offset + 2; }; Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); this[offset] = value >>> 8; this[offset + 1] = value & 255; return offset + 2; }; Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); this[offset + 3] = value >>> 24; this[offset + 2] = value >>> 16; this[offset + 1] = value >>> 8; this[offset] = value & 255; return offset + 4; }; Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; this[offset + 3] = value & 255; return offset + 4; }; function wrtBigUInt64LE(buf, value, offset, min, max) { checkIntBI(value, min, max, buf, offset, 7); let lo = Number(value & BigInt(4294967295)); buf[offset++] = lo; lo = lo >> 8; buf[offset++] = lo; lo = lo >> 8; buf[offset++] = lo; lo = lo >> 8; buf[offset++] = lo; let hi = Number(value >> BigInt(32) & BigInt(4294967295)); buf[offset++] = hi; hi = hi >> 8; buf[offset++] = hi; hi = hi >> 8; buf[offset++] = hi; hi = hi >> 8; buf[offset++] = hi; return offset; } function wrtBigUInt64BE(buf, value, offset, min, max) { checkIntBI(value, min, max, buf, offset, 7); let lo = Number(value & BigInt(4294967295)); buf[offset + 7] = lo; lo = lo >> 8; buf[offset + 6] = lo; lo = lo >> 8; buf[offset + 5] = lo; lo = lo >> 8; buf[offset + 4] = lo; let hi = Number(value >> BigInt(32) & BigInt(4294967295)); buf[offset + 3] = hi; hi = hi >> 8; buf[offset + 2] = hi; hi = hi >> 8; buf[offset + 1] = hi; hi = hi >> 8; buf[offset] = hi; return offset + 8; } Buffer2.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); }); Buffer2.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); }); Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { const limit = Math.pow(2, 8 * byteLength2 - 1); checkInt(this, value, offset, byteLength2, limit - 1, -limit); } let i2 = 0; let mul = 1; let sub = 0; this[offset] = value & 255; while (++i2 < byteLength2 && (mul *= 256)) { if (value < 0 && sub === 0 && this[offset + i2 - 1] !== 0) { sub = 1; } this[offset + i2] = (value / mul >> 0) - sub & 255; } return offset + byteLength2; }; Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { const limit = Math.pow(2, 8 * byteLength2 - 1); checkInt(this, value, offset, byteLength2, limit - 1, -limit); } let i2 = byteLength2 - 1; let mul = 1; let sub = 0; this[offset + i2] = value & 255; while (--i2 >= 0 && (mul *= 256)) { if (value < 0 && sub === 0 && this[offset + i2 + 1] !== 0) { sub = 1; } this[offset + i2] = (value / mul >> 0) - sub & 255; } return offset + byteLength2; }; Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 1, 127, -128); if (value < 0) value = 255 + value + 1; this[offset] = value & 255; return offset + 1; }; Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); this[offset] = value & 255; this[offset + 1] = value >>> 8; return offset + 2; }; Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); this[offset] = value >>> 8; this[offset + 1] = value & 255; return offset + 2; }; Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); this[offset] = value & 255; this[offset + 1] = value >>> 8; this[offset + 2] = value >>> 16; this[offset + 3] = value >>> 24; return offset + 4; }; Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); if (value < 0) value = 4294967295 + value + 1; this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; this[offset + 3] = value & 255; return offset + 4; }; Buffer2.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); }); Buffer2.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); }); function checkIEEE754(buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError("Index out of range"); if (offset < 0) throw new RangeError("Index out of range"); } function writeFloat(buf, value, offset, littleEndian, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22); } ieee754.write(buf, value, offset, littleEndian, 23, 4); return offset + 4; } Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert); }; Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert); }; function writeDouble(buf, value, offset, littleEndian, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292); } ieee754.write(buf, value, offset, littleEndian, 52, 8); return offset + 8; } Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert); }; Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert); }; Buffer2.prototype.copy = function copy(target, targetStart, start, end) { if (!Buffer2.isBuffer(target)) throw new TypeError("argument should be a Buffer"); if (!start) start = 0; if (!end && end !== 0) end = this.length; if (targetStart >= target.length) targetStart = target.length; if (!targetStart) targetStart = 0; if (end > 0 && end < start) end = start; if (end === start) return 0; if (target.length === 0 || this.length === 0) return 0; if (targetStart < 0) { throw new RangeError("targetStart out of bounds"); } if (start < 0 || start >= this.length) throw new RangeError("Index out of range"); if (end < 0) throw new RangeError("sourceEnd out of bounds"); if (end > this.length) end = this.length; if (target.length - targetStart < end - start) { end = target.length - targetStart + start; } const len = end - start; if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { this.copyWithin(targetStart, start, end); } else { Uint8Array.prototype.set.call( target, this.subarray(start, end), targetStart ); } return len; }; Buffer2.prototype.fill = function fill(val, start, end, encoding) { if (typeof val === "string") { if (typeof start === "string") { encoding = start; start = 0; end = this.length; } else if (typeof end === "string") { encoding = end; end = this.length; } if (encoding !== void 0 && typeof encoding !== "string") { throw new TypeError("encoding must be a string"); } if (typeof encoding === "string" && !Buffer2.isEncoding(encoding)) { throw new TypeError("Unknown encoding: " + encoding); } if (val.length === 1) { const code = val.charCodeAt(0); if (encoding === "utf8" && code < 128 || encoding === "latin1") { val = code; } } } else if (typeof val === "number") { val = val & 255; } else if (typeof val === "boolean") { val = Number(val); } if (start < 0 || this.length < start || this.length < end) { throw new RangeError("Out of range index"); } if (end <= start) { return this; } start = start >>> 0; end = end === void 0 ? this.length : end >>> 0; if (!val) val = 0; let i2; if (typeof val === "number") { for (i2 = start; i2 < end; ++i2) { this[i2] = val; } } else { const bytes = Buffer2.isBuffer(val) ? val : Buffer2.from(val, encoding); const len = bytes.length; if (len === 0) { throw new TypeError('The value "' + val + '" is invalid for argument "value"'); } for (i2 = 0; i2 < end - start; ++i2) { this[i2 + start] = bytes[i2 % len]; } } return this; }; var errors = {}; function E(sym, getMessage, Base) { errors[sym] = class NodeError extends Base { constructor() { super(); Object.defineProperty(this, "message", { value: getMessage.apply(this, arguments), writable: true, configurable: true }); this.name = `${this.name} [${sym}]`; this.stack; delete this.name; } get code() { return sym; } set code(value) { Object.defineProperty(this, "code", { configurable: true, enumerable: true, value, writable: true }); } toString() { return `${this.name} [${sym}]: ${this.message}`; } }; } E( "ERR_BUFFER_OUT_OF_BOUNDS", function(name) { if (name) { return `${name} is outside of buffer bounds`; } return "Attempt to access memory outside buffer bounds"; }, RangeError ); E( "ERR_INVALID_ARG_TYPE", function(name, actual) { return `The "${name}" argument must be of type number. Received type ${typeof actual}`; }, TypeError ); E( "ERR_OUT_OF_RANGE", function(str, range, input) { let msg = `The value of "${str}" is out of range.`; let received = input; if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { received = addNumericalSeparator(String(input)); } else if (typeof input === "bigint") { received = String(input); if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { received = addNumericalSeparator(received); } received += "n"; } msg += ` It must be ${range}. Received ${received}`; return msg; }, RangeError ); function addNumericalSeparator(val) { let res = ""; let i2 = val.length; const start = val[0] === "-" ? 1 : 0; for (; i2 >= start + 4; i2 -= 3) { res = `_${val.slice(i2 - 3, i2)}${res}`; } return `${val.slice(0, i2)}${res}`; } function checkBounds(buf, offset, byteLength2) { validateNumber(offset, "offset"); if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { boundsError(offset, buf.length - (byteLength2 + 1)); } } function checkIntBI(value, min, max, buf, offset, byteLength2) { if (value > max || value < min) { const n = typeof min === "bigint" ? "n" : ""; let range; if (byteLength2 > 3) { if (min === 0 || min === BigInt(0)) { range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; } else { range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; } } else { range = `>= ${min}${n} and <= ${max}${n}`; } throw new errors.ERR_OUT_OF_RANGE("value", range, value); } checkBounds(buf, offset, byteLength2); } function validateNumber(value, name) { if (typeof value !== "number") { throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); } } function boundsError(value, length, type) { if (Math.floor(value) !== value) { validateNumber(value, type); throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); } if (length < 0) { throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); } throw new errors.ERR_OUT_OF_RANGE( type || "offset", `>= ${type ? 1 : 0} and <= ${length}`, value ); } var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; function base64clean(str) { str = str.split("=")[0]; str = str.trim().replace(INVALID_BASE64_RE, ""); if (str.length < 2) return ""; while (str.length % 4 !== 0) { str = str + "="; } return str; } function utf8ToBytes(string, units) { units = units || Infinity; let codePoint; const length = string.length; let leadSurrogate = null; const bytes = []; for (let i2 = 0; i2 < length; ++i2) { codePoint = string.charCodeAt(i2); if (codePoint > 55295 && codePoint < 57344) { if (!leadSurrogate) { if (codePoint > 56319) { if ((units -= 3) > -1) bytes.push(239, 191, 189); continue; } else if (i2 + 1 === length) { if ((units -= 3) > -1) bytes.push(239, 191, 189); continue; } leadSurrogate = codePoint; continue; } if (codePoint < 56320) { if ((units -= 3) > -1) bytes.push(239, 191, 189); leadSurrogate = codePoint; continue; } codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; } else if (leadSurrogate) { if ((units -= 3) > -1) bytes.push(239, 191, 189); } leadSurrogate = null; if (codePoint < 128) { if ((units -= 1) < 0) break; bytes.push(codePoint); } else if (codePoint < 2048) { if ((units -= 2) < 0) break; bytes.push( codePoint >> 6 | 192, codePoint & 63 | 128 ); } else if (codePoint < 65536) { if ((units -= 3) < 0) break; bytes.push( codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128 ); } else if (codePoint < 1114112) { if ((units -= 4) < 0) break; bytes.push( codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128 ); } else { throw new Error("Invalid code point"); } } return bytes; } function asciiToBytes(str) { const byteArray = []; for (let i2 = 0; i2 < str.length; ++i2) { byteArray.push(str.charCodeAt(i2) & 255); } return byteArray; } function utf16leToBytes(str, units) { let c, hi, lo; const byteArray = []; for (let i2 = 0; i2 < str.length; ++i2) { if ((units -= 2) < 0) break; c = str.charCodeAt(i2); hi = c >> 8; lo = c % 256; byteArray.push(lo); byteArray.push(hi); } return byteArray; } function base64ToBytes(str) { return base64.toByteArray(base64clean(str)); } function blitBuffer(src, dst, offset, length) { let i2; for (i2 = 0; i2 < length; ++i2) { if (i2 + offset >= dst.length || i2 >= src.length) break; dst[i2 + offset] = src[i2]; } return i2; } function isInstance(obj, type) { return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; } function numberIsNaN(obj) { return obj !== obj; } var hexSliceLookupTable = (function() { const alphabet = "0123456789abcdef"; const table = new Array(256); for (let i2 = 0; i2 < 16; ++i2) { const i16 = i2 * 16; for (let j = 0; j < 16; ++j) { table[i16 + j] = alphabet[i2] + alphabet[j]; } } return table; })(); function defineBigIntMethod(fn) { return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; } function BufferBigIntNotDefined() { throw new Error("BigInt not supported"); } } }); // _inject-buffer.js var import_buffer; var init_inject_buffer = __esm({ "_inject-buffer.js"() { import_buffer = __toESM(require_buffer(), 1); globalThis.Buffer = import_buffer.Buffer; } }); // node_modules/@privacyresearch/curve25519-typescript/lib/built/curveasm.js var require_curveasm = __commonJS({ "node_modules/@privacyresearch/curve25519-typescript/lib/built/curveasm.js"(exports, module) { "use strict"; init_inject_buffer(); var document2 = document2 || {}; var Module = (function() { var _scriptDir = typeof document2 !== "undefined" && document2.currentScript ? document2.currentScript.src : void 0; if (true) _scriptDir = _scriptDir || "/index.js"; return function(Module2) { Module2 = Module2 || {}; var Module2 = typeof Module2 !== "undefined" ? Module2 : {}; var readyPromiseResolve, readyPromiseReject; Module2["ready"] = new Promise(function(resolve, reject) { readyPromiseResolve = resolve; readyPromiseReject = reject; }); var moduleOverrides = {}; var key; for (key in Module2) { if (Module2.hasOwnProperty(key)) { moduleOverrides[key] = Module2[key]; } } var arguments_ = []; var thisProgram = "./this.program"; var quit_ = function(status, toThrow) { throw toThrow; }; var ENVIRONMENT_IS_WEB = false; var ENVIRONMENT_IS_WORKER = false; var ENVIRONMENT_IS_NODE = false; var ENVIRONMENT_IS_SHELL = false; ENVIRONMENT_IS_WEB = typeof window === "object"; ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; var scriptDirectory = ""; function locateFile(path) { if (Module2["locateFile"]) { return Module2["locateFile"](path, scriptDirectory); } return scriptDirectory + path; } var read_, readAsync, readBinary, setWindowTitle; var nodeFS; var nodePath; if (ENVIRONMENT_IS_NODE) { if (ENVIRONMENT_IS_WORKER) { try { scriptDirectory = __require("path").dirname(scriptDirectory) + "/"; } catch (e) { console.log(`'path' module not found`); } } else { scriptDirectory = "//"; } read_ = function shell_read(filename, binary) { var ret = tryParseAsDataURI(filename); if (ret) { return binary ? ret : ret.toString(); } if (!nodeFS) { try { nodeFS = __require("fs"); } catch (e) { console.log(`'fs' module not found`); } } if (!nodePath) { try { nodePath = __require("path"); } catch (e) { console.log(`'path' module not found`); } } filename = nodePath["normalize"](filename); return nodeFS["readFileSync"](filename, binary ? null : "utf8"); }; readBinary = function readBinary2(filename) { var ret = read_(filename, true); if (!ret.buffer) { ret = new Uint8Array(ret); } assert(ret.buffer); return ret; }; if (process["argv"].length > 1) { thisProgram = process["argv"][1].replace(/\\/g, "/"); } arguments_ = process["argv"].slice(2); process["on"]("uncaughtException", function(ex) { if (!(ex instanceof ExitStatus)) { throw ex; } }); process["on"]("unhandledRejection", abort); quit_ = function(status) { process["exit"](status); }; Module2["inspect"] = function() { return "[Emscripten Module object]"; }; } else if (ENVIRONMENT_IS_SHELL) { if (typeof read != "undefined") { read_ = function shell_read(f) { var data = tryParseAsDataURI(f); if (data) { return intArrayToString(data); } return read(f); }; } readBinary = function readBinary2(f) { var data; data = tryParseAsDataURI(f); if (data) { return data; } if (typeof readbuffer === "function") { return new Uint8Array(readbuffer(f)); } data = read(f, "binary"); assert(typeof data === "object"); return data; }; if (typeof scriptArgs != "undefined") { arguments_ = scriptArgs; } else if (typeof arguments != "undefined") { arguments_ = arguments; } if (typeof quit === "function") { quit_ = function(status) { quit(status); }; } if (typeof print !== "undefined") { if (typeof console === "undefined") console = /** @type{!Console} */ {}; console.log = /** @type{!function(this:Console, ...*): undefined} */ print; console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ typeof printErr !== "undefined" ? printErr : print; } } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { if (ENVIRONMENT_IS_WORKER) { scriptDirectory = self.location.href; } else if (document2.currentScript) { scriptDirectory = document2.currentScript.src; } if (_scriptDir) { scriptDirectory = _scriptDir; } if (scriptDirectory.indexOf("blob:") !== 0) { scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); } else { scriptDirectory = ""; } { read_ = function shell_read(url) { try { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.send(null); return xhr.responseText; } catch (err2) { var data = tryParseAsDataURI(url); if (data) { return intArrayToString(data); } throw err2; } }; if (ENVIRONMENT_IS_WORKER) { readBinary = function readBinary2(url) { try { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.responseType = "arraybuffer"; xhr.send(null); return new Uint8Array( /** @type{!ArrayBuffer} */ xhr.response ); } catch (err2) { var data = tryParseAsDataURI(url); if (data) { return data; } throw err2; } }; } readAsync = function readAsync2(url, onload, onerror) { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.onload = function xhr_onload() { if (xhr.status == 200 || xhr.status == 0 && xhr.response) { onload(xhr.response); return; } var data = tryParseAsDataURI(url); if (data) { onload(data.buffer); return; } onerror(); }; xhr.onerror = onerror; xhr.send(null); }; } setWindowTitle = function(title) { document2.title = title; }; } else { } var out = Module2["print"] || console.log.bind(console); var err = Module2["printErr"] || console.warn.bind(console); for (key in moduleOverrides) { if (moduleOverrides.hasOwnProperty(key)) { Module2[key] = moduleOverrides[key]; } } moduleOverrides = null; if (Module2["arguments"]) arguments_ = Module2["arguments"]; if (Module2["thisProgram"]) thisProgram = Module2["thisProgram"]; if (Module2["quit"]) quit_ = Module2["quit"]; var STACK_ALIGN = 16; function dynamicAlloc(size) { var ret = HEAP32[DYNAMICTOP_PTR >> 2]; var end = ret + size + 15 & -16; HEAP32[DYNAMICTOP_PTR >> 2] = end; return ret; } function alignMemory(size, factor) { if (!factor) factor = STACK_ALIGN; return Math.ceil(size / factor) * factor; } function getNativeTypeSize(type) { switch (type) { case "i1": case "i8": return 1; case "i16": return 2; case "i32": return 4; case "i64": return 8; case "float": return 4; case "double": return 8; default: { if (type[type.length - 1] === "*") { return 4; } else if (type[0] === "i") { var bits = Number(type.substr(1)); assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type); return bits / 8; } else { return 0; } } } } function warnOnce(text) { if (!warnOnce.shown) warnOnce.shown = {}; if (!warnOnce.shown[text]) { warnOnce.shown[text] = 1; err(text); } } function convertJsFunctionToWasm(func, sig) { return func; } var freeTableIndexes = []; var functionsInTableMap; function addFunctionWasm(func, sig) { var table = wasmTable; if (!functionsInTableMap) { functionsInTableMap = /* @__PURE__ */ new WeakMap(); for (var i2 = 0; i2 < table.length; i2++) { var item = table.get(i2); if (item) { functionsInTableMap.set(item, i2); } } } if (functionsInTableMap.has(func)) { return functionsInTableMap.get(func); } var ret; if (freeTableIndexes.length) { ret = freeTableIndexes.pop(); } else { ret = table.length; try { table.grow(1); } catch (err2) { if (!(err2 instanceof RangeError)) { throw err2; } throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."; } } try { table.set(ret, func); } catch (err2) { if (!(err2 instanceof TypeError)) { throw err2; } var wrapped = convertJsFunctionToWasm(func, sig); table.set(ret, wrapped); } functionsInTableMap.set(func, ret); return ret; } function removeFunctionWasm(index) { functionsInTableMap.delete(wasmTable.get(index)); freeTableIndexes.push(index); } function addFunction(func, sig) { return addFunctionWasm(func, sig); } function removeFunction(index) { removeFunctionWasm(index); } var funcWrappers = {}; function getFuncWrapper(func, sig) { if (!func) return; assert(sig); if (!funcWrappers[sig]) { funcWrappers[sig] = {}; } var sigCache = funcWrappers[sig]; if (!sigCache[func]) { if (sig.length === 1) { sigCache[func] = function dynCall_wrapper() { return dynCall(sig, func); }; } else if (sig.length === 2) { sigCache[func] = function dynCall_wrapper(arg) { return dynCall(sig, func, [arg]); }; } else { sigCache[func] = function dynCall_wrapper() { return dynCall(sig, func, Array.prototype.slice.call(arguments)); }; } } return sigCache[func]; } function makeBigInt(low, high, unsigned) { return unsigned ? +(low >>> 0) + +(high >>> 0) * 4294967296 : +(low >>> 0) + +(high | 0) * 4294967296; } function dynCall(sig, ptr, args) { if (args && args.length) { return Module2["dynCall_" + sig].apply(null, [ptr].concat(args)); } else { return Module2["dynCall_" + sig].call(null, ptr); } } var tempRet0 = 0; var setTempRet0 = function(value) { tempRet0 = value; }; var getTempRet0 = function() { return tempRet0; }; var GLOBAL_BASE = 1024; var wasmBinary; if (Module2["wasmBinary"]) wasmBinary = Module2["wasmBinary"]; var noExitRuntime; if (Module2["noExitRuntime"]) noExitRuntime = Module2["noExitRuntime"]; var WebAssembly2 = { Memory: ( /** @constructor */ function(opts) { return { buffer: new ArrayBuffer(opts["initial"] * 65536), grow: function(amount) { var ret = __growWasmMemory(amount); return ret; } }; } ), Table: function(opts) { var ret = new Array(opts["initial"]); ret.grow = function(by) { if (ret.length >= 1 + 0) { abort("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."); } ret.push(null); }; ret.set = function(i2, func) { ret[i2] = func; }; ret.get = function(i2) { return ret[i2]; }; return ret; }, Module: function(binary) { return {}; }, Instance: function(module2, info) { var exports2 = (function instantiate(asmLibraryArg2, wasmMemory2, wasmTable2) { function asmFunc(global2, env, buffer2) { var memory = env.memory; var HEAP82 = new global2.Int8Array(buffer2); var HEAP162 = new global2.Int16Array(buffer2); var HEAP322 = new global2.Int32Array(buffer2); var HEAPU82 = new global2.Uint8Array(buffer2); var HEAPU162 = new global2.Uint16Array(buffer2); var HEAPU322 = new global2.Uint32Array(buffer2); var HEAPF322 = new global2.Float32Array(buffer2); var HEAPF642 = new global2.Float64Array(buffer2); var Math_imul2 = global2.Math.imul; var Math_fround2 = global2.Math.fround; var Math_abs2 = global2.Math.abs; var Math_clz322 = global2.Math.clz32; var Math_min2 = global2.Math.min; var Math_max2 = global2.Math.max; var Math_floor2 = global2.Math.floor; var Math_ceil2 = global2.Math.ceil; var Math_sqrt2 = global2.Math.sqrt; var abort2 = env.abort; var nan = global2.NaN; var infinity = global2.Infinity; var fimport$0 = env.emscripten_memcpy_big; var fimport$1 = env.emscripten_resize_heap; var global$0 = 5277136; var global$1 = 34084; var i64toi32_i32$HIGH_BITS = 0; function $1() { } function $2($0, $1_1) { return ((HEAPU82[$1_1 + 1 | 0] ^ HEAPU82[$0 + 1 | 0] | HEAPU82[$1_1 | 0] ^ HEAPU82[$0 | 0] | HEAPU82[$1_1 + 2 | 0] ^ HEAPU82[$0 + 2 | 0] | HEAPU82[$1_1 + 3 | 0] ^ HEAPU82[$0 + 3 | 0] | HEAPU82[$1_1 + 4 | 0] ^ HEAPU82[$0 + 4 | 0] | HEAPU82[$1_1 + 5 | 0] ^ HEAPU82[$0 + 5 | 0] | HEAPU82[$1_1 + 6 | 0] ^ HEAPU82[$0 + 6 | 0] | HEAPU82[$1_1 + 7 | 0] ^ HEAPU82[$0 + 7 | 0] | HEAPU82[$1_1 + 8 | 0] ^ HEAPU82[$0 + 8 | 0] | HEAPU82[$1_1 + 9 | 0] ^ HEAPU82[$0 + 9 | 0] | HEAPU82[$1_1 + 10 | 0] ^ HEAPU82[$0 + 10 | 0] | HEAPU82[$1_1 + 11 | 0] ^ HEAPU82[$0 + 11 | 0] | HEAPU82[$1_1 + 12 | 0] ^ HEAPU82[$0 + 12 | 0] | HEAPU82[$1_1 + 13 | 0] ^ HEAPU82[$0 + 13 | 0] | HEAPU82[$1_1 + 14 | 0] ^ HEAPU82[$0 + 14 | 0] | HEAPU82[$1_1 + 15 | 0] ^ HEAPU82[$0 + 15 | 0] | HEAPU82[$1_1 + 16 | 0] ^ HEAPU82[$0 + 16 | 0] | HEAPU82[$1_1 + 17 | 0] ^ HEAPU82[$0 + 17 | 0] | HEAPU82[$1_1 + 18 | 0] ^ HEAPU82[$0 + 18 | 0] | HEAPU82[$1_1 + 19 | 0] ^ HEAPU82[$0 + 19 | 0] | HEAPU82[$1_1 + 20 | 0] ^ HEAPU82[$0 + 20 | 0] | HEAPU82[$1_1 + 21 | 0] ^ HEAPU82[$0 + 21 | 0] | HEAPU82[$1_1 + 22 | 0] ^ HEAPU82[$0 + 22 | 0] | HEAPU82[$1_1 + 23 | 0] ^ HEAPU82[$0 + 23 | 0] | HEAPU82[$1_1 + 24 | 0] ^ HEAPU82[$0 + 24 | 0] | HEAPU82[$1_1 + 25 | 0] ^ HEAPU82[$0 + 25 | 0] | HEAPU82[$1_1 + 26 | 0] ^ HEAPU82[$0 + 26 | 0] | HEAPU82[$1_1 + 27 | 0] ^ HEAPU82[$0 + 27 | 0] | HEAPU82[$1_1 + 28 | 0] ^ HEAPU82[$0 + 28 | 0] | HEAPU82[$1_1 + 29 | 0] ^ HEAPU82[$0 + 29 | 0] | HEAPU82[$1_1 + 30 | 0] ^ HEAPU82[$0 + 30 | 0] | HEAPU82[$1_1 + 31 | 0] ^ HEAPU82[$0 + 31 | 0]) + -1 >>> 8 & 1) + -1 | 0; } function $3($0, $1_1, $2_1, $3_1) { $0 = $0 | 0; $1_1 = $1_1 | 0; $2_1 = $2_1 | 0; $3_1 = $3_1 | 0; var $4_1 = 0, $5_1 = 0, $6_1 = 0; $5_1 = global$0 - 240 | 0; global$0 = $5_1; $4_1 = $5_1 - ($3_1 + 79 & -16) | 0; global$0 = $4_1; HEAP322[$5_1 + 8 >> 2] = 0; HEAP322[$5_1 + 12 >> 2] = 0; $6_1 = HEAPU82[$1_1 + 20 | 0] | HEAPU82[$1_1 + 21 | 0] << 8 | (HEAPU82[$1_1 + 22 | 0] << 16 | HEAPU82[$1_1 + 23 | 0] << 24); HEAP322[$5_1 + 32 >> 2] = HEAPU82[$1_1 + 16 | 0] | HEAPU82[$1_1 + 17 | 0] << 8 | (HEAPU82[$1_1 + 18 | 0] << 16 | HEAPU82[$1_1 + 19 | 0] << 24); HEAP322[$5_1 + 36 >> 2] = $6_1; $6_1 = HEAPU82[$1_1 + 28 | 0] | HEAPU82[$1_1 + 29 | 0] << 8 | (HEAPU82[$1_1 + 30 | 0] << 16 | HEAPU82[$1_1 + 31 | 0] << 24); HEAP322[$5_1 + 40 >> 2] = HEAPU82[$1_1 + 24 | 0] | HEAPU82[$1_1 + 25 | 0] << 8 | (HEAPU82[$1_1 + 26 | 0] << 16 | HEAPU82[$1_1 + 27 | 0] << 24); HEAP322[$5_1 + 44 >> 2] = $6_1; $6_1 = HEAPU82[$1_1 + 4 | 0] | HEAPU82[$1_1 + 5 | 0] << 8 | (HEAPU82[$1_1 + 6 | 0] << 16 | HEAPU82[$1_1 + 7 | 0] << 24); HEAP322[$5_1 + 16 >> 2] = HEAPU82[$1_1 | 0] | HEAPU82[$1_1 + 1 | 0] << 8 | (HEAPU82[$1_1 + 2 | 0] << 16 | HEAPU82[$1_1 + 3 | 0] << 24); HEAP322[$5_1 + 20 >> 2] = $6_1; $6_1 = HEAPU82[$1_1 + 12 | 0] | HEAPU82[$1_1 + 13 | 0] << 8 | (HEAPU82[$1_1 + 14 | 0] << 16 | HEAPU82[$1_1 + 15 | 0] << 24); HEAP322[$5_1 + 24 >> 2] = HEAPU82[$1_1 + 8 | 0] | HEAPU82[$1_1 + 9 | 0] << 8 | (HEAPU82[$1_1 + 10 | 0] << 16 | HEAPU82[$1_1 + 11 | 0] << 24); HEAP322[$5_1 + 28 >> 2] = $6_1; $61($5_1 + 80 | 0, $1_1); $57($5_1 + 48 | 0, $5_1 + 80 | 0); $1_1 = HEAPU82[$5_1 + 79 | 0]; $6($4_1, $5_1 + 8 | 0, $2_1, $3_1, $5_1 + 16 | 0); $3_1 = HEAPU82[$4_1 + 60 | 0] | HEAPU82[$4_1 + 61 | 0] << 8 | (HEAPU82[$4_1 + 62 | 0] << 16 | HEAPU82[$4_1 + 63 | 0] << 24); $2_1 = HEAPU82[$4_1 + 56 | 0] | HEAPU82[$4_1 + 57 | 0] << 8 | (HEAPU82[$4_1 + 58 | 0] << 16 | HEAPU82[$4_1 + 59 | 0] << 24); HEAP82[$0 + 56 | 0] = $2_1; HEAP82[$0 + 57 | 0] = $2_1 >>> 8; HEAP82[$0 + 58 | 0] = $2_1 >>> 16; HEAP82[$0 + 59 | 0] = $2_1 >>> 24; HEAP82[$0 + 60 | 0] = $3_1; HEAP82[$0 + 61 | 0] = $3_1 >>> 8; HEAP82[$0 + 62 | 0] = $3_1 >>> 16; HEAP82[$0 + 63 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 52 | 0] | HEAPU82[$4_1 + 53 | 0] << 8 | (HEAPU82[$4_1 + 54 | 0] << 16 | HEAPU82[$4_1 + 55 | 0] << 24); $2_1 = HEAPU82[$4_1 + 48 | 0] | HEAPU82[$4_1 + 49 | 0] << 8 | (HEAPU82[$4_1 + 50 | 0] << 16 | HEAPU82[$4_1 + 51 | 0] << 24); HEAP82[$0 + 48 | 0] = $2_1; HEAP82[$0 + 49 | 0] = $2_1 >>> 8; HEAP82[$0 + 50 | 0] = $2_1 >>> 16; HEAP82[$0 + 51 | 0] = $2_1 >>> 24; HEAP82[$0 + 52 | 0] = $3_1; HEAP82[$0 + 53 | 0] = $3_1 >>> 8; HEAP82[$0 + 54 | 0] = $3_1 >>> 16; HEAP82[$0 + 55 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 44 | 0] | HEAPU82[$4_1 + 45 | 0] << 8 | (HEAPU82[$4_1 + 46 | 0] << 16 | HEAPU82[$4_1 + 47 | 0] << 24); $2_1 = HEAPU82[$4_1 + 40 | 0] | HEAPU82[$4_1 + 41 | 0] << 8 | (HEAPU82[$4_1 + 42 | 0] << 16 | HEAPU82[$4_1 + 43 | 0] << 24); HEAP82[$0 + 40 | 0] = $2_1; HEAP82[$0 + 41 | 0] = $2_1 >>> 8; HEAP82[$0 + 42 | 0] = $2_1 >>> 16; HEAP82[$0 + 43 | 0] = $2_1 >>> 24; HEAP82[$0 + 44 | 0] = $3_1; HEAP82[$0 + 45 | 0] = $3_1 >>> 8; HEAP82[$0 + 46 | 0] = $3_1 >>> 16; HEAP82[$0 + 47 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 36 | 0] | HEAPU82[$4_1 + 37 | 0] << 8 | (HEAPU82[$4_1 + 38 | 0] << 16 | HEAPU82[$4_1 + 39 | 0] << 24); $2_1 = HEAPU82[$4_1 + 32 | 0] | HEAPU82[$4_1 + 33 | 0] << 8 | (HEAPU82[$4_1 + 34 | 0] << 16 | HEAPU82[$4_1 + 35 | 0] << 24); HEAP82[$0 + 32 | 0] = $2_1; HEAP82[$0 + 33 | 0] = $2_1 >>> 8; HEAP82[$0 + 34 | 0] = $2_1 >>> 16; HEAP82[$0 + 35 | 0] = $2_1 >>> 24; HEAP82[$0 + 36 | 0] = $3_1; HEAP82[$0 + 37 | 0] = $3_1 >>> 8; HEAP82[$0 + 38 | 0] = $3_1 >>> 16; HEAP82[$0 + 39 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 28 | 0] | HEAPU82[$4_1 + 29 | 0] << 8 | (HEAPU82[$4_1 + 30 | 0] << 16 | HEAPU82[$4_1 + 31 | 0] << 24); $2_1 = HEAPU82[$4_1 + 24 | 0] | HEAPU82[$4_1 + 25 | 0] << 8 | (HEAPU82[$4_1 + 26 | 0] << 16 | HEAPU82[$4_1 + 27 | 0] << 24); HEAP82[$0 + 24 | 0] = $2_1; HEAP82[$0 + 25 | 0] = $2_1 >>> 8; HEAP82[$0 + 26 | 0] = $2_1 >>> 16; HEAP82[$0 + 27 | 0] = $2_1 >>> 24; HEAP82[$0 + 28 | 0] = $3_1; HEAP82[$0 + 29 | 0] = $3_1 >>> 8; HEAP82[$0 + 30 | 0] = $3_1 >>> 16; HEAP82[$0 + 31 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 20 | 0] | HEAPU82[$4_1 + 21 | 0] << 8 | (HEAPU82[$4_1 + 22 | 0] << 16 | HEAPU82[$4_1 + 23 | 0] << 24); $2_1 = HEAPU82[$4_1 + 16 | 0] | HEAPU82[$4_1 + 17 | 0] << 8 | (HEAPU82[$4_1 + 18 | 0] << 16 | HEAPU82[$4_1 + 19 | 0] << 24); HEAP82[$0 + 16 | 0] = $2_1; HEAP82[$0 + 17 | 0] = $2_1 >>> 8; HEAP82[$0 + 18 | 0] = $2_1 >>> 16; HEAP82[$0 + 19 | 0] = $2_1 >>> 24; HEAP82[$0 + 20 | 0] = $3_1; HEAP82[$0 + 21 | 0] = $3_1 >>> 8; HEAP82[$0 + 22 | 0] = $3_1 >>> 16; HEAP82[$0 + 23 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 12 | 0] | HEAPU82[$4_1 + 13 | 0] << 8 | (HEAPU82[$4_1 + 14 | 0] << 16 | HEAPU82[$4_1 + 15 | 0] << 24); $2_1 = HEAPU82[$4_1 + 8 | 0] | HEAPU82[$4_1 + 9 | 0] << 8 | (HEAPU82[$4_1 + 10 | 0] << 16 | HEAPU82[$4_1 + 11 | 0] << 24); HEAP82[$0 + 8 | 0] = $2_1; HEAP82[$0 + 9 | 0] = $2_1 >>> 8; HEAP82[$0 + 10 | 0] = $2_1 >>> 16; HEAP82[$0 + 11 | 0] = $2_1 >>> 24; HEAP82[$0 + 12 | 0] = $3_1; HEAP82[$0 + 13 | 0] = $3_1 >>> 8; HEAP82[$0 + 14 | 0] = $3_1 >>> 16; HEAP82[$0 + 15 | 0] = $3_1 >>> 24; $3_1 = HEAPU82[$4_1 + 4 | 0] | HEAPU82[$4_1 + 5 | 0] << 8 | (HEAPU82[$4_1 + 6 | 0] << 16 | HEAPU82[$4_1 + 7 | 0] << 24); $2_1 = HEAPU82[$4_1 | 0] | HEAPU82[$4_1 + 1 | 0] << 8 | (HEAPU82[$4_1 + 2 | 0] << 16 | HEAPU82[$4_1 + 3 | 0] << 24); HEAP82[$0 | 0] = $2_1; HEAP82[$0 + 1 | 0] = $2_1 >>> 8; HEAP82[$0 + 2 | 0] = $2_1 >>> 16; HEAP82[$0 + 3 | 0] = $2_1 >>> 24; HEAP82[$0 + 4 | 0] = $3_1; HEAP82[$0 + 5 | 0] = $3_1 >>> 8; HEAP82[$0 + 6 | 0] = $3_1 >>> 16; HEAP82[$0 + 7 | 0] = $3_1 >>> 24; HEAP82[$0 + 63 | 0] = HEAPU82[$0 + 63 | 0] | $1_1 & 128; global$0 = $5_1 + 240 | 0; } function $4($0, $1_1, $2_1, $3_1) { $0 = $0 | 0; $1_1 = $1_1 | 0; $2_1 = $2_1 | 0; $3_1 = $3_1 | 0; var $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0; $6_1 = global$0 - 336 | 0; global$0 = $6_1; $5_1 = $3_1 + 79 & -16; $4_1 = $6_1 - $5_1 | 0; global$0 = $4_1; $7_1 = $4_1 - $5_1 | 0; global$0 = $7_1; $32($6_1 + 288 | 0, $1_1); $28($6_1 + 96 | 0); $43($6_1 + 240 | 0, $6_1 + 288 | 0, $6_1 + 96 | 0); $29($6_1 + 192 | 0, $6_1 + 288 | 0, $6_1 + 96 | 0); $35($6_1 + 144 | 0, $6_1 + 192 | 0); $38($6_1 + 48 | 0, $6_1 + 240 | 0, $6_1 + 144 | 0); $44($6_1 + 16 | 0, $6_1 + 48 | 0); $1_1 = HEAPU82[$0 + 63 | 0]; HEAP82[$6_1 + 47 | 0] = HEAPU82[$6_1 + 47 | 0] | $1_1 & 128; HEAP82[$0 + 63 | 0] = $1_1 & 127; $1_1 = HEAPU82[$0 + 52 | 0] | HEAPU82[$0 + 53 | 0] << 8 | (HEAPU82[$0 + 54 | 0] << 16 | HEAPU82[$0 + 55 | 0] << 24); $5_1 = HEAPU82[$0 + 48 | 0] | HEAPU82[$0 + 49 | 0] << 8 | (HEAPU82[$0 + 50 | 0] << 16 | HEAPU82[$0 + 51 | 0] << 24); HEAP82[$4_1 + 48 | 0] = $5_1; HEAP82[$4_1 + 49 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 50 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 51 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 52 | 0] = $1_1; HEAP82[$4_1 + 53 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 54 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 55 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 44 | 0] | HEAPU82[$0 + 45 | 0] << 8 | (HEAPU82[$0 + 46 | 0] << 16 | HEAPU82[$0 + 47 | 0] << 24); $5_1 = HEAPU82[$0 + 40 | 0] | HEAPU82[$0 + 41 | 0] << 8 | (HEAPU82[$0 + 42 | 0] << 16 | HEAPU82[$0 + 43 | 0] << 24); HEAP82[$4_1 + 40 | 0] = $5_1; HEAP82[$4_1 + 41 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 42 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 43 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 44 | 0] = $1_1; HEAP82[$4_1 + 45 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 46 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 47 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 36 | 0] | HEAPU82[$0 + 37 | 0] << 8 | (HEAPU82[$0 + 38 | 0] << 16 | HEAPU82[$0 + 39 | 0] << 24); $5_1 = HEAPU82[$0 + 32 | 0] | HEAPU82[$0 + 33 | 0] << 8 | (HEAPU82[$0 + 34 | 0] << 16 | HEAPU82[$0 + 35 | 0] << 24); HEAP82[$4_1 + 32 | 0] = $5_1; HEAP82[$4_1 + 33 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 34 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 35 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 36 | 0] = $1_1; HEAP82[$4_1 + 37 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 38 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 39 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 28 | 0] | HEAPU82[$0 + 29 | 0] << 8 | (HEAPU82[$0 + 30 | 0] << 16 | HEAPU82[$0 + 31 | 0] << 24); $5_1 = HEAPU82[$0 + 24 | 0] | HEAPU82[$0 + 25 | 0] << 8 | (HEAPU82[$0 + 26 | 0] << 16 | HEAPU82[$0 + 27 | 0] << 24); HEAP82[$4_1 + 24 | 0] = $5_1; HEAP82[$4_1 + 25 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 26 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 27 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 28 | 0] = $1_1; HEAP82[$4_1 + 29 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 30 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 31 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 20 | 0] | HEAPU82[$0 + 21 | 0] << 8 | (HEAPU82[$0 + 22 | 0] << 16 | HEAPU82[$0 + 23 | 0] << 24); $5_1 = HEAPU82[$0 + 16 | 0] | HEAPU82[$0 + 17 | 0] << 8 | (HEAPU82[$0 + 18 | 0] << 16 | HEAPU82[$0 + 19 | 0] << 24); HEAP82[$4_1 + 16 | 0] = $5_1; HEAP82[$4_1 + 17 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 18 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 19 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 20 | 0] = $1_1; HEAP82[$4_1 + 21 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 22 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 23 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 12 | 0] | HEAPU82[$0 + 13 | 0] << 8 | (HEAPU82[$0 + 14 | 0] << 16 | HEAPU82[$0 + 15 | 0] << 24); $5_1 = HEAPU82[$0 + 8 | 0] | HEAPU82[$0 + 9 | 0] << 8 | (HEAPU82[$0 + 10 | 0] << 16 | HEAPU82[$0 + 11 | 0] << 24); HEAP82[$4_1 + 8 | 0] = $5_1; HEAP82[$4_1 + 9 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 10 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 11 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 12 | 0] = $1_1; HEAP82[$4_1 + 13 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 14 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 15 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 4 | 0] | HEAPU82[$0 + 5 | 0] << 8 | (HEAPU82[$0 + 6 | 0] << 16 | HEAPU82[$0 + 7 | 0] << 24); $5_1 = HEAPU82[$0 | 0] | HEAPU82[$0 + 1 | 0] << 8 | (HEAPU82[$0 + 2 | 0] << 16 | HEAPU82[$0 + 3 | 0] << 24); HEAP82[$4_1 | 0] = $5_1; HEAP82[$4_1 + 1 | 0] = $5_1 >>> 8; HEAP82[$4_1 + 2 | 0] = $5_1 >>> 16; HEAP82[$4_1 + 3 | 0] = $5_1 >>> 24; HEAP82[$4_1 + 4 | 0] = $1_1; HEAP82[$4_1 + 5 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 6 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 7 | 0] = $1_1 >>> 24; $1_1 = HEAPU82[$0 + 60 | 0] | HEAPU82[$0 + 61 | 0] << 8 | (HEAPU82[$0 + 62 | 0] << 16 | HEAPU82[$0 + 63 | 0] << 24); $0 = HEAPU82[$0 + 56 | 0] | HEAPU82[$0 + 57 | 0] << 8 | (HEAPU82[$0 + 58 | 0] << 16 | HEAPU82[$0 + 59 | 0] << 24); HEAP82[$4_1 + 56 | 0] = $0; HEAP82[$4_1 + 57 | 0] = $0 >>> 8; HEAP82[$4_1 + 58 | 0] = $0 >>> 16; HEAP82[$4_1 + 59 | 0] = $0 >>> 24; HEAP82[$4_1 + 60 | 0] = $1_1; HEAP82[$4_1 + 61 | 0] = $1_1 >>> 8; HEAP82[$4_1 + 62 | 0] = $1_1 >>> 16; HEAP82[$4_1 + 63 | 0] = $1_1 >>> 24; $78($4_1 - -64 | 0, $2_1, $3_1); $0 = $67($7_1, $6_1 + 8 | 0, $4_1, $3_1 - -64 | 0, $6_1 + 16 | 0); global$0 = $6_1 + 336 | 0; return $0 | 0; } function $5($0, $1_1, $2_1) { var $3_1 = 0; $3_1 = global$0 - 208 | 0; global$0 = $3_1; $70($3_1 + 8 | 0); $71($3_1 + 8 | 0, $1_1, $2_1); $1_1 = $3_1 + 8 | 0; $75($1_1, $0); $70($1_1); global$0 = $3_1 + 208 | 0; } function $6($0, $1_1, $2_1, $3_1, $4_1) { var $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0; $7_1 = global$0 - 320 | 0; global$0 = $7_1; $6_1 = HEAPU82[$4_1 + 52 | 0] | HEAPU82[$4_1 + 53 | 0] << 8 | (HEAPU82[$4_1 + 54 | 0] << 16 | HEAPU82[$4_1 + 55 | 0] << 24); $14_1 = $7_1 + 304 | 0; $5_1 = $14_1; HEAP322[$5_1 >> 2] = HEAPU82[$4_1 + 48 | 0] | HEAPU82[$4_1 + 49 | 0] << 8 | (HEAPU82[$4_1 + 50 | 0] << 16 | HEAPU82[$4_1 + 51 | 0] << 24); HEAP322[$5_1 + 4 >> 2] = $6_1; $6_1 = HEAPU82[$4_1 + 60 | 0] | HEAPU82[$4_1 + 61 | 0] << 8 | (HEAPU82[$4_1 + 62 | 0] << 16 | HEAPU82[$4_1 + 63 | 0] << 24); $15_1 = $7_1 + 312 | 0; $5_1 = $15_1; HEAP322[$5_1 >> 2] = HEAPU82[$4_1 + 56 | 0] | HEAPU82[$4_1 + 57 | 0] << 8 | (HEAPU82[$4_1 + 58 | 0] << 16 | HEAPU82[$4_1 + 59 | 0] << 24); HEAP322[$5_1 + 4 >> 2] = $6_1; $6_1 = HEAPU82[$4_1 + 36 | 0] | HEAPU82[$4_1 + 37 | 0] << 8 | (HEAPU82[$4_1 + 38 | 0] << 16 | HEAPU82[$4_1 + 39 | 0] << 24); HEAP322[$7_1 + 288 >> 2] = HEAPU82[$4_1 + 32 | 0] | HEAPU82[$4_1 + 33 | 0] << 8 | (HEAPU82[$4_1 + 34 | 0] << 16 | HEAPU82[$4_1 + 35 | 0] << 24); HEAP322[$7_1 + 292 >> 2] = $6_1; $6_1 = HEAPU82[$4_1 + 44 | 0] | HEAPU82[$4_1 + 45 | 0] << 8 | (HEAPU82[$4_1 + 46 | 0] << 16 | HEAPU82[$4_1 + 47 | 0] << 24); HEAP322[$7_1 + 296 >> 2] = HEAPU82[$4_1 + 40 | 0] | HEAPU82[$4_1 + 41 | 0] << 8 | (HEAPU82[$4_1 + 42 | 0] << 16 | HEAPU82[$4_1 + 43 | 0] << 24); HEAP322[$7_1 + 300 >> 2] = $6_1; $16_1 = $3_1 - -64 | 0; HEAP322[$1_1 >> 2] = $16_1; HEAP322[$1_1 + 4 >> 2] = 0 - (($3_1 >>> 0 < 4294967232) + -1 | 0); $80($0 - -64 | 0, $2_1, $3_1); $8_1 = HEAPU82[$4_1 + 8 | 0] | HEAPU82[$4_1 + 9 | 0] << 8 | (HEAPU82[$4_1 + 10 | 0] << 16 | HEAPU82[$4_1 + 11 | 0] << 24); $9_1 = HEAPU82[$4_1 + 12 | 0] | HEAPU82[$4_1 + 13 | 0] << 8 | (HEAPU82[$4_1 + 14 | 0] << 16 | HEAPU82[$4_1 + 15 | 0] << 24); $5_1 = HEAPU82[$4_1 + 16 | 0] | HEAPU82[$4_1 + 17 | 0] << 8 | (HEAPU82[$4_1 + 18 | 0] << 16 | HEAPU82[$4_1 + 19 | 0] << 24); $10_1 = HEAPU82[$4_1 + 20 | 0] | HEAPU82[$4_1 + 21 | 0] << 8 | (HEAPU82[$4_1 + 22 | 0] << 16 | HEAPU82[$4_1 + 23 | 0] << 24); $11_1 = HEAPU82[$4_1 | 0] | HEAPU82[$4_1 + 1 | 0] << 8 | (HEAPU82[$4_1 + 2 | 0] << 16 | HEAPU82[$4_1 + 3 | 0] << 24); $12_1 = HEAPU82[$4_1 + 4 | 0] | HEAPU82[$4_1 + 5 | 0] << 8 | (HEAPU82[$4_1 + 6 | 0] << 16 | HEAPU82[$4_1 + 7 | 0] << 24); $6_1 = HEAPU82[$4_1 + 28 | 0] | HEAPU82[$4_1 + 29 | 0] << 8 | (HEAPU82[$4_1 + 30 | 0] << 16 | HEAPU82[$4_1 + 31 | 0] << 24); $1_1 = $0 + 56 | 0; $2_1 = $1_1; $13_1 = HEAPU82[$4_1 + 24 | 0] | HEAPU82[$4_1 + 25 | 0] << 8 | (HEAPU82[$4_1 + 26 | 0] << 16 | HEAPU82[$4_1 + 27 | 0] << 24); HEAP82[$2_1 | 0] = $13_1; HEAP82[$2_1 + 1 | 0] = $13_1 >>> 8; HEAP82[$2_1 + 2 | 0] = $13_1 >>> 16; HEAP82[$2_1 + 3 | 0] = $13_1 >>> 24; HEAP82[$2_1 + 4 | 0] = $6_1; HEAP82[$2_1 + 5 | 0] = $6_1 >>> 8; HEAP82[$2_1 + 6 | 0] = $6_1 >>> 16; HEAP82[$2_1 + 7 | 0] = $6_1 >>> 24; $2_1 = $0 + 48 | 0; HEAP82[$2_1 | 0] = $5_1; HEAP82[$2_1 + 1 | 0] = $5_1 >>> 8; HEAP82[$2_1 + 2 | 0] = $5_1 >>> 16; HEAP82[$2_1 + 3 | 0] = $5_1 >>> 24; HEAP82[$2_1 + 4 | 0] = $10_1; HEAP82[$2_1 + 5 | 0] = $10_1 >>> 8; HEAP82[$2_1 + 6 | 0] = $10_1 >>> 16; HEAP82[$2_1 + 7 | 0] = $10_1 >>> 24; $6_1 = $0 + 40 | 0; $5_1 = $6_1; HEAP82[$5_1 | 0] = $8_1; HEAP82[$5_1 + 1 | 0] = $8_1 >>> 8; HEAP82[$5_1 + 2 | 0] = $8_1 >>> 16; HEAP82[$5_1 + 3 | 0] = $8_1 >>> 24; HEAP82[$5_1 + 4 | 0] = $9_1; HEAP82[$5_1 + 5 | 0] = $9_1 >>> 8; HEAP82[$5_1 + 6 | 0] = $9_1 >>> 16; HEAP82[$5_1 + 7 | 0] = $9_1 >>> 24; HEAP82[$0 + 32 | 0] = $11_1; HEAP82[$0 + 33 | 0] = $11_1 >>> 8; HEAP82[$0 + 34 | 0] = $11_1 >>> 16; HEAP82[$0 + 35 | 0] = $11_1 >>> 24; HEAP82[$0 + 36 | 0] = $12_1; HEAP82[$0 + 37 | 0] = $12_1 >>> 8; HEAP82[$0 + 38 | 0] = $12_1 >>> 16; HEAP82[$0 + 39 | 0] = $12_1 >>> 24; $8_1 = $0 + 32 | 0; $5($7_1 + 224 | 0, $8_1, $3_1 + 32 | 0); $3_1 = HEAP322[$15_1 + 4 >> 2]; $5_1 = HEAP322[$15_1 >> 2]; HEAP82[$1_1 | 0] = $5_1; HEAP82[$1_1 + 1 | 0] = $5_1 >>> 8; HEAP82[$1_1 + 2 | 0] = $5_1 >>> 16; HEAP82[$1_1 + 3 | 0] = $5_1 >>> 24; HEAP82[$1_1 + 4 | 0] = $3_1; HEAP82[$1_1 + 5 | 0] = $3_1 >>> 8; HEAP82[$1_1 + 6 | 0] = $3_1 >>> 16; HEAP82[$1_1 + 7 | 0] = $3_1 >>> 24; $1_1 = HEAP322[$14_1 + 4 >> 2]; $3_1 = HEAP322[$14_1 >> 2]; HEAP82[$2_1 | 0] = $3_1; HEAP82[$2_1 + 1 | 0] = $3_1 >>> 8; HEAP82[$2_1 + 2 | 0] = $3_1 >>> 16; HEAP82[$2_1 + 3 | 0] = $3_1 >>> 24; HEAP82[$2_1 + 4 | 0] = $1_1; HEAP82[$2_1 + 5 | 0] = $1_1 >>> 8; HEAP82[$2_1 + 6 | 0] = $1_1 >>> 16; HEAP82[$2_1 + 7 | 0] = $1_1 >>> 24; $1_1 = HEAP322[$7_1 + 300 >> 2]; $2_1 = HEAP322[$7_1 + 296 >> 2]; HEAP82[$6_1 | 0] = $2_1; HEAP82[$6_1 + 1 | 0] = $2_1 >>> 8; HEAP82[$6_1 + 2 | 0] = $2_1 >>> 16; HEAP82[$6_1 + 3 | 0] = $2_1 >>> 24; HEAP82[$6_1 + 4 | 0] = $1_1; HEAP82[$6_1 + 5 | 0] = $1_1 >>> 8; HEAP82[$6_1 + 6 | 0] = $1_1 >>> 16; HEAP82[$6_1 + 7 | 0] = $1_1 >>> 24; $1_1 = HEAP322[$7_1 + 292 >> 2]; $2_1 = HEAP322[$7_1 + 288 >> 2]; HEAP82[$0 + 32 | 0] = $2_1; HEAP82[$0 + 33 | 0] = $2_1 >>> 8; HEAP82[$0 + 34 | 0] = $2_1 >>> 16; HEAP82[$0 + 35 | 0] = $2_1 >>> 24; HEAP82[$0 + 36 | 0] = $1_1; HEAP82[$0 + 37 | 0] = $1_1 >>> 8; HEAP82[$0 + 38 | 0] = $1_1 >>> 16; HEAP82[$0 + 39 | 0] = $1_1 >>> 24; $69($7_1 + 224 | 0); $61($7_1, $7_1 + 224 | 0); $57($0, $7_1); $5($7_1 + 160 | 0, $0, $16_1); $69($7_1 + 160 | 0); $68($8_1, $7_1 + 160 | 0, $4_1, $7_1 + 224 | 0); global$0 = $7_1 + 320 | 0; } function $7($0, $1_1, $2_1) { $0 = $0 | 0; $1_1 = $1_1 | 0; $2_1 = $2_1 | 0; var $3_1 = 0, $4_1 = 0; $3_1 = global$0 - 368 | 0; global$0 = $3_1; $4_1 = HEAPU82[$1_1 + 28 | 0] | HEAPU82[$1_1 + 29 | 0] << 8 | (HEAPU82[$1_1 + 30 | 0] << 16 | HEAPU82[$1_1 + 31 | 0] << 24); HEAP322[$3_1 + 24 >> 2] = HEAPU82[$1_1 + 24 | 0] | HEAPU82[$1_1 + 25 | 0] << 8 | (HEAPU82[$1_1 + 26 | 0] << 16 | HEAPU82[$1_1 + 27 | 0] << 24); HEAP322[$3_1 + 28 >> 2] = $4_1; $4_1 = HEAPU82[$1_1 + 20 | 0] | HEAPU82[$1_1 + 21 | 0] << 8 | (HEAPU82[$1_1 + 22 | 0] << 16 | HEAPU82[$1_1 + 23 | 0] << 24); HEAP322[$3_1 + 16 >> 2] = HEAPU82[$1_1 + 16 | 0] | HEAPU82[$1_1 + 17 | 0] << 8 | (HEAPU82[$1_1 + 18 | 0] << 16 | HEAPU82[$1_1 + 19 | 0] << 24); HEAP322[$3_1 + 20 >> 2] = $4_1; $4_1 = HEAPU82[$1_1 + 12 | 0] | HEAPU82[$1_1 + 13 | 0] << 8 | (HEAPU82[$1_1 + 14 | 0] << 16 | HEAPU82[$1_1 + 15 | 0] << 24); HEAP322[$3_1 + 8 >> 2] = HEAPU82[$1_1 + 8 | 0] | HEAPU82[$1_1 + 9 | 0] << 8 | (HEAPU82[$1_1 + 10 | 0] << 16 | HEAPU82[$1_1 + 11 | 0] << 24); HEAP322[$3_1 + 12 >> 2] = $4_1; $4_1 = HEAPU82[$1_1 + 4 | 0] | HEAPU82[$1_1 + 5 | 0] << 8 | (HEAPU82[$1_1 + 6 | 0] << 16 | HEAPU82[$1_1 + 7 | 0] << 24); HEAP322[$3_1 >> 2] = HEAPU82[$1_1 | 0] | HEAPU82[$1_1 + 1 | 0] << 8 | (HEAPU82[$1_1 + 2 | 0] << 16 | HEAPU82[$1_1 + 3 | 0] << 24); HEAP322[$3_1 + 4 >> 2] = $4_1; $8($3_1 + 288 | 0, $2_1); $9($3_1 + 208 | 0, $3_1 + 112 | 0, $3_1, $3_1 + 288 | 0); $10($3_1 + 32 | 0, $3_1 + 112 | 0); $11($3_1 + 112 | 0, $3_1 + 208 | 0, $3_1 + 32 | 0); $12($0, $3_1 + 112 | 0); global$0 = $3_1 + 368 | 0; return 0; } function $8($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0; $3_1 = HEAPU82[$1_1 + 3 | 0]; $5_1 = $3_1 << 24 & 50331648; $2_1 = HEAPU82[$1_1 + 2 | 0]; $3_1 = $2_1 >>> 16 | 0; HEAP322[$0 >> 2] = $5_1 | (HEAPU82[$1_1 | 0] | HEAPU82[$1_1 + 1 | 0] << 8 | $2_1 << 16); HEAP322[$0 + 4 >> 2] = $3_1; $2_1 = HEAPU82[$1_1 + 5 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 3 | 0] | HEAPU82[$1_1 + 4 | 0] << 8 | $2_1 << 16; $4_1 = HEAPU82[$1_1 + 6 | 0]; $2_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 8 >> 2] = (($3_1 & 3) << 30 | $2_1 >>> 2) & 33554431; HEAP322[$0 + 12 >> 2] = 0; $2_1 = HEAPU82[$1_1 + 8 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 6 | 0] | HEAPU82[$1_1 + 7 | 0] << 8 | $2_1 << 16; $2_1 = $3_1; $4_1 = HEAPU82[$1_1 + 9 | 0]; $3_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 16 >> 2] = (($3_1 & 7) << 29 | $2_1 >>> 3) & 67108863; HEAP322[$0 + 20 >> 2] = 0; $2_1 = HEAPU82[$1_1 + 11 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 9 | 0] | HEAPU82[$1_1 + 10 | 0] << 8 | $2_1 << 16; $4_1 = HEAPU82[$1_1 + 12 | 0]; $2_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 24 >> 2] = (($3_1 & 31) << 27 | $2_1 >>> 5) & 33554431; HEAP322[$0 + 28 >> 2] = 0; $3_1 = $0; HEAP322[$3_1 + 32 >> 2] = (HEAPU82[$1_1 + 12 | 0] | HEAPU82[$1_1 + 13 | 0] << 8 | (HEAPU82[$1_1 + 14 | 0] << 16 | HEAPU82[$1_1 + 15 | 0] << 24)) >>> 6; HEAP322[$3_1 + 36 >> 2] = 0; $3_1 = HEAPU82[$1_1 + 19 | 0]; $5_1 = $3_1 << 24 & 16777216; $2_1 = HEAPU82[$1_1 + 18 | 0]; $3_1 = $2_1 >>> 16 | 0; HEAP322[$0 + 40 >> 2] = $5_1 | (HEAPU82[$1_1 + 16 | 0] | HEAPU82[$1_1 + 17 | 0] << 8 | $2_1 << 16); HEAP322[$0 + 44 >> 2] = $3_1; $2_1 = HEAPU82[$1_1 + 21 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 19 | 0] | HEAPU82[$1_1 + 20 | 0] << 8 | $2_1 << 16; $4_1 = HEAPU82[$1_1 + 22 | 0]; $2_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 48 >> 2] = (($3_1 & 1) << 31 | $2_1 >>> 1) & 67108863; HEAP322[$0 + 52 >> 2] = 0; $2_1 = HEAPU82[$1_1 + 24 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 22 | 0] | HEAPU82[$1_1 + 23 | 0] << 8 | $2_1 << 16; $2_1 = $3_1; $4_1 = HEAPU82[$1_1 + 25 | 0]; $3_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 56 >> 2] = (($3_1 & 7) << 29 | $2_1 >>> 3) & 33554431; HEAP322[$0 + 60 >> 2] = 0; $2_1 = HEAPU82[$1_1 + 27 | 0]; $3_1 = $2_1 >>> 16 | 0; $5_1 = HEAPU82[$1_1 + 25 | 0] | HEAPU82[$1_1 + 26 | 0] << 8 | $2_1 << 16; $4_1 = HEAPU82[$1_1 + 28 | 0]; $2_1 = $4_1 >>> 8 | 0; $4_1 = $4_1 << 24; $3_1 = $3_1 | $2_1; $2_1 = $4_1 | $5_1; HEAP322[$0 + 64 >> 2] = (($3_1 & 15) << 28 | $2_1 >>> 4) & 67108863; HEAP322[$0 + 68 >> 2] = 0; $5_1 = HEAPU82[$1_1 + 30 | 0]; $3_1 = $5_1 >>> 16 | 0; $2_1 = HEAPU82[$1_1 + 28 | 0] | HEAPU82[$1_1 + 29 | 0] << 8 | $5_1 << 16; $5_1 = $3_1; $1_1 = HEAPU82[$1_1 + 31 | 0]; $3_1 = $1_1 >>> 8 | 0; $4_1 = $1_1 << 24; $1_1 = $3_1 | $5_1; $3_1 = $2_1 | $4_1; HEAP322[$0 + 72 >> 2] = (($1_1 & 63) << 26 | $3_1 >>> 6) & 33554431; HEAP322[$0 + 76 >> 2] = 0; } function $9($0, $1_1, $2_1, $3_1) { var $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0; $4_1 = global$0 - 1280 | 0; global$0 = $4_1; $79($4_1 + 960 | 0, 152); HEAP322[$4_1 + 960 >> 2] = 1; HEAP322[$4_1 + 964 >> 2] = 0; $79($4_1 + 800 | 0, 152); HEAP322[$4_1 + 800 >> 2] = 1; HEAP322[$4_1 + 804 >> 2] = 0; $79($4_1 + 640 | 0, 152); $79($4_1 + 480 | 0, 152); $79($4_1 + 320 | 0, 152); HEAP322[$4_1 + 320 >> 2] = 1; HEAP322[$4_1 + 324 >> 2] = 0; $79($4_1 + 160 | 0, 152); $5_1 = $79($4_1, 152); HEAP322[$5_1 >> 2] = 1; HEAP322[$5_1 + 4 >> 2] = 0; $79($5_1 + 1200 | 0, 72); $78($5_1 + 1120 | 0, $3_1, 80); $15_1 = $5_1 + 160 | 0; $9_1 = $5_1 + 480 | 0; $4_1 = $5_1; $16_1 = $4_1 + 320 | 0; $10_1 = $4_1 + 640 | 0; $6_1 = $4_1 + 1120 | 0; $7_1 = $4_1 + 800 | 0; $8_1 = $4_1 + 960 | 0; while (1) { $12_1 = HEAPU82[($2_1 - $11_1 | 0) + 31 | 0]; $13_1 = 0; while (1) { $14_1 = $9_1; $17_1 = $7_1; $9_1 = $6_1; $6_1 = ($12_1 & 128) >>> 7 | 0; $13($7_1, $9_1, $6_1); $18_1 = $10_1; $19 = $8_1; $13($10_1, $8_1, $6_1); $7_1 = $15_1; $10_1 = $4_1; $8_1 = $16_1; $14($7_1, $4_1, $14_1, $8_1, $17_1, $18_1, $9_1, $19, $3_1); $13($7_1, $14_1, $6_1); $13($4_1, $8_1, $6_1); $12_1 = $12_1 << 1; $6_1 = $14_1; $4_1 = $18_1; $15_1 = $17_1; $16_1 = $19; $13_1 = $13_1 + 1 | 0; if (($13_1 | 0) != 8) { continue; } break; } $11_1 = $11_1 + 1 | 0; if (($11_1 | 0) != 32) { continue; } break; } $78($0, $7_1, 80); $78($1_1, $10_1, 80); global$0 = $5_1 + 1280 | 0; } function $10($0, $1_1) { var $2_1 = 0, $3_1 = 0; $2_1 = global$0 - 800 | 0; global$0 = $2_1; $15($2_1 + 720 | 0, $1_1); $15($2_1, $2_1 + 720 | 0); $15($2_1 + 80 | 0, $2_1); $11($2_1 + 640 | 0, $2_1 + 80 | 0, $1_1); $11($2_1 + 560 | 0, $2_1 + 640 | 0, $2_1 + 720 | 0); $15($2_1 + 80 | 0, $2_1 + 560 | 0); $11($2_1 + 480 | 0, $2_1 + 80 | 0, $2_1 + 640 | 0); $15($2_1 + 80 | 0, $2_1 + 480 | 0); $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $11($2_1 + 400 | 0, $2_1 + 80 | 0, $2_1 + 480 | 0); $15($2_1 + 80 | 0, $2_1 + 400 | 0); $15($2_1, $2_1 + 80 | 0); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 8; $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1 + 320 | 0, $2_1, $2_1 + 400 | 0); $15($2_1 + 80 | 0, $2_1 + 320 | 0); $15($2_1, $2_1 + 80 | 0); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 18; $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1 + 80 | 0, $2_1, $2_1 + 320 | 0); $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 8; $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1 + 240 | 0, $2_1 + 80 | 0, $2_1 + 400 | 0); $15($2_1 + 80 | 0, $2_1 + 240 | 0); $15($2_1, $2_1 + 80 | 0); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 48; $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1 + 160 | 0, $2_1, $2_1 + 240 | 0); $15($2_1, $2_1 + 160 | 0); $15($2_1 + 80 | 0, $2_1); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 98; $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1, $2_1 + 80 | 0, $2_1 + 160 | 0); $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $1_1 = 2; while (1) { $3_1 = $1_1 >>> 0 < 48; $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $1_1 = $1_1 + 2 | 0; if ($3_1) { continue; } break; } $11($2_1 + 80 | 0, $2_1, $2_1 + 240 | 0); $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $15($2_1 + 80 | 0, $2_1); $15($2_1, $2_1 + 80 | 0); $11($0, $2_1, $2_1 + 560 | 0); global$0 = $2_1 + 800 | 0; } function $11($0, $1_1, $2_1) { var $3_1 = 0; $3_1 = global$0 - 160 | 0; global$0 = $3_1; $16($3_1, $1_1, $2_1); $17($3_1); $18($3_1); $78($0, $3_1, 80); global$0 = $3_1 + 160 | 0; } function $12($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0; $3_1 = global$0 - 48 | 0; global$0 = $3_1; while (1) { HEAP322[($2_1 << 2) + $3_1 >> 2] = HEAP322[($2_1 << 3) + $1_1 >> 2]; $2_1 = $2_1 + 1 | 0; if (($2_1 | 0) != 10) { continue; } break; } $2_1 = 0; while (1) { $1_1 = $2_1; $2_1 = 0; while (1) { $5_1 = ($2_1 << 2) + $3_1 | 0; $4_1 = HEAP322[$5_1 >> 2]; $6_1 = $4_1 >> 31 & $4_1; $7_1 = $4_1; $4_1 = $2_1 & 1; HEAP322[$5_1 >> 2] = $7_1 - ($6_1 & ($4_1 ? -33554432 : -67108864)); $2_1 = $2_1 + 1 | 0; $5_1 = ($2_1 << 2) + $3_1 | 0; HEAP322[$5_1 >> 2] = HEAP322[$5_1 >> 2] + ($6_1 >> ($4_1 ? 25 : 26)); if (($2_1 | 0) != 9) { continue; } break; } $2_1 = HEAP322[$3_1 + 36 >> 2]; $4_1 = $2_1 >> 31 & $2_1; HEAP322[$3_1 + 36 >> 2] = $2_1 - ($4_1 & -33554432); $4_1 = HEAP322[$3_1 >> 2] + Math_imul2($4_1 >> 25, 19) | 0; HEAP322[$3_1 >> 2] = $4_1; $2_1 = $1_1 + 1 | 0; if (!$1_1) { continue; } break; } $1_1 = $4_1 & $4_1 >> 31; HEAP322[$3_1 >> 2] = $4_1 - ($1_1 & -67108864); HEAP322[$3_1 + 4 >> 2] = HEAP322[$3_1 + 4 >> 2] + ($1_1 >> 26); $2_1 = 0; while (1) { $1_1 = $2_1; $2_1 = 0; while (1) { $6_1 = ($2_1 << 2) + $3_1 | 0; $4_1 = HEAP322[$6_1 >> 2]; $7_1 = $6_1; $6_1 = $2_1 & 1; HEAP322[$7_1 >> 2] = $4_1 & ($6_1 ? 33554431 : 67108863); $2_1 = $2_1 + 1 | 0; $5_1 = ($2_1 << 2) + $3_1 | 0; HEAP322[$5_1 >> 2] = HEAP322[$5_1 >> 2] + ($4_1 >> ($6_1 ? 25 : 26)); if (($2_1 | 0) != 9) { continue; } break; } $2_1 = HEAP322[$3_1 + 36 >> 2]; HEAP322[$3_1 + 36 >> 2] = $2_1 & 33554431; $4_1 = HEAP322[$3_1 >> 2] + Math_imul2($2_1 >> 25, 19) | 0; HEAP322[$3_1 >> 2] = $4_1; $2_1 = $1_1 + 1 | 0; if (!$1_1) { continue; } break; } $1_1 = $4_1 + -67108845 >> 31 ^ -1; $2_1 = 1; while (1) { $1_1 = $20(HEAP322[($2_1 << 2) + $3_1 >> 2], $2_1 & 1 ? 33554431 : 67108863) & $1_1; $2_1 = $2_1 + 1 | 0; if (($2_1 | 0) != 10) { continue; } break; } HEAP322[$3_1 >> 2] = $4_1 - ($1_1 & 67108845); $2_1 = 1; while (1) { $4_1 = ($2_1 << 2) + $3_1 | 0; HEAP322[$4_1 >> 2] = HEAP322[$4_1 >> 2] - (($2_1 & 1 ? 33554431 : 67108863) & $1_1); $2_1 = $2_1 + 1 | 0; if (($2_1 | 0) != 10) { continue; } break; } $2_1 = HEAP322[$3_1 + 24 >> 2]; $11_1 = $2_1 << 1; HEAP322[$3_1 + 24 >> 2] = $11_1; $4_1 = HEAP322[$3_1 + 28 >> 2]; $12_1 = $4_1 << 3; HEAP322[$3_1 + 28 >> 2] = $12_1; $6_1 = HEAP322[$3_1 + 32 >> 2]; $13_1 = $6_1 << 4; HEAP322[$3_1 + 32 >> 2] = $13_1; $5_1 = HEAP322[$3_1 + 36 >> 2]; $14_1 = $5_1 << 6; HEAP322[$3_1 + 36 >> 2] = $14_1; $7_1 = HEAP322[$3_1 + 4 >> 2]; $15_1 = $7_1 << 2; HEAP322[$3_1 + 4 >> 2] = $15_1; $8_1 = HEAP322[$3_1 + 8 >> 2]; $16_1 = $8_1 << 3; HEAP322[$3_1 + 8 >> 2] = $16_1; $9_1 = HEAP322[$3_1 + 12 >> 2]; $17_1 = $9_1 << 5; HEAP322[$3_1 + 12 >> 2] = $17_1; $10_1 = HEAP322[$3_1 + 16 >> 2]; $18_1 = $10_1 << 6; HEAP322[$3_1 + 16 >> 2] = $18_1; HEAP82[$0 + 16 | 0] = 0; HEAP82[$0 | 0] = 0; $1_1 = HEAP322[$3_1 >> 2]; HEAP82[$0 + 15 | 0] = $10_1 >>> 18; HEAP82[$0 + 14 | 0] = $10_1 >>> 10; HEAP82[$0 + 13 | 0] = $10_1 >>> 2; HEAP82[$0 + 12 | 0] = $9_1 >>> 19 | $18_1; HEAP82[$0 + 11 | 0] = $9_1 >>> 11; HEAP82[$0 + 10 | 0] = $9_1 >>> 3; HEAP82[$0 + 9 | 0] = $8_1 >>> 21 | $17_1; HEAP82[$0 + 8 | 0] = $8_1 >>> 13; HEAP82[$0 + 7 | 0] = $8_1 >>> 5; HEAP82[$0 + 6 | 0] = $7_1 >>> 22 | $16_1; HEAP82[$0 + 5 | 0] = $7_1 >>> 14; HEAP82[$0 + 4 | 0] = $7_1 >>> 6; HEAP82[$0 | 0] = $1_1; HEAP82[$0 + 2 | 0] = $1_1 >>> 16; HEAP82[$0 + 1 | 0] = $1_1 >>> 8; HEAP82[$0 + 3 | 0] = $1_1 >>> 24 | $15_1; $1_1 = HEAP322[$3_1 + 20 >> 2]; HEAP82[$0 + 31 | 0] = $5_1 >>> 18; HEAP82[$0 + 30 | 0] = $5_1 >>> 10; HEAP82[$0 + 29 | 0] = $5_1 >>> 2; HEAP82[$0 + 28 | 0] = $6_1 >>> 20 | $14_1; HEAP82[$0 + 27 | 0] = $6_1 >>> 12; HEAP82[$0 + 26 | 0] = $6_1 >>> 4; HEAP82[$0 + 25 | 0] = $4_1 >>> 21 | $13_1; HEAP82[$0 + 24 | 0] = $4_1 >>> 13; HEAP82[$0 + 23 | 0] = $4_1 >>> 5; HEAP82[$0 + 22 | 0] = $2_1 >>> 23 | $12_1; HEAP82[$0 + 21 | 0] = $2_1 >>> 15; HEAP82[$0 + 20 | 0] = $2_1 >>> 7; HEAP82[$0 + 16 | 0] = $1_1; HEAP82[$0 + 18 | 0] = $1_1 >>> 16; HEAP82[$0 + 17 | 0] = $1_1 >>> 8; HEAP82[$0 + 19 | 0] = $1_1 >>> 24 | $11_1; global$0 = $3_1 + 48 | 0; } function $13($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0; $7_1 = 0 - $2_1 | 0; while (1) { $2_1 = $6_1 << 3; $3_1 = $2_1 + $0 | 0; $4_1 = HEAP322[$3_1 >> 2]; $5_1 = $4_1; $2_1 = $1_1 + $2_1 | 0; $4_1 = ($4_1 ^ HEAP322[$2_1 >> 2]) & $7_1; $5_1 = $5_1 ^ $4_1; HEAP322[$3_1 >> 2] = $5_1; HEAP322[$3_1 + 4 >> 2] = $5_1 >> 31; $3_1 = $4_1 ^ HEAP322[$2_1 >> 2]; HEAP322[$2_1 >> 2] = $3_1; HEAP322[$2_1 + 4 >> 2] = $3_1 >> 31; $6_1 = $6_1 + 1 | 0; if (($6_1 | 0) != 10) { continue; } break; } } function $14($0, $1_1, $2_1, $3_1, $4_1, $5_1, $6_1, $7_1, $8_1) { var $9_1 = 0; $9_1 = global$0 - 1280 | 0; global$0 = $9_1; $78($9_1 + 1200 | 0, $4_1, 80); $21($4_1, $5_1); $22($5_1, $9_1 + 1200 | 0); $78($9_1 + 1120 | 0, $6_1, 80); $21($6_1, $7_1); $22($7_1, $9_1 + 1120 | 0); $16($9_1 + 480 | 0, $6_1, $5_1); $16($9_1 + 320 | 0, $4_1, $7_1); $17($9_1 + 480 | 0); $18($9_1 + 480 | 0); $17($9_1 + 320 | 0); $18($9_1 + 320 | 0); $78($9_1 + 1120 | 0, $9_1 + 480 | 0, 80); $21($9_1 + 480 | 0, $9_1 + 320 | 0); $22($9_1 + 320 | 0, $9_1 + 1120 | 0); $15($9_1, $9_1 + 480 | 0); $15($9_1 + 160 | 0, $9_1 + 320 | 0); $16($9_1 + 320 | 0, $9_1 + 160 | 0, $8_1); $17($9_1 + 320 | 0); $18($9_1 + 320 | 0); $78($2_1, $9_1, 80); $78($3_1, $9_1 + 320 | 0, 80); $15($9_1 + 800 | 0, $4_1); $15($9_1 + 640 | 0, $5_1); $16($0, $9_1 + 800 | 0, $9_1 + 640 | 0); $17($0); $18($0); $22($9_1 + 640 | 0, $9_1 + 800 | 0); $79($9_1 + 1040 | 0, 72); $23($9_1 + 960 | 0, $9_1 + 640 | 0); $18($9_1 + 960 | 0); $21($9_1 + 960 | 0, $9_1 + 800 | 0); $16($1_1, $9_1 + 640 | 0, $9_1 + 960 | 0); $17($1_1); $18($1_1); global$0 = $9_1 + 1280 | 0; } function $15($0, $1_1) { var $2_1 = 0; $2_1 = global$0 - 160 | 0; global$0 = $2_1; $26($2_1, $1_1); $17($2_1); $18($2_1); $78($0, $2_1, 80); global$0 = $2_1 + 160 | 0; } function $16($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0; $3_1 = HEAP322[$2_1 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; HEAP322[$0 >> 2] = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); HEAP322[$0 + 4 >> 2] = i64toi32_i32$HIGH_BITS; $3_1 = HEAP322[$2_1 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $3_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $9_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($9_1, $8_1, $3_1, $3_1 >> 31); $9_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $0; HEAP322[$4_1 + 8 >> 2] = $9_1; HEAP322[$4_1 + 12 >> 2] = $9_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $4_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $9_1 = i64toi32_i32$HIGH_BITS; $3_1 = $4_1; $4_1 = HEAP322[$2_1 + 8 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = $4_1 >> 31; $7_1 = __wasm_i64_mul($8_1, $6_1, ($4_1 & 2147483647) << 1, $5_1); $4_1 = $3_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = $4_1; $4_1 = HEAP322[$2_1 >> 2]; $9_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 16 >> 2]; $9_1 = __wasm_i64_mul($9_1, $8_1, $4_1, $4_1 >> 31); $4_1 = $3_1 + $9_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $0; HEAP322[$3_1 + 16 >> 2] = $4_1; HEAP322[$3_1 + 20 >> 2] = $4_1 >>> 0 < $9_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $3_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $9_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $7_1 = __wasm_i64_mul($9_1, $8_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = $4_1; $4_1 = HEAP322[$2_1 + 24 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = $9_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 >> 2]; $9_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $7_1 = __wasm_i64_mul($9_1, $8_1, $3_1, $3_1 >> 31); $3_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $9_1 = $0; HEAP322[$9_1 + 24 >> 2] = $3_1; HEAP322[$9_1 + 28 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 8 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $6_1 = $4_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $5_1 << 1 | $3_1 >>> 31; $6_1 = $3_1 << 1; $3_1 = $8_1 + $6_1 | 0; $5_1 = $4_1 + $7_1 | 0; $5_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; HEAP322[$9_1 + 32 >> 2] = $4_1; HEAP322[$9_1 + 36 >> 2] = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 40 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; HEAP322[$9_1 + 40 >> 2] = $4_1; HEAP322[$9_1 + 44 >> 2] = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 40 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 8 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $6_1 = $4_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $4_1 << 1 | $3_1 >>> 31; $4_1 = $3_1 << 1; $3_1 = $8_1 + $4_1 | 0; $5_1 = $5_1 + $7_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 48 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 48 >> 2] = $3_1; HEAP322[$9_1 + 52 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 48 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 8 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 56 >> 2] = $3_1; HEAP322[$9_1 + 60 >> 2] = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 24 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 40 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $4_1 = $6_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 56 >> 2]; $6_1 = $4_1; $10_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 8 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $6_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1; $3_1 = ($3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1) << 1 | $3_1 >>> 31; $6_1 = $5_1 << 1; $4_1 = $8_1 + $6_1 | 0; $5_1 = $3_1 + $7_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $4_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; HEAP322[$9_1 + 64 >> 2] = $5_1; HEAP322[$9_1 + 68 >> 2] = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 8 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $4_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 72 >> 2] = $3_1; HEAP322[$9_1 + 76 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 56 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $4_1 = $6_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 24 >> 2]; $6_1 = $4_1; $10_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 56 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $6_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = $4_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = $3_1; $3_1 = HEAP322[$2_1 + 8 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $5_1 = $5_1 << 1 | $3_1 >>> 31; $6_1 = $3_1 << 1; $3_1 = $8_1 + $6_1 | 0; $4_1 = $5_1 + $7_1 | 0; $4_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $4_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 80 >> 2] = $3_1; HEAP322[$9_1 + 84 >> 2] = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 24 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $4_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 16 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 88 >> 2] = $3_1; HEAP322[$9_1 + 92 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 40 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $4_1 = $6_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 72 >> 2]; $6_1 = $4_1; $10_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 24 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $6_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = $4_1; $3_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = $5_1 << 1 | $3_1 >>> 31; $6_1 = $4_1 << 1; $4_1 = $8_1 + $6_1 | 0; $5_1 = $3_1 + $7_1 | 0; $3_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $3_1; $7_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $7_1, $3_1, $3_1 >> 31); $3_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + ($4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1) | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; HEAP322[$9_1 + 96 >> 2] = $3_1; HEAP322[$9_1 + 100 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 40 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = HEAP322[$2_1 + 40 >> 2]; $8_1 = $4_1; $6_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 64 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $4_1, $4_1 >> 31); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $3_1 = HEAP322[$2_1 + 32 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; HEAP322[$9_1 + 104 >> 2] = $3_1; HEAP322[$9_1 + 108 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $4_1 = $3_1; $5_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = __wasm_i64_mul($4_1, $5_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 72 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 40 >> 2]; $4_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $3_1; $6_1 = $4_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $4_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $3_1, $3_1 >> 31); $3_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 40 >> 2]; $6_1 = $3_1; $10_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $6_1 = __wasm_i64_mul($6_1, $10_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $3_1 << 1 | $4_1 >>> 31; $4_1 = $4_1 << 1; $3_1 = $8_1 + $4_1 | 0; $5_1 = $5_1 + $7_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 48 >> 2]; $8_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $7_1 = __wasm_i64_mul($8_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$9_1 + 112 >> 2] = $3_1; HEAP322[$9_1 + 116 >> 2] = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 + 56 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $3_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $9_1 = i64toi32_i32$HIGH_BITS; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $5_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $7_1 = __wasm_i64_mul($5_1, $8_1, $3_1, $3_1 >> 31); $3_1 = $4_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $9_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = __wasm_i64_mul($9_1, $8_1, $3_1, $3_1 >> 31); $9_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $9_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $9_1; $9_1 = HEAP322[$2_1 + 48 >> 2]; $5_1 = $9_1; $8_1 = $9_1 >> 31; $9_1 = HEAP322[$1_1 + 72 >> 2]; $7_1 = __wasm_i64_mul($5_1, $8_1, $9_1, $9_1 >> 31); $9_1 = $4_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $0; HEAP322[$4_1 + 120 >> 2] = $9_1; HEAP322[$4_1 + 124 >> 2] = $9_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 64 >> 2]; $3_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $4_1 = HEAP322[$2_1 + 56 >> 2]; $9_1 = $4_1; $5_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 72 >> 2]; $4_1 = __wasm_i64_mul($9_1, $5_1, $4_1, $4_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $9_1 = $3_1; $8_1 = $4_1; $3_1 = HEAP322[$2_1 + 72 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $8_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $5_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $3_1 = $5_1 << 1 | $3_1 >>> 31; $6_1 = $4_1 << 1; $5_1 = $9_1 + $6_1 | 0; $4_1 = $3_1 + $7_1 | 0; $9_1 = $0; HEAP322[$9_1 + 128 >> 2] = $5_1; HEAP322[$9_1 + 132 >> 2] = $5_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$2_1 + 64 >> 2]; $4_1 = $3_1; $9_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 72 >> 2]; $4_1 = __wasm_i64_mul($4_1, $9_1, $3_1, $3_1 >> 31); $9_1 = i64toi32_i32$HIGH_BITS; $3_1 = $4_1; $4_1 = HEAP322[$2_1 + 72 >> 2]; $5_1 = $4_1; $8_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 64 >> 2]; $7_1 = __wasm_i64_mul($5_1, $8_1, $4_1, $4_1 >> 31); $4_1 = $3_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $3_1 = $0; HEAP322[$3_1 + 136 >> 2] = $4_1; HEAP322[$3_1 + 140 >> 2] = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $2_1 = HEAP322[$2_1 + 72 >> 2]; $3_1 = HEAP322[$1_1 + 72 >> 2]; $1_1 = 0; HEAP322[$0 + 144 >> 2] = __wasm_i64_mul($2_1, $2_1 >> 31, ($3_1 & 2147483647) << 1 | $1_1 >>> 31, $3_1 >> 31); HEAP322[$0 + 148 >> 2] = i64toi32_i32$HIGH_BITS; } function $17($0) { var $1_1 = 0, $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $2_1 = HEAP322[$0 + 148 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 68 >> 2] | 0; $3_1 = HEAP322[$0 + 144 >> 2]; $4_1 = HEAP322[$0 + 64 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $6_1 = $0; HEAP322[$0 + 64 >> 2] = $2_1; HEAP322[$0 + 68 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 140 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 60 >> 2] | 0; $3_1 = HEAP322[$0 + 136 >> 2]; $4_1 = HEAP322[$0 + 56 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 56 >> 2] = $2_1; HEAP322[$6_1 + 60 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 132 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 52 >> 2] | 0; $3_1 = HEAP322[$0 + 128 >> 2]; $4_1 = HEAP322[$0 + 48 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 48 >> 2] = $2_1; HEAP322[$6_1 + 52 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 124 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 44 >> 2] | 0; $3_1 = HEAP322[$0 + 120 >> 2]; $4_1 = HEAP322[$0 + 40 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 40 >> 2] = $2_1; HEAP322[$6_1 + 44 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 116 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 36 >> 2] | 0; $3_1 = HEAP322[$0 + 112 >> 2]; $4_1 = HEAP322[$0 + 32 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 32 >> 2] = $2_1; HEAP322[$6_1 + 36 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 108 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 28 >> 2] | 0; $3_1 = HEAP322[$0 + 104 >> 2]; $4_1 = HEAP322[$0 + 24 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 24 >> 2] = $2_1; HEAP322[$6_1 + 28 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 100 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 20 >> 2] | 0; $3_1 = HEAP322[$0 + 96 >> 2]; $4_1 = HEAP322[$0 + 16 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 16 >> 2] = $2_1; HEAP322[$6_1 + 20 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = HEAP322[$0 + 92 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 12 >> 2] | 0; $3_1 = HEAP322[$0 + 88 >> 2]; $4_1 = HEAP322[$0 + 8 >> 2]; $5_1 = $3_1 + $4_1 | 0; if ($5_1 >>> 0 < $4_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $2_1 = $3_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$0 + 8 >> 2] = $2_1; HEAP322[$6_1 + 12 >> 2] = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = $0; $2_1 = HEAP322[$0 + 84 >> 2]; $1_1 = $2_1 + HEAP322[$0 + 4 >> 2] | 0; $3_1 = HEAP322[$0 + 80 >> 2]; $0 = HEAP322[$0 >> 2]; $4_1 = $3_1 + $0 | 0; if ($4_1 >>> 0 < $0 >>> 0) { $1_1 = $1_1 + 1 | 0; } $2_1 = __wasm_i64_mul($3_1, $2_1, 18, 0); $0 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; HEAP322[$5_1 >> 2] = $0; HEAP322[$6_1 + 4 >> 2] = $0 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; } function $18($0) { var $1_1 = 0, $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0; HEAP322[$0 + 80 >> 2] = 0; HEAP322[$0 + 84 >> 2] = 0; while (1) { $9_1 = $3_1 << 3; $2_1 = $9_1 + $0 | 0; $4_1 = HEAP322[$2_1 + 4 >> 2]; $1_1 = HEAP322[$2_1 >> 2]; $7_1 = $4_1; $4_1 = $24($1_1, $4_1); $8_1 = i64toi32_i32$HIGH_BITS; $5_1 = $8_1; $8_1 = $5_1 << 26 | $4_1 >>> 6; $6_1 = $4_1 << 26; HEAP322[$2_1 >> 2] = $1_1 - $6_1; HEAP322[$2_1 + 4 >> 2] = $7_1 - (($1_1 >>> 0 < $6_1 >>> 0) + $8_1 | 0); $2_1 = ($9_1 | 8) + $0 | 0; $1_1 = $2_1; $7_1 = $4_1 + HEAP322[$1_1 >> 2] | 0; $5_1 = $5_1 + HEAP322[$1_1 + 4 >> 2] | 0; $1_1 = $7_1; $5_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $7_1 = $5_1; $4_1 = $25($1_1, $5_1); $5_1 = i64toi32_i32$HIGH_BITS; $8_1 = $5_1; $5_1 = $5_1 << 25 | $4_1 >>> 7; $6_1 = $4_1 << 25; HEAP322[$2_1 >> 2] = $1_1 - $6_1; HEAP322[$2_1 + 4 >> 2] = $7_1 - (($1_1 >>> 0 < $6_1 >>> 0) + $5_1 | 0); $1_1 = $3_1 + 2 | 0; $2_1 = ($1_1 << 3) + $0 | 0; $7_1 = $2_1; $5_1 = $2_1; $6_1 = $8_1 + HEAP322[$2_1 + 4 >> 2] | 0; $2_1 = $4_1 + HEAP322[$2_1 >> 2] | 0; if ($2_1 >>> 0 < $4_1 >>> 0) { $6_1 = $6_1 + 1 | 0; } HEAP322[$5_1 >> 2] = $2_1; HEAP322[$7_1 + 4 >> 2] = $6_1; $4_1 = $3_1 >>> 0 < 8; $3_1 = $1_1; if ($4_1) { continue; } break; } $6_1 = HEAP322[$0 + 80 >> 2]; $7_1 = HEAP322[$0 + 84 >> 2]; HEAP322[$0 + 80 >> 2] = 0; HEAP322[$0 + 84 >> 2] = 0; $3_1 = HEAP322[$0 + 4 >> 2] + $7_1 | 0; $2_1 = HEAP322[$0 >> 2]; $1_1 = $2_1 + $6_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $3_1 = $3_1 + 1 | 0; } $2_1 = $1_1; $1_1 = __wasm_i64_mul($6_1, $7_1, 18, 0); $2_1 = $2_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = $2_1; HEAP322[$0 >> 2] = $1_1; HEAP322[$0 + 4 >> 2] = $3_1; $7_1 = $3_1; $4_1 = $24($1_1, $3_1); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = $3_1 << 26 | $4_1 >>> 6; $6_1 = $4_1 << 26; HEAP322[$0 >> 2] = $1_1 - $6_1; HEAP322[$0 + 4 >> 2] = $7_1 - (($1_1 >>> 0 < $6_1 >>> 0) + $3_1 | 0); $1_1 = $0; $7_1 = $0; $8_1 = $5_1 + HEAP322[$0 + 12 >> 2] | 0; $0 = $4_1 + HEAP322[$0 + 8 >> 2] | 0; if ($0 >>> 0 < $4_1 >>> 0) { $8_1 = $8_1 + 1 | 0; } HEAP322[$7_1 + 8 >> 2] = $0; HEAP322[$1_1 + 12 >> 2] = $8_1; } function $20($0, $1_1) { $0 = $0 ^ $1_1 ^ -1; $0 = $0 << 16 & $0; $0 = $0 << 8 & $0; $0 = $0 << 4 & $0; $0 = $0 << 2 & $0; return ($0 << 1 & $0) >> 31; } function $21($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0; while (1) { $3_1 = $7_1 << 3; $2_1 = $3_1 + $0 | 0; $4_1 = $2_1; $8_1 = HEAP322[$2_1 >> 2]; $5_1 = $1_1 + $3_1 | 0; $6_1 = $8_1 + HEAP322[$5_1 >> 2] | 0; $2_1 = HEAP322[$5_1 + 4 >> 2] + HEAP322[$2_1 + 4 >> 2] | 0; HEAP322[$4_1 >> 2] = $6_1; HEAP322[$4_1 + 4 >> 2] = $6_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $3_1 | 8; $2_1 = $3_1 + $0 | 0; $6_1 = $2_1; $5_1 = HEAP322[$2_1 >> 2]; $4_1 = $1_1 + $3_1 | 0; $3_1 = $5_1 + HEAP322[$4_1 >> 2] | 0; $2_1 = HEAP322[$4_1 + 4 >> 2] + HEAP322[$2_1 + 4 >> 2] | 0; HEAP322[$6_1 >> 2] = $3_1; HEAP322[$6_1 + 4 >> 2] = $3_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $7_1 >>> 0 < 8; $7_1 = $7_1 + 2 | 0; if ($2_1) { continue; } break; } } function $22($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0; while (1) { $2_1 = $5_1 << 3; $3_1 = $2_1 + $0 | 0; $6_1 = $3_1; $4_1 = $1_1 + $2_1 | 0; $2_1 = HEAP322[$4_1 >> 2]; $7_1 = HEAP322[$4_1 + 4 >> 2]; $4_1 = HEAP322[$3_1 >> 2]; $3_1 = $7_1 - (HEAP322[$3_1 + 4 >> 2] + ($2_1 >>> 0 < $4_1 >>> 0) | 0) | 0; HEAP322[$6_1 >> 2] = $2_1 - $4_1; HEAP322[$6_1 + 4 >> 2] = $3_1; $5_1 = $5_1 + 1 | 0; if (($5_1 | 0) != 10) { continue; } break; } } function $23($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0; while (1) { $2_1 = $3_1 << 3; $4_1 = $2_1 + $0 | 0; $2_1 = $1_1 + $2_1 | 0; HEAP322[$4_1 >> 2] = __wasm_i64_mul(HEAP322[$2_1 >> 2], HEAP322[$2_1 + 4 >> 2], 121665, 0); HEAP322[$4_1 + 4 >> 2] = i64toi32_i32$HIGH_BITS; $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 10) { continue; } break; } } function $24($0, $1_1) { var $2_1 = 0; $2_1 = $0; $0 = $0 + ($1_1 >> 31 >>> 6 | 0) | 0; if ($0 >>> 0 < $2_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $0 = ($1_1 & 67108863) << 6 | $0 >>> 26; i64toi32_i32$HIGH_BITS = $1_1 >> 26; return $0; } function $25($0, $1_1) { var $2_1 = 0; $2_1 = $0; $0 = $0 + ($1_1 >> 31 >>> 7 | 0) | 0; if ($0 >>> 0 < $2_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $0 = ($1_1 & 33554431) << 7 | $0 >>> 25; i64toi32_i32$HIGH_BITS = $1_1 >> 25; return $0; } function $26($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0; $3_1 = HEAP322[$1_1 >> 2]; $2_1 = $3_1 >> 31; HEAP322[$0 >> 2] = __wasm_i64_mul($3_1, $2_1, $3_1, $2_1); HEAP322[$0 + 4 >> 2] = i64toi32_i32$HIGH_BITS; $3_1 = $0; $2_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = $2_1; $6_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 >> 2]; $4_1 = $2_1 >> 31; HEAP322[$3_1 + 8 >> 2] = __wasm_i64_mul($5_1, $6_1, ($2_1 & 2147483647) << 1, $4_1); HEAP322[$3_1 + 12 >> 2] = i64toi32_i32$HIGH_BITS; $2_1 = HEAP322[$1_1 + 16 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 >> 2]; $2_1 = __wasm_i64_mul($3_1, $5_1, $2_1, $2_1 >> 31); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = $2_1; $4_1 = HEAP322[$1_1 + 8 >> 2]; $2_1 = $4_1 >> 31; $4_1 = __wasm_i64_mul($4_1, $2_1, $4_1, $2_1); $2_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $0; HEAP322[$5_1 + 16 >> 2] = $2_1 << 1; HEAP322[$5_1 + 20 >> 2] = $3_1 << 1 | $2_1 >>> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 >> 2]; $3_1 = __wasm_i64_mul($3_1, $5_1, $2_1, $2_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $3_1; $3_1 = HEAP322[$1_1 + 16 >> 2]; $5_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $6_1 = __wasm_i64_mul($5_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $2_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $0; HEAP322[$2_1 + 24 >> 2] = $5_1 << 1; HEAP322[$2_1 + 28 >> 2] = $3_1 << 1 | $5_1 >>> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $5_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 8 >> 2]; $3_1 = $2_1 >> 30; $2_1 = __wasm_i64_mul($5_1, $4_1, ($2_1 & 1073741823) << 2, $3_1); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = $2_1; $4_1 = HEAP322[$1_1 + 16 >> 2]; $2_1 = $4_1 >> 31; $6_1 = __wasm_i64_mul($4_1, $2_1, $4_1, $2_1); $2_1 = $5_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $2_1; $2_1 = HEAP322[$1_1 + 32 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 >> 2]; $3_1 = $2_1 >> 31; $6_1 = __wasm_i64_mul($6_1, $7_1, ($2_1 & 2147483647) << 1, $3_1); $2_1 = $5_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $0; HEAP322[$5_1 + 32 >> 2] = $2_1; HEAP322[$5_1 + 36 >> 2] = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 8 >> 2]; $3_1 = __wasm_i64_mul($3_1, $5_1, $2_1, $2_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $3_1; $3_1 = HEAP322[$1_1 + 24 >> 2]; $5_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $6_1 = __wasm_i64_mul($5_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $2_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $5_1; $5_1 = HEAP322[$1_1 + 40 >> 2]; $4_1 = $5_1; $6_1 = $5_1 >> 31; $5_1 = HEAP322[$1_1 >> 2]; $6_1 = __wasm_i64_mul($4_1, $6_1, $5_1, $5_1 >> 31); $5_1 = $2_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = $0; HEAP322[$2_1 + 40 >> 2] = $5_1 << 1; HEAP322[$2_1 + 44 >> 2] = $4_1 << 1 | $5_1 >>> 31; $5_1 = $2_1; $2_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 16 >> 2]; $2_1 = __wasm_i64_mul($3_1, $4_1, $2_1, $2_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $7_1 = $2_1; $3_1 = HEAP322[$1_1 + 24 >> 2]; $2_1 = $3_1 >> 31; $6_1 = __wasm_i64_mul($3_1, $2_1, $3_1, $2_1); $3_1 = $7_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $3_1; $3_1 = HEAP322[$1_1 + 48 >> 2]; $6_1 = $3_1; $7_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1; $4_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = $2_1; $2_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = $2_1; $8_1 = $2_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $2_1 = $3_1 >> 31; $6_1 = __wasm_i64_mul($6_1, $8_1, ($3_1 & 2147483647) << 1, $2_1); $2_1 = $7_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; HEAP322[$5_1 + 48 >> 2] = $2_1 << 1; HEAP322[$5_1 + 52 >> 2] = $3_1 << 1 | $2_1 >>> 31; $2_1 = HEAP322[$1_1 + 40 >> 2]; $3_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 16 >> 2]; $2_1 = __wasm_i64_mul($3_1, $4_1, $2_1, $2_1 >> 31); $3_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = HEAP322[$1_1 + 32 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $4_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = $2_1; $2_1 = HEAP322[$1_1 + 48 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 8 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $3_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $2_1 = HEAP322[$1_1 + 56 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1; HEAP322[$5_1 + 56 >> 2] = $3_1 << 1; HEAP322[$5_1 + 60 >> 2] = ($3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) << 1 | $3_1 >>> 31; $2_1 = $5_1; $5_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = $5_1 >> 31; $4_1 = __wasm_i64_mul($5_1, $3_1, $5_1, $3_1); $9_1 = i64toi32_i32$HIGH_BITS; $3_1 = HEAP322[$1_1 + 64 >> 2]; $5_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $3_1 = __wasm_i64_mul($5_1, $6_1, $3_1, $3_1 >> 31); $6_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $3_1 = HEAP322[$1_1 + 48 >> 2]; $7_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = __wasm_i64_mul($7_1, $8_1, $3_1, $3_1 >> 31); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $6_1 | 0; $3_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = $5_1; $5_1 = $3_1; $3_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = $3_1; $8_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $3_1 = __wasm_i64_mul($6_1, $8_1, $3_1, $3_1 >> 31); $11_1 = i64toi32_i32$HIGH_BITS; $6_1 = $2_1; $8_1 = $4_1; $10_1 = $7_1; $2_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 8 >> 2]; $4_1 = __wasm_i64_mul($4_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $4_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $11_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = $3_1 << 1 | $2_1 >>> 31; $7_1 = $2_1 << 1; $2_1 = $10_1 + $7_1 | 0; $4_1 = $3_1 + $5_1 | 0; $4_1 = $2_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = $4_1 << 1 | $2_1 >>> 31; $4_1 = $2_1 << 1; $5_1 = $8_1 + $4_1 | 0; $2_1 = $3_1 + $9_1 | 0; HEAP322[$6_1 + 64 >> 2] = $5_1; HEAP322[$6_1 + 68 >> 2] = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $3_1 = __wasm_i64_mul($3_1, $5_1, $2_1, $2_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $3_1; $3_1 = HEAP322[$1_1 + 40 >> 2]; $5_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $6_1 = __wasm_i64_mul($5_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $2_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $5_1; $5_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = $5_1; $6_1 = $5_1 >> 31; $5_1 = HEAP322[$1_1 + 16 >> 2]; $4_1 = __wasm_i64_mul($4_1, $6_1, $5_1, $5_1 >> 31); $5_1 = $2_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $5_1; $5_1 = HEAP322[$1_1 + 64 >> 2]; $4_1 = $5_1; $6_1 = $5_1 >> 31; $5_1 = HEAP322[$1_1 + 8 >> 2]; $6_1 = __wasm_i64_mul($4_1, $6_1, $5_1, $5_1 >> 31); $5_1 = $2_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = HEAP322[$1_1 + 72 >> 2]; $2_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 >> 2]; $6_1 = __wasm_i64_mul($2_1, $6_1, $3_1, $3_1 >> 31); $5_1 = $6_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $0; HEAP322[$2_1 + 72 >> 2] = $5_1 << 1; HEAP322[$2_1 + 76 >> 2] = $3_1 << 1 | $5_1 >>> 31; $5_1 = $2_1; $2_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 32 >> 2]; $2_1 = __wasm_i64_mul($3_1, $4_1, $2_1, $2_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $7_1 = $2_1; $3_1 = HEAP322[$1_1 + 40 >> 2]; $2_1 = $3_1 >> 31; $6_1 = __wasm_i64_mul($3_1, $2_1, $3_1, $2_1); $3_1 = $7_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $3_1; $3_1 = HEAP322[$1_1 + 64 >> 2]; $6_1 = $3_1; $7_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 16 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $3_1, $3_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1; $4_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = HEAP322[$1_1 + 72 >> 2]; $6_1 = $3_1; $7_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $3_1 = __wasm_i64_mul($6_1, $7_1, $3_1, $3_1 >> 31); $6_1 = i64toi32_i32$HIGH_BITS; $7_1 = $2_1; $2_1 = HEAP322[$1_1 + 56 >> 2]; $8_1 = $2_1; $10_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $9_1 = __wasm_i64_mul($8_1, $10_1, $2_1, $2_1 >> 31); $2_1 = $9_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $6_1 | 0; $6_1 = $2_1; $2_1 = ($2_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $9_1 = $6_1 << 1; $6_1 = $7_1 + $9_1 | 0; $3_1 = $2_1 + $4_1 | 0; $2_1 = $6_1; HEAP322[$5_1 + 80 >> 2] = $2_1 << 1; HEAP322[$5_1 + 84 >> 2] = ($2_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $2_1 = HEAP322[$1_1 + 56 >> 2]; $3_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 32 >> 2]; $2_1 = __wasm_i64_mul($3_1, $4_1, $2_1, $2_1 >> 31); $3_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = HEAP322[$1_1 + 48 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 40 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $4_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = $2_1; $2_1 = HEAP322[$1_1 + 64 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 24 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $3_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $2_1 = HEAP322[$1_1 + 72 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 16 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1; HEAP322[$5_1 + 88 >> 2] = $3_1 << 1; HEAP322[$5_1 + 92 >> 2] = ($3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) << 1 | $3_1 >>> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $2_1 = $3_1 >> 31; $2_1 = __wasm_i64_mul($3_1, $2_1, $3_1, $2_1); $6_1 = i64toi32_i32$HIGH_BITS; $3_1 = HEAP322[$1_1 + 64 >> 2]; $5_1 = $3_1; $4_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = __wasm_i64_mul($5_1, $4_1, $3_1, $3_1 >> 31); $9_1 = i64toi32_i32$HIGH_BITS; $5_1 = HEAP322[$1_1 + 72 >> 2]; $4_1 = $5_1; $7_1 = $5_1 >> 31; $5_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = __wasm_i64_mul($4_1, $7_1, $5_1, $5_1 >> 31); $7_1 = i64toi32_i32$HIGH_BITS; $5_1 = $2_1; $8_1 = $3_1; $3_1 = $4_1; $2_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = $2_1; $10_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 40 >> 2]; $4_1 = __wasm_i64_mul($4_1, $10_1, $2_1, $2_1 >> 31); $2_1 = $3_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $7_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $2_1 = $3_1 << 1 | $2_1 >>> 31; $7_1 = $4_1 << 1; $4_1 = $8_1 + $7_1 | 0; $3_1 = $2_1 + $9_1 | 0; $2_1 = $4_1; $3_1 = ($2_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $9_1 = $2_1 << 1; $2_1 = $5_1 + $9_1 | 0; $4_1 = $3_1 + $6_1 | 0; $5_1 = $0; HEAP322[$5_1 + 96 >> 2] = $2_1; HEAP322[$5_1 + 100 >> 2] = $2_1 >>> 0 < $9_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = HEAP322[$1_1 + 64 >> 2]; $3_1 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 40 >> 2]; $2_1 = __wasm_i64_mul($3_1, $4_1, $2_1, $2_1 >> 31); $3_1 = i64toi32_i32$HIGH_BITS; $6_1 = $2_1; $2_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 48 >> 2]; $4_1 = __wasm_i64_mul($4_1, $7_1, $2_1, $2_1 >> 31); $2_1 = $6_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $2_1 = HEAP322[$1_1 + 72 >> 2]; $6_1 = $2_1; $7_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 32 >> 2]; $6_1 = __wasm_i64_mul($6_1, $7_1, $2_1, $2_1 >> 31); $4_1 = $4_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1; HEAP322[$5_1 + 104 >> 2] = $3_1 << 1; HEAP322[$5_1 + 108 >> 2] = ($3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) << 1 | $3_1 >>> 31; $2_1 = $5_1; $3_1 = HEAP322[$1_1 + 64 >> 2]; $5_1 = $3_1; $4_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = __wasm_i64_mul($5_1, $4_1, $3_1, $3_1 >> 31); $4_1 = i64toi32_i32$HIGH_BITS; $7_1 = $3_1; $5_1 = HEAP322[$1_1 + 56 >> 2]; $3_1 = $5_1 >> 31; $6_1 = __wasm_i64_mul($5_1, $3_1, $5_1, $3_1); $5_1 = $7_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = $5_1; $5_1 = $3_1; $4_1 = $2_1; $7_1 = $6_1; $2_1 = HEAP322[$1_1 + 72 >> 2]; $6_1 = $2_1; $8_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 40 >> 2]; $3_1 = $2_1 >> 31; $6_1 = __wasm_i64_mul($6_1, $8_1, ($2_1 & 2147483647) << 1, $3_1); $2_1 = $7_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; HEAP322[$4_1 + 112 >> 2] = $2_1 << 1; HEAP322[$4_1 + 116 >> 2] = ($2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $2_1 = HEAP322[$1_1 + 72 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 48 >> 2]; $3_1 = __wasm_i64_mul($3_1, $5_1, $2_1, $2_1 >> 31); $5_1 = i64toi32_i32$HIGH_BITS; $2_1 = $3_1; $3_1 = HEAP322[$1_1 + 64 >> 2]; $4_1 = $3_1; $6_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 56 >> 2]; $6_1 = __wasm_i64_mul($4_1, $6_1, $3_1, $3_1 >> 31); $3_1 = $2_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $2_1 = $0; HEAP322[$2_1 + 120 >> 2] = $3_1 << 1; HEAP322[$2_1 + 124 >> 2] = ($3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1) << 1 | $3_1 >>> 31; $2_1 = HEAP322[$1_1 + 72 >> 2]; $3_1 = $2_1; $5_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 56 >> 2]; $4_1 = $2_1 >> 30; $5_1 = __wasm_i64_mul($3_1, $5_1, ($2_1 & 1073741823) << 2, $4_1); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $5_1; $5_1 = HEAP322[$1_1 + 64 >> 2]; $3_1 = $5_1 >> 31; $6_1 = __wasm_i64_mul($5_1, $3_1, $5_1, $3_1); $5_1 = $2_1 + $6_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $0; HEAP322[$2_1 + 128 >> 2] = $5_1; HEAP322[$2_1 + 132 >> 2] = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $2_1; $2_1 = HEAP322[$1_1 + 72 >> 2]; $0 = $2_1; $4_1 = $2_1 >> 31; $2_1 = HEAP322[$1_1 + 64 >> 2]; $3_1 = $2_1 >> 31; HEAP322[$5_1 + 136 >> 2] = __wasm_i64_mul($0, $4_1, ($2_1 & 2147483647) << 1, $3_1); HEAP322[$5_1 + 140 >> 2] = i64toi32_i32$HIGH_BITS; $3_1 = HEAP322[$1_1 + 72 >> 2]; HEAP322[$5_1 + 144 >> 2] = __wasm_i64_mul(($3_1 & 2147483647) << 1, $3_1 >> 31, $3_1, $3_1 >> 31); HEAP322[$5_1 + 148 >> 2] = i64toi32_i32$HIGH_BITS; } function $27($0) { HEAP322[$0 >> 2] = 0; HEAP322[$0 + 4 >> 2] = 0; HEAP322[$0 + 32 >> 2] = 0; HEAP322[$0 + 36 >> 2] = 0; HEAP322[$0 + 24 >> 2] = 0; HEAP322[$0 + 28 >> 2] = 0; HEAP322[$0 + 16 >> 2] = 0; HEAP322[$0 + 20 >> 2] = 0; HEAP322[$0 + 8 >> 2] = 0; HEAP322[$0 + 12 >> 2] = 0; } function $28($0) { HEAP322[$0 + 4 >> 2] = 0; HEAP322[$0 + 8 >> 2] = 0; HEAP322[$0 >> 2] = 1; HEAP322[$0 + 12 >> 2] = 0; HEAP322[$0 + 16 >> 2] = 0; HEAP322[$0 + 20 >> 2] = 0; HEAP322[$0 + 24 >> 2] = 0; HEAP322[$0 + 28 >> 2] = 0; HEAP322[$0 + 32 >> 2] = 0; HEAP322[$0 + 36 >> 2] = 0; } function $29($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0; $3_1 = HEAP322[$2_1 >> 2]; $4_1 = HEAP322[$1_1 >> 2]; $5_1 = HEAP322[$2_1 + 4 >> 2]; $6_1 = HEAP322[$1_1 + 4 >> 2]; $7_1 = HEAP322[$2_1 + 8 >> 2]; $8_1 = HEAP322[$1_1 + 8 >> 2]; $9_1 = HEAP322[$2_1 + 12 >> 2]; $10_1 = HEAP322[$1_1 + 12 >> 2]; $11_1 = HEAP322[$2_1 + 16 >> 2]; $12_1 = HEAP322[$1_1 + 16 >> 2]; $13_1 = HEAP322[$2_1 + 20 >> 2]; $14_1 = HEAP322[$1_1 + 20 >> 2]; $15_1 = HEAP322[$2_1 + 24 >> 2]; $16_1 = HEAP322[$1_1 + 24 >> 2]; $17_1 = HEAP322[$2_1 + 28 >> 2]; $18_1 = HEAP322[$1_1 + 28 >> 2]; $19 = HEAP322[$2_1 + 32 >> 2]; $20_1 = HEAP322[$1_1 + 32 >> 2]; HEAP322[$0 + 36 >> 2] = HEAP322[$2_1 + 36 >> 2] + HEAP322[$1_1 + 36 >> 2]; HEAP322[$0 + 32 >> 2] = $19 + $20_1; HEAP322[$0 + 28 >> 2] = $17_1 + $18_1; HEAP322[$0 + 24 >> 2] = $15_1 + $16_1; HEAP322[$0 + 20 >> 2] = $13_1 + $14_1; HEAP322[$0 + 16 >> 2] = $11_1 + $12_1; HEAP322[$0 + 12 >> 2] = $9_1 + $10_1; HEAP322[$0 + 8 >> 2] = $7_1 + $8_1; HEAP322[$0 + 4 >> 2] = $5_1 + $6_1; HEAP322[$0 >> 2] = $3_1 + $4_1; } function $30($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0; $13_1 = HEAP322[$1_1 >> 2]; $3_1 = HEAP322[$0 >> 2]; $14_1 = HEAP322[$1_1 + 4 >> 2]; $4_1 = HEAP322[$0 + 4 >> 2]; $15_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = HEAP322[$0 + 8 >> 2]; $16_1 = HEAP322[$1_1 + 12 >> 2]; $6_1 = HEAP322[$0 + 12 >> 2]; $17_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = HEAP322[$0 + 16 >> 2]; $18_1 = HEAP322[$1_1 + 20 >> 2]; $8_1 = HEAP322[$0 + 20 >> 2]; $19 = HEAP322[$1_1 + 24 >> 2]; $9_1 = HEAP322[$0 + 24 >> 2]; $20_1 = HEAP322[$1_1 + 28 >> 2]; $10_1 = HEAP322[$0 + 28 >> 2]; $21_1 = HEAP322[$1_1 + 32 >> 2]; $11_1 = HEAP322[$0 + 32 >> 2]; $12_1 = HEAP322[$0 + 36 >> 2]; $22_1 = HEAP322[$1_1 + 36 >> 2] ^ $12_1; $1_1 = 0 - $2_1 | 0; HEAP322[$0 + 36 >> 2] = $12_1 ^ $22_1 & $1_1; HEAP322[$0 + 32 >> 2] = $1_1 & ($11_1 ^ $21_1) ^ $11_1; HEAP322[$0 + 28 >> 2] = $1_1 & ($10_1 ^ $20_1) ^ $10_1; HEAP322[$0 + 24 >> 2] = $1_1 & ($9_1 ^ $19) ^ $9_1; HEAP322[$0 + 20 >> 2] = $1_1 & ($8_1 ^ $18_1) ^ $8_1; HEAP322[$0 + 16 >> 2] = $1_1 & ($7_1 ^ $17_1) ^ $7_1; HEAP322[$0 + 12 >> 2] = $1_1 & ($6_1 ^ $16_1) ^ $6_1; HEAP322[$0 + 8 >> 2] = $1_1 & ($5_1 ^ $15_1) ^ $5_1; HEAP322[$0 + 4 >> 2] = $1_1 & ($4_1 ^ $14_1) ^ $4_1; HEAP322[$0 >> 2] = $1_1 & ($3_1 ^ $13_1) ^ $3_1; } function $31($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0; $2_1 = HEAP322[$1_1 >> 2]; $3_1 = HEAP322[$1_1 + 4 >> 2]; $4_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = HEAP322[$1_1 + 12 >> 2]; $6_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = HEAP322[$1_1 + 20 >> 2]; $8_1 = HEAP322[$1_1 + 24 >> 2]; $9_1 = HEAP322[$1_1 + 28 >> 2]; $10_1 = HEAP322[$1_1 + 36 >> 2]; HEAP322[$0 + 32 >> 2] = HEAP322[$1_1 + 32 >> 2]; HEAP322[$0 + 36 >> 2] = $10_1; HEAP322[$0 + 24 >> 2] = $8_1; HEAP322[$0 + 28 >> 2] = $9_1; HEAP322[$0 + 16 >> 2] = $6_1; HEAP322[$0 + 20 >> 2] = $7_1; HEAP322[$0 + 8 >> 2] = $4_1; HEAP322[$0 + 12 >> 2] = $5_1; HEAP322[$0 >> 2] = $2_1; HEAP322[$0 + 4 >> 2] = $3_1; } function $32($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0; $13_1 = $33($1_1); $14_1 = i64toi32_i32$HIGH_BITS; $12_1 = $34($1_1 + 4 | 0); $2_1 = i64toi32_i32$HIGH_BITS; $9_1 = $34($1_1 + 7 | 0); $4_1 = i64toi32_i32$HIGH_BITS; $11_1 = $34($1_1 + 10 | 0); $3_1 = i64toi32_i32$HIGH_BITS; $15_1 = $34($1_1 + 13 | 0); $8_1 = i64toi32_i32$HIGH_BITS; $5_1 = $33($1_1 + 16 | 0); $10_1 = i64toi32_i32$HIGH_BITS; $16_1 = $34($1_1 + 20 | 0); $17_1 = i64toi32_i32$HIGH_BITS; $18_1 = $34($1_1 + 23 | 0); $19 = i64toi32_i32$HIGH_BITS; $20_1 = $34($1_1 + 26 | 0); $21_1 = i64toi32_i32$HIGH_BITS; $22_1 = $34($1_1 + 29 | 0); $6_1 = $0; $1_1 = $3_1 << 3 | $11_1 >>> 29; $3_1 = $11_1 << 3; $23_1 = $3_1; $3_1 = $3_1 + 16777216 | 0; if ($3_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $11_1 = $3_1; $3_1 = $1_1; $1_1 = $4_1 << 5 | $9_1 >>> 27; $7_1 = $9_1 << 5; $4_1 = $1_1; $9_1 = $12_1; $1_1 = $2_1 << 6 | $9_1 >>> 26; $9_1 = $9_1 << 6; $24_1 = $6_1; $6_1 = $7_1; $2_1 = $1_1; $1_1 = $9_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $12_1 = $1_1; $7_1 = $1_1; $1_1 = $2_1 >> 25; $7_1 = ($2_1 & 33554431) << 7 | $7_1 >>> 25; $2_1 = $6_1 + $7_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $2_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $2_1 + 33554432 | 0; if ($4_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $6_1 = ($23_1 - ($11_1 & -33554432) | 0) + (($1_1 & 67108863) << 6 | $4_1 >>> 26) | 0; HEAP322[$24_1 + 12 >> 2] = $6_1; $1_1 = $4_1 & -67108864; HEAP322[$0 + 8 >> 2] = $2_1 - $1_1; $2_1 = $0; $4_1 = $5_1; $1_1 = $10_1; $5_1 = $4_1 + 16777216 | 0; if ($5_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $10_1 = $5_1; $5_1 = $1_1; $6_1 = $4_1 - ($10_1 & -33554432) | 0; $4_1 = $15_1; $1_1 = $8_1 << 2 | $4_1 >>> 30; $8_1 = $4_1 << 2; $4_1 = $1_1; $7_1 = $8_1; $1_1 = $3_1 >> 25; $8_1 = ($3_1 & 33554431) << 7 | $11_1 >>> 25; $3_1 = $7_1 + $8_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $7_1 = $2_1; $2_1 = $1_1; $1_1 = $3_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $4_1 = (($2_1 & 67108863) << 6 | $1_1 >>> 26) + $6_1 | 0; HEAP322[$7_1 + 20 >> 2] = $4_1; $1_1 = $1_1 & -67108864; HEAP322[$0 + 16 >> 2] = $3_1 - $1_1; $3_1 = $0; $2_1 = $16_1; $1_1 = $17_1 << 7 | $2_1 >>> 25; $6_1 = $2_1 << 7; $2_1 = $5_1 >> 25; $4_1 = ($5_1 & 33554431) << 7 | $10_1 >>> 25; $5_1 = $6_1 + $4_1 | 0; $1_1 = $1_1 + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $5_1; $5_1 = $2_1; $2_1 = $2_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $4_1 = $2_1; $2_1 = $1_1; $1_1 = $4_1 & -67108864; HEAP322[$3_1 + 24 >> 2] = $5_1 - $1_1; $5_1 = $0; $3_1 = $18_1; $1_1 = $19 << 5 | $3_1 >>> 27; $3_1 = $3_1 << 5; $10_1 = $3_1; $3_1 = $3_1 + 16777216 | 0; if ($3_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $8_1 = $3_1; $3_1 = $1_1; $2_1 = ($10_1 - ($8_1 & -33554432) | 0) + (($2_1 & 67108863) << 6 | $4_1 >>> 26) | 0; HEAP322[$5_1 + 28 >> 2] = $2_1; $2_1 = $20_1; $1_1 = $21_1 << 4 | $2_1 >>> 28; $4_1 = $2_1 << 4; $2_1 = $1_1; $6_1 = $4_1; $1_1 = $3_1 >> 25; $4_1 = ($3_1 & 33554431) << 7 | $8_1 >>> 25; $3_1 = $6_1 + $4_1 | 0; $1_1 = $1_1 + $2_1 | 0; $1_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $3_1; $3_1 = $2_1; $2_1 = $2_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $4_1 = $2_1; $2_1 = $1_1; $1_1 = $4_1 & -67108864; HEAP322[$5_1 + 32 >> 2] = $3_1 - $1_1; $1_1 = 0; $5_1 = $22_1; $5_1 = $5_1 << 2 & 33554428; $3_1 = $5_1; $5_1 = $5_1 + 16777216 | 0; if ($5_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $3_1 = ($3_1 - ($5_1 & 33554432) | 0) + (($2_1 & 67108863) << 6 | $4_1 >>> 26) | 0; HEAP322[$0 + 36 >> 2] = $3_1; $5_1 = __wasm_i64_mul(($1_1 & 33554431) << 7 | $5_1 >>> 25, $1_1 >>> 25 | 0, 19, 0); $2_1 = $5_1 + $13_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $14_1 | 0; $1_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $2_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $5_1 = ($9_1 - ($12_1 & -33554432) | 0) + (($1_1 & 67108863) << 6 | $3_1 >>> 26) | 0; HEAP322[$0 + 4 >> 2] = $5_1; $1_1 = $0; $0 = $3_1 & -67108864; HEAP322[$1_1 >> 2] = $2_1 - $0; } function $33($0) { i64toi32_i32$HIGH_BITS = 0; return HEAPU82[$0 | 0] | HEAPU82[$0 + 1 | 0] << 8 | (HEAPU82[$0 + 2 | 0] << 16 | HEAPU82[$0 + 3 | 0] << 24); } function $34($0) { var $1_1 = 0, $2_1 = 0; $1_1 = HEAPU82[$0 | 0] | HEAPU82[$0 + 1 | 0] << 8; $0 = HEAPU82[$0 + 2 | 0]; $2_1 = $0 >>> 16 | 0; $0 = $1_1 | $0 << 16; i64toi32_i32$HIGH_BITS = $2_1; return $0; } function $35($0, $1_1) { var $2_1 = 0; $2_1 = global$0 - 192 | 0; global$0 = $2_1; $42($2_1 + 144 | 0, $1_1); $42($2_1 + 96 | 0, $2_1 + 144 | 0); $42($2_1 + 96 | 0, $2_1 + 96 | 0); $38($2_1 + 96 | 0, $1_1, $2_1 + 96 | 0); $38($2_1 + 144 | 0, $2_1 + 144 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 144 | 0); $38($2_1 + 96 | 0, $2_1 + 96 | 0, $2_1 + 48 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $1_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 5) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $1_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 10) { continue; } break; } $38($2_1 + 48 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1, $2_1 + 48 | 0); $1_1 = 1; while (1) { $42($2_1, $2_1); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 20) { continue; } break; } $38($2_1 + 48 | 0, $2_1, $2_1 + 48 | 0); $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 10) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $1_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 50) { continue; } break; } $38($2_1 + 48 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1, $2_1 + 48 | 0); $1_1 = 1; while (1) { $42($2_1, $2_1); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 100) { continue; } break; } $38($2_1 + 48 | 0, $2_1, $2_1 + 48 | 0); $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 50) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 96 | 0, $2_1 + 96 | 0); $1_1 = 1; while (1) { $42($2_1 + 96 | 0, $2_1 + 96 | 0); $1_1 = $1_1 + 1 | 0; if (($1_1 | 0) != 5) { continue; } break; } $38($0, $2_1 + 96 | 0, $2_1 + 144 | 0); global$0 = $2_1 + 192 | 0; } function $36($0) { var $1_1 = 0; $1_1 = global$0 - 32 | 0; global$0 = $1_1; $44($1_1, $0); global$0 = $1_1 + 32 | 0; return HEAP82[$1_1 | 0] & 1; } function $37($0) { var $1_1 = 0; $1_1 = global$0 - 32 | 0; global$0 = $1_1; $44($1_1, $0); $0 = $2($1_1, 1024); global$0 = $1_1 + 32 | 0; return $0; } function $38($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, $52_1 = 0, $53 = 0, $54_1 = 0, $55 = 0, $56_1 = 0, $57_1 = 0, $58_1 = 0, $59_1 = 0, $60 = 0, $61_1 = 0, $62_1 = 0, $63 = 0, $64_1 = 0, $65_1 = 0, $66_1 = 0, $67_1 = 0, $68_1 = 0, $69_1 = 0, $70_1 = 0, $71_1 = 0, $72_1 = 0, $73_1 = 0, $74 = 0, $75_1 = 0, $76_1 = 0, $77 = 0, $78_1 = 0, $79_1 = 0, $80_1 = 0, $81_1 = 0; $9_1 = $0; $41_1 = HEAP322[$2_1 + 4 >> 2]; $3_1 = $41_1; $30_1 = $3_1; $31_1 = $3_1 >> 31; $17_1 = HEAP322[$1_1 + 20 >> 2]; $3_1 = $17_1 << 1; $64_1 = $3_1; $48_1 = $3_1 >> 31; $3_1 = __wasm_i64_mul($30_1, $31_1, $3_1, $48_1); $5_1 = i64toi32_i32$HIGH_BITS; $4_1 = $3_1; $3_1 = HEAP322[$2_1 >> 2]; $23_1 = $3_1; $24_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 24 >> 2]; $32_1 = $3_1; $25_1 = $3_1 >> 31; $7_1 = __wasm_i64_mul($23_1, $24_1, $3_1, $25_1); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $8_1 = HEAP322[$2_1 + 8 >> 2]; $4_1 = $8_1; $49_1 = $4_1; $39_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 + 16 >> 2]; $33_1 = $4_1; $26_1 = $4_1 >> 31; $7_1 = __wasm_i64_mul($8_1, $39_1, $4_1, $26_1); $4_1 = $5_1 + $7_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $19 = HEAP322[$2_1 + 12 >> 2]; $3_1 = $19; $65_1 = $3_1; $42_1 = $3_1 >> 31; $14_1 = HEAP322[$1_1 + 12 >> 2]; $3_1 = $14_1 << 1; $66_1 = $3_1; $50_1 = $3_1 >> 31; $7_1 = __wasm_i64_mul($19, $42_1, $3_1, $50_1); $3_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $3_1; $18_1 = HEAP322[$2_1 + 16 >> 2]; $3_1 = $18_1; $73_1 = $3_1; $46_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 8 >> 2]; $34_1 = $3_1; $27_1 = $3_1 >> 31; $7_1 = __wasm_i64_mul($18_1, $46_1, $3_1, $27_1); $5_1 = $5_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = $5_1; $12_1 = HEAP322[$2_1 + 20 >> 2]; $4_1 = $12_1; $74 = $4_1; $51_1 = $4_1 >> 31; $10_1 = HEAP322[$1_1 + 4 >> 2]; $4_1 = $10_1 << 1; $67_1 = $4_1; $52_1 = $4_1 >> 31; $5_1 = __wasm_i64_mul($12_1, $51_1, $4_1, $52_1); $4_1 = $6_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $13_1 = HEAP322[$2_1 + 24 >> 2]; $4_1 = $13_1; $75_1 = $4_1; $68_1 = $4_1 >> 31; $4_1 = HEAP322[$1_1 >> 2]; $35_1 = $4_1; $28_1 = $4_1 >> 31; $7_1 = __wasm_i64_mul($13_1, $68_1, $4_1, $28_1); $5_1 = $5_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $20_1 = HEAP322[$2_1 + 28 >> 2]; $3_1 = Math_imul2($20_1, 19); $43_1 = $3_1; $44_1 = $3_1 >> 31; $15_1 = HEAP322[$1_1 + 36 >> 2]; $3_1 = $15_1 << 1; $69_1 = $3_1; $53 = $3_1 >> 31; $7_1 = __wasm_i64_mul($43_1, $44_1, $3_1, $53); $3_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = $3_1; $16_1 = HEAP322[$2_1 + 32 >> 2]; $3_1 = Math_imul2($16_1, 19); $21_1 = $3_1; $22_1 = $3_1 >> 31; $3_1 = HEAP322[$1_1 + 32 >> 2]; $36_1 = $3_1; $29_1 = $3_1 >> 31; $7_1 = __wasm_i64_mul($21_1, $22_1, $3_1, $29_1); $4_1 = $4_1 + $7_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $76_1 = HEAP322[$2_1 + 36 >> 2]; $2_1 = Math_imul2($76_1, 19); $37_1 = $2_1; $38_1 = $2_1 >> 31; $1_1 = HEAP322[$1_1 + 28 >> 2]; $2_1 = $1_1 << 1; $70_1 = $2_1; $54_1 = $2_1 >> 31; $4_1 = __wasm_i64_mul($37_1, $38_1, $2_1, $54_1); $2_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $11_1 = $2_1; $2_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = __wasm_i64_mul($33_1, $26_1, $30_1, $31_1); $4_1 = i64toi32_i32$HIGH_BITS; $7_1 = $17_1; $55 = $7_1 >> 31; $17_1 = __wasm_i64_mul($23_1, $24_1, $7_1, $55); $3_1 = $17_1 + $3_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $17_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $17_1 = $14_1; $56_1 = $14_1 >> 31; $14_1 = __wasm_i64_mul($8_1, $39_1, $14_1, $56_1); $3_1 = $14_1 + $3_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $14_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $14_1 = __wasm_i64_mul($34_1, $27_1, $19, $42_1); $5_1 = $14_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $14_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $5_1; $14_1 = $10_1; $57_1 = $10_1 >> 31; $5_1 = __wasm_i64_mul($18_1, $46_1, $10_1, $57_1); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($35_1, $28_1, $12_1, $51_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = Math_imul2($13_1, 19); $58_1 = $4_1; $47_1 = $4_1 >> 31; $10_1 = $15_1; $59_1 = $10_1 >> 31; $15_1 = __wasm_i64_mul($4_1, $47_1, $10_1, $59_1); $4_1 = $5_1 + $15_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $15_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $15_1 = __wasm_i64_mul($36_1, $29_1, $43_1, $44_1); $3_1 = $15_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $15_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $15_1 = $1_1; $60 = $1_1 >> 31; $5_1 = __wasm_i64_mul($21_1, $22_1, $1_1, $60); $1_1 = $5_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = __wasm_i64_mul($37_1, $38_1, $32_1, $25_1); $1_1 = $4_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $45_1 = $1_1; $1_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = __wasm_i64_mul($30_1, $31_1, $66_1, $50_1); $5_1 = i64toi32_i32$HIGH_BITS; $13_1 = __wasm_i64_mul($23_1, $24_1, $33_1, $26_1); $4_1 = $13_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $13_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $13_1 = __wasm_i64_mul($34_1, $27_1, $8_1, $39_1); $4_1 = $13_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $13_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $13_1 = __wasm_i64_mul($19, $42_1, $67_1, $52_1); $3_1 = $13_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $13_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $13_1 = __wasm_i64_mul($35_1, $28_1, $18_1, $46_1); $5_1 = $13_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $13_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = $5_1; $4_1 = Math_imul2($12_1, 19); $71_1 = $4_1; $61_1 = $4_1 >> 31; $5_1 = __wasm_i64_mul($4_1, $61_1, $69_1, $53); $4_1 = $6_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($36_1, $29_1, $58_1, $47_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $12_1 = __wasm_i64_mul($43_1, $44_1, $70_1, $54_1); $4_1 = $12_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $12_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $12_1 = __wasm_i64_mul($21_1, $22_1, $32_1, $25_1); $3_1 = $12_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $12_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $12_1 = __wasm_i64_mul($37_1, $38_1, $64_1, $48_1); $5_1 = $12_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $12_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $12_1 = $5_1; $78_1 = $3_1; $4_1 = $5_1 + 33554432 | 0; if ($4_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $13_1 = $4_1; $79_1 = $3_1; $5_1 = $45_1; $45_1 = ($3_1 & 67108863) << 6 | $4_1 >>> 26; $5_1 = $5_1 + $45_1 | 0; $3_1 = ($3_1 >> 26) + $1_1 | 0; $3_1 = $5_1 >>> 0 < $45_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $45_1 = $5_1; $5_1 = $3_1; $1_1 = $45_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $5_1 = $5_1 + 1 | 0; } $80_1 = $1_1; $4_1 = $5_1 >> 25; $5_1 = ($5_1 & 33554431) << 7 | $1_1 >>> 25; $1_1 = $5_1 + $11_1 | 0; $3_1 = $2_1 + $4_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $1_1 = $2_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $62_1 = $1_1; $1_1 = $3_1; $3_1 = $62_1 & -67108864; HEAP322[$9_1 + 24 >> 2] = $2_1 - $3_1; $11_1 = $0; $2_1 = __wasm_i64_mul($30_1, $31_1, $67_1, $52_1); $3_1 = i64toi32_i32$HIGH_BITS; $4_1 = __wasm_i64_mul($23_1, $24_1, $34_1, $27_1); $2_1 = $4_1 + $2_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = __wasm_i64_mul($35_1, $28_1, $49_1, $39_1); $2_1 = $4_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $2_1; $2_1 = Math_imul2($19, 19); $9_1 = $2_1; $19 = $2_1 >> 31; $4_1 = __wasm_i64_mul($2_1, $19, $69_1, $53); $2_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $2_1 = Math_imul2($18_1, 19); $77 = $2_1; $72_1 = $2_1 >> 31; $5_1 = __wasm_i64_mul($36_1, $29_1, $2_1, $72_1); $2_1 = $4_1 + $5_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = __wasm_i64_mul($70_1, $54_1, $71_1, $61_1); $2_1 = $5_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = __wasm_i64_mul($32_1, $25_1, $58_1, $47_1); $2_1 = $4_1 + $2_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $4_1 = __wasm_i64_mul($43_1, $44_1, $64_1, $48_1); $2_1 = $4_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = __wasm_i64_mul($21_1, $22_1, $33_1, $26_1); $2_1 = $4_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($37_1, $38_1, $66_1, $50_1); $2_1 = $5_1 + $2_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $6_1 = $2_1; $2_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = __wasm_i64_mul($35_1, $28_1, $30_1, $31_1); $5_1 = i64toi32_i32$HIGH_BITS; $18_1 = __wasm_i64_mul($23_1, $24_1, $14_1, $57_1); $4_1 = $18_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $18_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = $4_1; $4_1 = Math_imul2($8_1, 19); $18_1 = $4_1; $40_1 = $4_1 >> 31; $8_1 = __wasm_i64_mul($4_1, $40_1, $10_1, $59_1); $4_1 = $5_1 + $8_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $8_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = __wasm_i64_mul($36_1, $29_1, $9_1, $19); $4_1 = $8_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $8_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($77, $72_1, $15_1, $60); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $8_1 = __wasm_i64_mul($32_1, $25_1, $71_1, $61_1); $5_1 = $8_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $8_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $8_1 = __wasm_i64_mul($58_1, $47_1, $7_1, $55); $5_1 = $8_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $8_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $8_1 = __wasm_i64_mul($33_1, $26_1, $43_1, $44_1); $4_1 = $8_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $8_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $8_1 = __wasm_i64_mul($21_1, $22_1, $17_1, $56_1); $4_1 = $8_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $8_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($37_1, $38_1, $34_1, $27_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $63 = $4_1; $8_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $3_1 = Math_imul2($41_1, 19); $3_1 = __wasm_i64_mul($3_1, $3_1 >> 31, $69_1, $53); $4_1 = i64toi32_i32$HIGH_BITS; $5_1 = __wasm_i64_mul($23_1, $24_1, $35_1, $28_1); $3_1 = $5_1 + $3_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $41_1 = __wasm_i64_mul($36_1, $29_1, $18_1, $40_1); $5_1 = $41_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $9_1 = __wasm_i64_mul($9_1, $19, $70_1, $54_1); $4_1 = $9_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + ($5_1 >>> 0 < $41_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) | 0; $5_1 = $4_1 >>> 0 < $9_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $9_1 = __wasm_i64_mul($32_1, $25_1, $77, $72_1); $4_1 = $9_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($64_1, $48_1, $71_1, $61_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = __wasm_i64_mul($33_1, $26_1, $58_1, $47_1); $5_1 = $9_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $9_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $9_1 = __wasm_i64_mul($43_1, $44_1, $66_1, $50_1); $5_1 = $9_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = __wasm_i64_mul($21_1, $22_1, $34_1, $27_1); $4_1 = $9_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $9_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $9_1 = __wasm_i64_mul($37_1, $38_1, $67_1, $52_1); $4_1 = $9_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = $4_1; $41_1 = $3_1; $4_1 = $4_1 + 33554432 | 0; if ($4_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $19 = $4_1; $18_1 = $3_1; $5_1 = $3_1 >> 26; $40_1 = ($3_1 & 67108863) << 6 | $4_1 >>> 26; $3_1 = $40_1 + $63 | 0; $4_1 = $5_1 + $8_1 | 0; $8_1 = $3_1; $5_1 = $6_1; $3_1 = $3_1 >>> 0 < $40_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $4_1 = $8_1 + 16777216 | 0; if ($4_1 >>> 0 < 16777216) { $3_1 = $3_1 + 1 | 0; } $81_1 = $4_1; $6_1 = ($3_1 & 33554431) << 7 | $4_1 >>> 25; $4_1 = $5_1 + $6_1 | 0; $3_1 = ($3_1 >> 25) + $2_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $4_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $40_1 = $2_1; $2_1 = $3_1; $3_1 = $40_1 & -67108864; HEAP322[$11_1 + 8 >> 2] = $4_1 - $3_1; $6_1 = $0; $3_1 = __wasm_i64_mul($32_1, $25_1, $30_1, $31_1); $5_1 = i64toi32_i32$HIGH_BITS; $11_1 = __wasm_i64_mul($23_1, $24_1, $15_1, $60); $4_1 = $11_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $11_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($49_1, $39_1, $7_1, $55); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($33_1, $26_1, $65_1, $42_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $11_1 = __wasm_i64_mul($73_1, $46_1, $17_1, $56_1); $4_1 = $11_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $11_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $11_1 = __wasm_i64_mul($34_1, $27_1, $74, $51_1); $3_1 = $11_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $11_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $11_1 = __wasm_i64_mul($14_1, $57_1, $75_1, $68_1); $5_1 = $11_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $11_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $5_1; $11_1 = $20_1; $63 = $11_1 >> 31; $5_1 = __wasm_i64_mul($35_1, $28_1, $11_1, $63); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($21_1, $22_1, $10_1, $59_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $20_1 = __wasm_i64_mul($37_1, $38_1, $36_1, $29_1); $4_1 = $20_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $20_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $3_1 = $1_1 >> 26; $20_1 = ($1_1 & 67108863) << 6 | $62_1 >>> 26; $1_1 = $20_1 + $4_1 | 0; $4_1 = $3_1 + $5_1 | 0; $4_1 = $1_1 >>> 0 < $20_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $5_1 = $1_1; $3_1 = $4_1; $1_1 = $5_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $3_1 = $3_1 + 1 | 0; } $62_1 = $1_1; $1_1 = $3_1; $3_1 = $62_1 & -33554432; HEAP322[$6_1 + 28 >> 2] = $5_1 - $3_1; $20_1 = $0; $3_1 = __wasm_i64_mul($34_1, $27_1, $30_1, $31_1); $4_1 = i64toi32_i32$HIGH_BITS; $6_1 = __wasm_i64_mul($23_1, $24_1, $17_1, $56_1); $3_1 = $6_1 + $3_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = __wasm_i64_mul($49_1, $39_1, $14_1, $57_1); $3_1 = $6_1 + $3_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $6_1 = __wasm_i64_mul($35_1, $28_1, $65_1, $42_1); $5_1 = $6_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $5_1; $5_1 = __wasm_i64_mul($77, $72_1, $10_1, $59_1); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($36_1, $29_1, $71_1, $61_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = __wasm_i64_mul($58_1, $47_1, $15_1, $60); $4_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = __wasm_i64_mul($32_1, $25_1, $43_1, $44_1); $3_1 = $6_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $6_1 = __wasm_i64_mul($21_1, $22_1, $7_1, $55); $5_1 = $6_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $5_1; $5_1 = __wasm_i64_mul($37_1, $38_1, $33_1, $26_1); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = $4_1; $4_1 = $2_1 >> 26; $5_1 = ($2_1 & 67108863) << 6 | $40_1 >>> 26; $2_1 = $6_1 + $5_1 | 0; $3_1 = $3_1 + $4_1 | 0; $3_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1; $5_1 = $3_1; $2_1 = $4_1 + 16777216 | 0; if ($2_1 >>> 0 < 16777216) { $5_1 = $5_1 + 1 | 0; } $21_1 = $2_1; $2_1 = $5_1; $3_1 = $21_1 & -33554432; HEAP322[$20_1 + 12 >> 2] = $4_1 - $3_1; $3_1 = __wasm_i64_mul($30_1, $31_1, $70_1, $54_1); $5_1 = i64toi32_i32$HIGH_BITS; $6_1 = __wasm_i64_mul($23_1, $24_1, $36_1, $29_1); $4_1 = $6_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($32_1, $25_1, $49_1, $39_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = __wasm_i64_mul($65_1, $42_1, $64_1, $48_1); $4_1 = $6_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $6_1 = __wasm_i64_mul($33_1, $26_1, $73_1, $46_1); $3_1 = $6_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $6_1 = __wasm_i64_mul($66_1, $50_1, $74, $51_1); $5_1 = $6_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $3_1 = $5_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $5_1; $5_1 = __wasm_i64_mul($34_1, $27_1, $75_1, $68_1); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($11_1, $63, $67_1, $52_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = $16_1; $22_1 = $6_1 >> 31; $16_1 = __wasm_i64_mul($35_1, $28_1, $6_1, $22_1); $4_1 = $16_1 + $4_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $5_1 = $4_1 >>> 0 < $16_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $16_1 = __wasm_i64_mul($37_1, $38_1, $69_1, $53); $3_1 = $16_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $4_1 = $3_1 >>> 0 < $16_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $16_1 = $3_1; $3_1 = $1_1 >> 25; $5_1 = ($1_1 & 33554431) << 7 | $62_1 >>> 25; $1_1 = $16_1 + $5_1 | 0; $3_1 = $3_1 + $4_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $1_1; $1_1 = $4_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $16_1 = $1_1; $1_1 = $3_1; $3_1 = $16_1 & -67108864; HEAP322[$20_1 + 32 >> 2] = $4_1 - $3_1; $3_1 = $13_1 & -67108864; $4_1 = $12_1 - $3_1 | 0; $3_1 = $78_1 - (($12_1 >>> 0 < $3_1 >>> 0) + $79_1 | 0) | 0; $5_1 = $4_1; $4_1 = $2_1 >> 25; $12_1 = ($2_1 & 33554431) << 7 | $21_1 >>> 25; $2_1 = $5_1 + $12_1 | 0; $3_1 = $3_1 + $4_1 | 0; $3_1 = $2_1 >>> 0 < $12_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $2_1 + 33554432 | 0; if ($4_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $5_1 = ($45_1 - ($80_1 & -33554432) | 0) + (($3_1 & 67108863) << 6 | $4_1 >>> 26) | 0; HEAP322[$0 + 20 >> 2] = $5_1; $3_1 = $4_1 & -67108864; HEAP322[$0 + 16 >> 2] = $2_1 - $3_1; $3_1 = __wasm_i64_mul($36_1, $29_1, $30_1, $31_1); $5_1 = i64toi32_i32$HIGH_BITS; $10_1 = __wasm_i64_mul($23_1, $24_1, $10_1, $59_1); $4_1 = $10_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $10_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $10_1 = __wasm_i64_mul($49_1, $39_1, $15_1, $60); $5_1 = $10_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $10_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $10_1 = __wasm_i64_mul($32_1, $25_1, $65_1, $42_1); $3_1 = $10_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $7_1 = __wasm_i64_mul($73_1, $46_1, $7_1, $55); $4_1 = $7_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + ($3_1 >>> 0 < $10_1 >>> 0 ? $5_1 + 1 | 0 : $5_1) | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($33_1, $26_1, $74, $51_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($17_1, $56_1, $75_1, $68_1); $4_1 = $5_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = __wasm_i64_mul($34_1, $27_1, $11_1, $63); $5_1 = $7_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $5_1 >>> 0 < $7_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $7_1 = __wasm_i64_mul($6_1, $22_1, $14_1, $57_1); $3_1 = $7_1 + $5_1 | 0; $5_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $5_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $5_1 + 1 | 0 : $5_1; $7_1 = __wasm_i64_mul($35_1, $28_1, $76_1, $76_1 >> 31); $4_1 = $7_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $5_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $4_1; $4_1 = $1_1 >> 26; $5_1 = ($1_1 & 67108863) << 6 | $16_1 >>> 26; $1_1 = $2_1 + $5_1 | 0; $3_1 = $3_1 + $4_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $5_1 = $2_1; $1_1 = $2_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $3_1 = $3_1 + 1 | 0; } $4_1 = $1_1; $1_1 = $4_1 & -33554432; HEAP322[$0 + 36 >> 2] = $2_1 - $1_1; $2_1 = $0; $5_1 = $8_1 - ($81_1 & -33554432) | 0; $1_1 = $19 & -67108864; $7_1 = $9_1 - $1_1 | 0; $17_1 = $41_1 - (($9_1 >>> 0 < $1_1 >>> 0) + $18_1 | 0) | 0; $1_1 = $3_1; $3_1 = $3_1 >> 25; $3_1 = __wasm_i64_mul(($1_1 & 33554431) << 7 | $4_1 >>> 25, $3_1, 19, 0); $1_1 = $3_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $17_1 | 0; $4_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $6_1 = $2_1; $3_1 = $4_1; $2_1 = $1_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $4_1 = $2_1; $4_1 = (($3_1 & 67108863) << 6 | $4_1 >>> 26) + $5_1 | 0; HEAP322[$6_1 + 4 >> 2] = $4_1; $4_1 = $0; $0 = $2_1 & -67108864; HEAP322[$4_1 >> 2] = $1_1 - $0; } function $39($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0; $2_1 = HEAP322[$1_1 >> 2]; $3_1 = HEAP322[$1_1 + 4 >> 2]; $4_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = HEAP322[$1_1 + 12 >> 2]; $6_1 = HEAP322[$1_1 + 16 >> 2]; $7_1 = HEAP322[$1_1 + 20 >> 2]; $8_1 = HEAP322[$1_1 + 24 >> 2]; $9_1 = HEAP322[$1_1 + 28 >> 2]; $10_1 = HEAP322[$1_1 + 32 >> 2]; HEAP322[$0 + 36 >> 2] = 0 - HEAP322[$1_1 + 36 >> 2]; HEAP322[$0 + 32 >> 2] = 0 - $10_1; HEAP322[$0 + 28 >> 2] = 0 - $9_1; HEAP322[$0 + 24 >> 2] = 0 - $8_1; HEAP322[$0 + 20 >> 2] = 0 - $7_1; HEAP322[$0 + 16 >> 2] = 0 - $6_1; HEAP322[$0 + 12 >> 2] = 0 - $5_1; HEAP322[$0 + 8 >> 2] = 0 - $4_1; HEAP322[$0 + 4 >> 2] = 0 - $3_1; HEAP322[$0 >> 2] = 0 - $2_1; } function $40($0, $1_1) { var $2_1 = 0, $3_1 = 0; $2_1 = global$0 - 144 | 0; global$0 = $2_1; $42($2_1 + 96 | 0, $1_1); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 48 | 0); $38($2_1 + 48 | 0, $1_1, $2_1 + 48 | 0); $38($2_1 + 96 | 0, $2_1 + 96 | 0, $2_1 + 48 | 0); $42($2_1 + 96 | 0, $2_1 + 96 | 0); $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $3_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 5) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $3_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 10) { continue; } break; } $38($2_1 + 48 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1, $2_1 + 48 | 0); $3_1 = 1; while (1) { $42($2_1, $2_1); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 20) { continue; } break; } $38($2_1 + 48 | 0, $2_1, $2_1 + 48 | 0); $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 10) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 48 | 0, $2_1 + 96 | 0); $3_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 50) { continue; } break; } $38($2_1 + 48 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1, $2_1 + 48 | 0); $3_1 = 1; while (1) { $42($2_1, $2_1); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 100) { continue; } break; } $38($2_1 + 48 | 0, $2_1, $2_1 + 48 | 0); $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = 1; while (1) { $42($2_1 + 48 | 0, $2_1 + 48 | 0); $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 50) { continue; } break; } $38($2_1 + 96 | 0, $2_1 + 48 | 0, $2_1 + 96 | 0); $42($2_1 + 96 | 0, $2_1 + 96 | 0); $42($2_1 + 96 | 0, $2_1 + 96 | 0); $38($0, $2_1 + 96 | 0, $1_1); global$0 = $2_1 + 144 | 0; } function $41($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, $52_1 = 0, $53 = 0, $54_1 = 0, $55 = 0, $56_1 = 0, $57_1 = 0, $58_1 = 0, $59_1 = 0; $42_1 = $0; $6_1 = HEAP322[$1_1 + 12 >> 2]; $2_1 = $6_1 << 1; $17_1 = $2_1; $18_1 = $2_1 >> 31; $10_1 = HEAP322[$1_1 + 4 >> 2]; $2_1 = $10_1 << 1; $19 = $2_1; $14_1 = $2_1 >> 31; $2_1 = __wasm_i64_mul($17_1, $18_1, $2_1, $14_1); $4_1 = i64toi32_i32$HIGH_BITS; $3_1 = $2_1; $28_1 = HEAP322[$1_1 + 8 >> 2]; $2_1 = $28_1; $13_1 = $2_1 >> 31; $43_1 = $2_1; $5_1 = __wasm_i64_mul($2_1, $13_1, $2_1, $13_1); $3_1 = $3_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $5_1 = $3_1; $35_1 = HEAP322[$1_1 + 16 >> 2]; $3_1 = $35_1; $20_1 = $3_1; $21_1 = $3_1 >> 31; $36_1 = HEAP322[$1_1 >> 2]; $3_1 = $36_1 << 1; $22_1 = $3_1; $15_1 = $3_1 >> 31; $4_1 = __wasm_i64_mul($20_1, $21_1, $3_1, $15_1); $3_1 = $5_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $8_1 = $3_1; $4_1 = HEAP322[$1_1 + 28 >> 2]; $3_1 = Math_imul2($4_1, 38); $37_1 = $3_1; $31_1 = $3_1 >> 31; $51_1 = $4_1; $44_1 = $4_1 >> 31; $5_1 = __wasm_i64_mul($3_1, $31_1, $4_1, $44_1); $3_1 = $8_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = $3_1; $8_1 = HEAP322[$1_1 + 32 >> 2]; $3_1 = Math_imul2($8_1, 19); $24_1 = $3_1; $25_1 = $3_1 >> 31; $5_1 = HEAP322[$1_1 + 24 >> 2]; $3_1 = $5_1 << 1; $9_1 = __wasm_i64_mul($24_1, $25_1, $3_1, $3_1 >> 31); $11_1 = $7_1 + $9_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $11_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = $11_1; $26_1 = HEAP322[$1_1 + 36 >> 2]; $2_1 = Math_imul2($26_1, 38); $23_1 = $2_1; $16_1 = $2_1 >> 31; $11_1 = HEAP322[$1_1 + 20 >> 2]; $1_1 = $11_1 << 1; $32_1 = $1_1; $29_1 = $1_1 >> 31; $9_1 = __wasm_i64_mul($2_1, $16_1, $1_1, $29_1); $2_1 = $7_1 + $9_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $45_1 = $2_1 << 1; $2_1 = ($2_1 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1) << 1 | $2_1 >>> 31; $56_1 = $2_1; $1_1 = $45_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $52_1 = $1_1; $57_1 = $2_1; $1_1 = $2_1 >> 26; $2_1 = ($2_1 & 67108863) << 6 | $52_1 >>> 26; $3_1 = __wasm_i64_mul($19, $14_1, $20_1, $21_1); $9_1 = i64toi32_i32$HIGH_BITS; $7_1 = $2_1; $2_1 = $28_1 << 1; $33_1 = $2_1; $30_1 = $2_1 >> 31; $38_1 = $6_1; $46_1 = $6_1 >> 31; $6_1 = __wasm_i64_mul($2_1, $30_1, $6_1, $46_1); $3_1 = $6_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $28_1 = $11_1; $39_1 = $11_1 >> 31; $9_1 = __wasm_i64_mul($11_1, $39_1, $22_1, $15_1); $6_1 = $9_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $6_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $34_1 = $6_1; $2_1 = $4_1 << 1; $53 = $2_1; $47_1 = $2_1 >> 31; $6_1 = __wasm_i64_mul($24_1, $25_1, $2_1, $47_1); $4_1 = $34_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $4_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $4_1; $6_1 = $5_1; $27_1 = $5_1 >> 31; $4_1 = __wasm_i64_mul($23_1, $16_1, $5_1, $27_1); $3_1 = $3_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $3_1; $3_1 = $2_1 << 1 | $3_1 >>> 31; $4_1 = $4_1 << 1; $2_1 = $7_1 + $4_1 | 0; $1_1 = $1_1 + $3_1 | 0; $40_1 = $2_1; $2_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = $40_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $58_1 = $1_1; $1_1 = ($2_1 & 33554431) << 7 | $1_1 >>> 25; $4_1 = $2_1 >> 25; $2_1 = __wasm_i64_mul($17_1, $18_1, $38_1, $46_1); $3_1 = i64toi32_i32$HIGH_BITS; $7_1 = $1_1; $9_1 = __wasm_i64_mul($20_1, $21_1, $33_1, $30_1); $1_1 = $9_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $9_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($19, $14_1, $32_1, $29_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $9_1 = __wasm_i64_mul($22_1, $15_1, $6_1, $27_1); $3_1 = $9_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $9_1 = $8_1; $41_1 = $8_1 >> 31; $8_1 = __wasm_i64_mul($24_1, $25_1, $8_1, $41_1); $3_1 = $8_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $8_1 = __wasm_i64_mul($23_1, $16_1, $53, $47_1); $1_1 = $8_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1; $1_1 = ($2_1 >>> 0 < $8_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $8_1 = $2_1 << 1; $3_1 = $7_1 + $8_1 | 0; $2_1 = $1_1 + $4_1 | 0; $2_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = $1_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $34_1 = $3_1; $4_1 = $2_1; $2_1 = $3_1 & -67108864; HEAP322[$42_1 + 24 >> 2] = $1_1 - $2_1; $8_1 = $0; $1_1 = Math_imul2($11_1, 38); $1_1 = __wasm_i64_mul($1_1, $1_1 >> 31, $28_1, $39_1); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = $1_1; $1_1 = $36_1; $3_1 = $1_1 >> 31; $11_1 = __wasm_i64_mul($1_1, $3_1, $1_1, $3_1); $1_1 = $7_1 + $11_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $11_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $1_1 = Math_imul2($5_1, 19); $12_1 = $1_1; $48_1 = $1_1 >> 31; $1_1 = $35_1 << 1; $54_1 = $1_1; $49_1 = $1_1 >> 31; $5_1 = __wasm_i64_mul($12_1, $48_1, $1_1, $49_1); $1_1 = $2_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($17_1, $18_1, $37_1, $31_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $5_1 = __wasm_i64_mul($24_1, $25_1, $33_1, $30_1); $3_1 = $5_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = __wasm_i64_mul($19, $14_1, $23_1, $16_1); $3_1 = $5_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $3_1; $11_1 = $1_1 << 1; $2_1 = ($1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) << 1 | $1_1 >>> 31; $42_1 = $2_1; $3_1 = $2_1; $1_1 = $11_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $36_1 = $1_1; $35_1 = $3_1; $1_1 = ($3_1 & 67108863) << 6 | $1_1 >>> 26; $5_1 = $3_1 >> 26; $2_1 = __wasm_i64_mul($12_1, $48_1, $32_1, $29_1); $3_1 = i64toi32_i32$HIGH_BITS; $50_1 = $1_1; $7_1 = $10_1; $55 = $7_1 >> 31; $10_1 = __wasm_i64_mul($22_1, $15_1, $7_1, $55); $1_1 = $10_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $10_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = __wasm_i64_mul($20_1, $21_1, $37_1, $31_1); $3_1 = $10_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $10_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $10_1 = __wasm_i64_mul($24_1, $25_1, $17_1, $18_1); $3_1 = $10_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $10_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = __wasm_i64_mul($23_1, $16_1, $43_1, $13_1); $1_1 = $10_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1; $1_1 = ($2_1 >>> 0 < $10_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $10_1 = $2_1 << 1; $3_1 = $50_1 + $10_1 | 0; $2_1 = $1_1 + $5_1 | 0; $2_1 = $3_1 >>> 0 < $10_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $3_1; $1_1 = $3_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $50_1 = $1_1; $3_1 = $1_1; $1_1 = $2_1 >> 25; $2_1 = ($2_1 & 33554431) << 7 | $3_1 >>> 25; $5_1 = $1_1; $1_1 = __wasm_i64_mul($22_1, $15_1, $43_1, $13_1); $3_1 = i64toi32_i32$HIGH_BITS; $59_1 = $2_1; $7_1 = __wasm_i64_mul($19, $14_1, $7_1, $55); $1_1 = $7_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = __wasm_i64_mul($12_1, $48_1, $6_1, $27_1); $1_1 = $7_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = __wasm_i64_mul($32_1, $29_1, $37_1, $31_1); $1_1 = $7_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($24_1, $25_1, $54_1, $49_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = __wasm_i64_mul($23_1, $16_1, $17_1, $18_1); $3_1 = $7_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1 << 1 | $3_1 >>> 31; $3_1 = $3_1 << 1; $1_1 = $59_1 + $3_1 | 0; $2_1 = $2_1 + $5_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $2_1; $2_1 = $1_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $3_1 = $3_1 + 1 | 0; } $7_1 = $2_1; $5_1 = $3_1; $2_1 = $2_1 & -67108864; HEAP322[$8_1 + 8 >> 2] = $1_1 - $2_1; $1_1 = __wasm_i64_mul($33_1, $30_1, $28_1, $39_1); $3_1 = i64toi32_i32$HIGH_BITS; $12_1 = __wasm_i64_mul($20_1, $21_1, $17_1, $18_1); $2_1 = $12_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $2_1 >>> 0 < $12_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $12_1 = __wasm_i64_mul($19, $14_1, $6_1, $27_1); $3_1 = $12_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $12_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $12_1 = __wasm_i64_mul($22_1, $15_1, $51_1, $44_1); $1_1 = $12_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $12_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $12_1 = __wasm_i64_mul($23_1, $16_1, $9_1, $41_1); $1_1 = $12_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $12_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $2_1 << 1 | $1_1 >>> 31; $3_1 = $4_1 >> 26; $4_1 = ($4_1 & 67108863) << 6 | $34_1 >>> 26; $1_1 = $4_1 + ($1_1 << 1) | 0; $2_1 = $2_1 + $3_1 | 0; $2_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $1_1 = $2_1; $2_1 = $3_1 + 16777216 | 0; if ($2_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $34_1 = $2_1; $4_1 = $1_1; $1_1 = $2_1 & -33554432; HEAP322[$8_1 + 28 >> 2] = $3_1 - $1_1; $1_1 = __wasm_i64_mul($22_1, $15_1, $38_1, $46_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = __wasm_i64_mul($19, $14_1, $43_1, $13_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($6_1, $27_1, $37_1, $31_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $13_1 = __wasm_i64_mul($24_1, $25_1, $32_1, $29_1); $3_1 = $13_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $13_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $13_1 = __wasm_i64_mul($23_1, $16_1, $20_1, $21_1); $2_1 = $13_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $2_1; $2_1 = ($2_1 >>> 0 < $13_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $3_1 = $1_1 << 1; $1_1 = $5_1 >> 26; $5_1 = ($5_1 & 67108863) << 6 | $7_1 >>> 26; $3_1 = $3_1 + $5_1 | 0; $2_1 = $1_1 + $2_1 | 0; $2_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = $1_1 + 16777216 | 0; if ($3_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $38_1 = $3_1; $5_1 = $2_1; $2_1 = $3_1 & -33554432; HEAP322[$8_1 + 12 >> 2] = $1_1 - $2_1; $13_1 = $0; $1_1 = __wasm_i64_mul($6_1, $27_1, $33_1, $30_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = __wasm_i64_mul($20_1, $21_1, $20_1, $21_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($17_1, $18_1, $32_1, $29_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($19, $14_1, $53, $47_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $8_1 = __wasm_i64_mul($22_1, $15_1, $9_1, $41_1); $3_1 = $8_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $8_1 = $26_1; $7_1 = $8_1 >> 31; $26_1 = __wasm_i64_mul($23_1, $16_1, $8_1, $7_1); $2_1 = $26_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $2_1; $2_1 = ($2_1 >>> 0 < $26_1 >>> 0 ? $3_1 + 1 | 0 : $3_1) << 1 | $2_1 >>> 31; $3_1 = $1_1 << 1; $1_1 = $4_1 >> 25; $4_1 = ($4_1 & 33554431) << 7 | $34_1 >>> 25; $3_1 = $3_1 + $4_1 | 0; $2_1 = $1_1 + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = $1_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $26_1 = $3_1; $4_1 = $2_1; $2_1 = $3_1 & -67108864; HEAP322[$13_1 + 32 >> 2] = $1_1 - $2_1; $40_1 = $40_1 - ($58_1 & -33554432) | 0; $2_1 = $5_1 >> 25; $5_1 = ($5_1 & 33554431) << 7 | $38_1 >>> 25; $1_1 = $52_1 & -67108864; $3_1 = $5_1 + ($45_1 - $1_1 | 0) | 0; $1_1 = $2_1 + ($56_1 - (($45_1 >>> 0 < $1_1 >>> 0) + $57_1 | 0) | 0) | 0; $1_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1; $1_1 = $3_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $5_1 = (($2_1 & 67108863) << 6 | $1_1 >>> 26) + $40_1 | 0; HEAP322[$13_1 + 20 >> 2] = $5_1; $1_1 = $1_1 & -67108864; HEAP322[$0 + 16 >> 2] = $3_1 - $1_1; $1_1 = __wasm_i64_mul($17_1, $18_1, $6_1, $27_1); $3_1 = i64toi32_i32$HIGH_BITS; $6_1 = __wasm_i64_mul($28_1, $39_1, $54_1, $49_1); $2_1 = $6_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $6_1 = __wasm_i64_mul($33_1, $30_1, $51_1, $44_1); $3_1 = $6_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = __wasm_i64_mul($19, $14_1, $9_1, $41_1); $1_1 = $6_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = __wasm_i64_mul($22_1, $15_1, $8_1, $7_1); $1_1 = $6_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $2_1 << 1 | $1_1 >>> 31; $3_1 = $4_1 >> 26; $4_1 = ($4_1 & 67108863) << 6 | $26_1 >>> 26; $1_1 = $4_1 + ($1_1 << 1) | 0; $2_1 = $2_1 + $3_1 | 0; $2_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $4_1 = $1_1; $5_1 = $1_1; $1_1 = $2_1; $2_1 = $3_1 + 16777216 | 0; if ($2_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $3_1 = $2_1 & -33554432; HEAP322[$0 + 36 >> 2] = $4_1 - $3_1; $4_1 = $0; $5_1 = $10_1 - ($50_1 & -33554432) | 0; $2_1 = __wasm_i64_mul(($1_1 & 33554431) << 7 | $2_1 >>> 25, $1_1 >> 25, 19, 0); $3_1 = $36_1 & -67108864; $1_1 = $2_1 + ($11_1 - $3_1 | 0) | 0; $3_1 = i64toi32_i32$HIGH_BITS + ($42_1 - (($11_1 >>> 0 < $3_1 >>> 0) + $35_1 | 0) | 0) | 0; $3_1 = $1_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $6_1 = $4_1; $1_1 = $3_1; $3_1 = $2_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $4_1 = (($1_1 & 67108863) << 6 | $3_1 >>> 26) + $5_1 | 0; HEAP322[$6_1 + 4 >> 2] = $4_1; $1_1 = $0; $0 = $3_1 & -67108864; HEAP322[$1_1 >> 2] = $2_1 - $0; } function $42($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, $52_1 = 0, $53 = 0, $54_1 = 0, $55 = 0, $56_1 = 0; $7_1 = $0; $2_1 = HEAP322[$1_1 + 12 >> 2]; $3_1 = $2_1 << 1; $23_1 = $3_1; $16_1 = $3_1 >> 31; $9_1 = $2_1; $44_1 = $2_1 >> 31; $2_1 = __wasm_i64_mul($3_1, $16_1, $2_1, $44_1); $4_1 = i64toi32_i32$HIGH_BITS; $3_1 = $2_1; $39_1 = HEAP322[$1_1 + 16 >> 2]; $2_1 = $39_1; $17_1 = $2_1; $18_1 = $2_1 >> 31; $11_1 = HEAP322[$1_1 + 8 >> 2]; $2_1 = $11_1 << 1; $33_1 = $2_1; $28_1 = $2_1 >> 31; $6_1 = __wasm_i64_mul($17_1, $18_1, $2_1, $28_1); $3_1 = $3_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $3_1; $6_1 = HEAP322[$1_1 + 20 >> 2]; $3_1 = $6_1 << 1; $29_1 = $3_1; $30_1 = $3_1 >> 31; $12_1 = HEAP322[$1_1 + 4 >> 2]; $3_1 = $12_1 << 1; $19 = $3_1; $13_1 = $3_1 >> 31; $5_1 = __wasm_i64_mul($29_1, $30_1, $3_1, $13_1); $4_1 = $4_1 + $5_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $8_1 = HEAP322[$1_1 + 24 >> 2]; $2_1 = $8_1; $34_1 = $2_1; $24_1 = $2_1 >> 31; $35_1 = HEAP322[$1_1 >> 2]; $2_1 = $35_1 << 1; $20_1 = $2_1; $14_1 = $2_1 >> 31; $5_1 = __wasm_i64_mul($8_1, $24_1, $2_1, $14_1); $4_1 = $5_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $4_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $4_1; $3_1 = HEAP322[$1_1 + 32 >> 2]; $4_1 = Math_imul2($3_1, 19); $31_1 = $4_1; $25_1 = $4_1 >> 31; $45_1 = $3_1; $40_1 = $3_1 >> 31; $4_1 = __wasm_i64_mul($4_1, $25_1, $3_1, $40_1); $3_1 = $10_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $3_1; $26_1 = HEAP322[$1_1 + 36 >> 2]; $3_1 = Math_imul2($26_1, 38); $21_1 = $3_1; $15_1 = $3_1 >> 31; $4_1 = HEAP322[$1_1 + 28 >> 2]; $1_1 = $4_1 << 1; $51_1 = $1_1; $46_1 = $1_1 >> 31; $5_1 = __wasm_i64_mul($3_1, $15_1, $1_1, $46_1); $3_1 = $10_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $27_1 = $3_1; $22_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($19, $13_1, $17_1, $18_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = __wasm_i64_mul($33_1, $28_1, $9_1, $44_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $47_1 = $6_1; $41_1 = $6_1 >> 31; $5_1 = __wasm_i64_mul($6_1, $41_1, $20_1, $14_1); $1_1 = $5_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($31_1, $25_1, $51_1, $46_1); $1_1 = $5_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($21_1, $15_1, $8_1, $24_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $10_1 = $1_1; $36_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($19, $13_1, $23_1, $16_1); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = $11_1; $37_1 = $5_1 >> 31; $11_1 = __wasm_i64_mul($5_1, $37_1, $5_1, $37_1); $2_1 = $11_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $2_1 >>> 0 < $11_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $11_1 = __wasm_i64_mul($20_1, $14_1, $17_1, $18_1); $3_1 = $11_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $11_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = Math_imul2($4_1, 38); $42_1 = $1_1; $38_1 = $1_1 >> 31; $11_1 = $4_1; $48_1 = $4_1 >> 31; $4_1 = __wasm_i64_mul($1_1, $38_1, $4_1, $48_1); $1_1 = $4_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $1_1 = $8_1 << 1; $4_1 = __wasm_i64_mul($31_1, $25_1, $1_1, $1_1 >> 31); $1_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($21_1, $15_1, $29_1, $30_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $49_1 = $1_1; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $54_1 = $2_1; $1_1 = $2_1; $2_1 = $49_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $52_1 = $2_1; $55 = $1_1; $2_1 = $1_1 >> 26; $3_1 = ($1_1 & 67108863) << 6 | $52_1 >>> 26; $1_1 = $3_1 + $10_1 | 0; $2_1 = $2_1 + $36_1 | 0; $36_1 = $1_1; $3_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $1_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $3_1 = $3_1 + 1 | 0; } $56_1 = $1_1; $2_1 = $3_1 >> 25; $3_1 = ($3_1 & 33554431) << 7 | $1_1 >>> 25; $1_1 = $3_1 + $27_1 | 0; $2_1 = $2_1 + $22_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $1_1 = $2_1; $2_1 = $3_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $10_1 = $2_1; $4_1 = $1_1; $1_1 = $2_1 & -67108864; HEAP322[$7_1 + 24 >> 2] = $3_1 - $1_1; $22_1 = $0; $1_1 = __wasm_i64_mul($20_1, $14_1, $5_1, $37_1); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = $12_1; $32_1 = $7_1 >> 31; $12_1 = __wasm_i64_mul($19, $13_1, $7_1, $32_1); $1_1 = $12_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $12_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $1_1; $1_1 = Math_imul2($8_1, 19); $12_1 = $1_1; $27_1 = $1_1 >> 31; $8_1 = __wasm_i64_mul($1_1, $27_1, $34_1, $24_1); $1_1 = $2_1 + $8_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $8_1 = __wasm_i64_mul($29_1, $30_1, $42_1, $38_1); $3_1 = $8_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $39_1 << 1; $53 = $2_1; $50_1 = $2_1 >> 31; $8_1 = __wasm_i64_mul($31_1, $25_1, $2_1, $50_1); $3_1 = $8_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($21_1, $15_1, $23_1, $16_1); $1_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $43_1 = $1_1; $8_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($29_1, $30_1, $12_1, $27_1); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = __wasm_i64_mul($20_1, $14_1, $7_1, $32_1); $1_1 = $7_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $7_1 = __wasm_i64_mul($17_1, $18_1, $42_1, $38_1); $1_1 = $7_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = __wasm_i64_mul($31_1, $25_1, $23_1, $16_1); $3_1 = $7_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $7_1 = __wasm_i64_mul($21_1, $15_1, $5_1, $37_1); $3_1 = $7_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $32_1 = $3_1; $7_1 = $3_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = Math_imul2($6_1, 38); $1_1 = __wasm_i64_mul($1_1, $1_1 >> 31, $47_1, $41_1); $2_1 = i64toi32_i32$HIGH_BITS; $6_1 = $1_1; $1_1 = $35_1; $3_1 = $1_1 >> 31; $3_1 = __wasm_i64_mul($1_1, $3_1, $1_1, $3_1); $1_1 = $6_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = __wasm_i64_mul($12_1, $27_1, $53, $50_1); $1_1 = $6_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $6_1 = __wasm_i64_mul($23_1, $16_1, $42_1, $38_1); $1_1 = $6_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = __wasm_i64_mul($31_1, $25_1, $33_1, $28_1); $3_1 = $6_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $6_1 = __wasm_i64_mul($19, $13_1, $21_1, $15_1); $3_1 = $6_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $12_1 = $3_1; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $27_1 = $2_1; $1_1 = $3_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $35_1 = $1_1; $39_1 = $2_1; $1_1 = $2_1 >> 26; $6_1 = ($2_1 & 67108863) << 6 | $35_1 >>> 26; $2_1 = $6_1 + $32_1 | 0; $3_1 = $1_1 + $7_1 | 0; $7_1 = $2_1; $2_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = $7_1 + 16777216 | 0; if ($1_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $32_1 = $1_1; $6_1 = ($2_1 & 33554431) << 7 | $1_1 >>> 25; $3_1 = $6_1 + $43_1 | 0; $2_1 = ($2_1 >> 25) + $8_1 | 0; $2_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = $1_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $8_1 = $3_1; $6_1 = $2_1; $2_1 = $3_1 & -67108864; HEAP322[$22_1 + 8 >> 2] = $1_1 - $2_1; $1_1 = __wasm_i64_mul($33_1, $28_1, $47_1, $41_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = __wasm_i64_mul($17_1, $18_1, $23_1, $16_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($19, $13_1, $34_1, $24_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($20_1, $14_1, $11_1, $48_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $43_1 = __wasm_i64_mul($21_1, $15_1, $45_1, $40_1); $3_1 = $43_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $43_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1 >> 26; $10_1 = ($4_1 & 67108863) << 6 | $10_1 >>> 26; $4_1 = $10_1 + $3_1 | 0; $3_1 = $1_1 + $2_1 | 0; $3_1 = $4_1 >>> 0 < $10_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = $4_1; $2_1 = $3_1; $3_1 = $1_1 + 16777216 | 0; if ($3_1 >>> 0 < 16777216) { $2_1 = $2_1 + 1 | 0; } $10_1 = $3_1; $4_1 = $2_1; $2_1 = $3_1 & -33554432; HEAP322[$22_1 + 28 >> 2] = $1_1 - $2_1; $1_1 = __wasm_i64_mul($20_1, $14_1, $9_1, $44_1); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = __wasm_i64_mul($19, $13_1, $5_1, $37_1); $2_1 = $5_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = __wasm_i64_mul($34_1, $24_1, $42_1, $38_1); $2_1 = $5_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $3_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($31_1, $25_1, $29_1, $30_1); $1_1 = $5_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($21_1, $15_1, $17_1, $18_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $6_1 >> 26; $6_1 = ($6_1 & 67108863) << 6 | $8_1 >>> 26; $1_1 = $6_1 + $1_1 | 0; $2_1 = $2_1 + $3_1 | 0; $2_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $1_1 = $2_1; $2_1 = $3_1 + 16777216 | 0; if ($2_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $8_1 = $2_1; $6_1 = $1_1; $1_1 = $2_1 & -33554432; HEAP322[$22_1 + 12 >> 2] = $3_1 - $1_1; $5_1 = $0; $1_1 = __wasm_i64_mul($34_1, $24_1, $33_1, $28_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = __wasm_i64_mul($17_1, $18_1, $17_1, $18_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($23_1, $16_1, $29_1, $30_1); $1_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $9_1 = __wasm_i64_mul($19, $13_1, $51_1, $46_1); $3_1 = $9_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $3_1 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $9_1 = __wasm_i64_mul($20_1, $14_1, $45_1, $40_1); $2_1 = $9_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $3_1 = $2_1 >>> 0 < $9_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = $26_1; $22_1 = $9_1 >> 31; $26_1 = __wasm_i64_mul($21_1, $15_1, $9_1, $22_1); $1_1 = $26_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $1_1 >>> 0 < $26_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $1_1 = $4_1 >> 25; $4_1 = ($4_1 & 33554431) << 7 | $10_1 >>> 25; $3_1 = $3_1 + $4_1 | 0; $2_1 = $1_1 + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = $1_1 + 33554432 | 0; if ($3_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $26_1 = $3_1; $4_1 = $2_1; $2_1 = $3_1 & -67108864; HEAP322[$5_1 + 32 >> 2] = $1_1 - $2_1; $36_1 = $36_1 - ($56_1 & -33554432) | 0; $2_1 = $6_1 >> 25; $6_1 = ($6_1 & 33554431) << 7 | $8_1 >>> 25; $1_1 = $52_1 & -67108864; $3_1 = $6_1 + ($49_1 - $1_1 | 0) | 0; $1_1 = $2_1 + ($54_1 - (($49_1 >>> 0 < $1_1 >>> 0) + $55 | 0) | 0) | 0; $1_1 = $3_1 >>> 0 < $6_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1; $1_1 = $3_1 + 33554432 | 0; if ($1_1 >>> 0 < 33554432) { $2_1 = $2_1 + 1 | 0; } $6_1 = (($2_1 & 67108863) << 6 | $1_1 >>> 26) + $36_1 | 0; HEAP322[$5_1 + 20 >> 2] = $6_1; $1_1 = $1_1 & -67108864; HEAP322[$0 + 16 >> 2] = $3_1 - $1_1; $6_1 = $0; $1_1 = __wasm_i64_mul($23_1, $16_1, $34_1, $24_1); $3_1 = i64toi32_i32$HIGH_BITS; $5_1 = __wasm_i64_mul($47_1, $41_1, $53, $50_1); $2_1 = $5_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $2_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = __wasm_i64_mul($33_1, $28_1, $11_1, $48_1); $3_1 = $5_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $3_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $5_1 = __wasm_i64_mul($19, $13_1, $45_1, $40_1); $1_1 = $5_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $5_1 = __wasm_i64_mul($20_1, $14_1, $9_1, $22_1); $1_1 = $5_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $1_1; $1_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $4_1 >> 26; $4_1 = ($4_1 & 67108863) << 6 | $26_1 >>> 26; $3_1 = $4_1 + $3_1 | 0; $2_1 = $1_1 + $2_1 | 0; $2_1 = $3_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $3_1; $8_1 = $3_1; $1_1 = $2_1; $2_1 = $3_1 + 16777216 | 0; if ($2_1 >>> 0 < 16777216) { $1_1 = $1_1 + 1 | 0; } $3_1 = $2_1 & -33554432; HEAP322[$6_1 + 36 >> 2] = $4_1 - $3_1; $5_1 = __wasm_i64_mul(($1_1 & 33554431) << 7 | $2_1 >>> 25, $1_1 >> 25, 19, 0); $3_1 = $35_1 & -67108864; $1_1 = $5_1 + ($12_1 - $3_1 | 0) | 0; $2_1 = i64toi32_i32$HIGH_BITS + ($27_1 - (($12_1 >>> 0 < $3_1 >>> 0) + $39_1 | 0) | 0) | 0; $3_1 = $1_1; $1_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $3_1 + 33554432 | 0; if ($2_1 >>> 0 < 33554432) { $1_1 = $1_1 + 1 | 0; } $4_1 = ($7_1 - ($32_1 & -33554432) | 0) + (($1_1 & 67108863) << 6 | $2_1 >>> 26) | 0; HEAP322[$0 + 4 >> 2] = $4_1; $1_1 = $0; $0 = $2_1 & -67108864; HEAP322[$1_1 >> 2] = $3_1 - $0; } function $43($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0; $3_1 = HEAP322[$2_1 >> 2]; $4_1 = HEAP322[$1_1 >> 2]; $5_1 = HEAP322[$2_1 + 4 >> 2]; $6_1 = HEAP322[$1_1 + 4 >> 2]; $7_1 = HEAP322[$2_1 + 8 >> 2]; $8_1 = HEAP322[$1_1 + 8 >> 2]; $9_1 = HEAP322[$2_1 + 12 >> 2]; $10_1 = HEAP322[$1_1 + 12 >> 2]; $11_1 = HEAP322[$2_1 + 16 >> 2]; $12_1 = HEAP322[$1_1 + 16 >> 2]; $13_1 = HEAP322[$2_1 + 20 >> 2]; $14_1 = HEAP322[$1_1 + 20 >> 2]; $15_1 = HEAP322[$2_1 + 24 >> 2]; $16_1 = HEAP322[$1_1 + 24 >> 2]; $17_1 = HEAP322[$2_1 + 28 >> 2]; $18_1 = HEAP322[$1_1 + 28 >> 2]; $19 = HEAP322[$2_1 + 32 >> 2]; $20_1 = HEAP322[$1_1 + 32 >> 2]; HEAP322[$0 + 36 >> 2] = HEAP322[$1_1 + 36 >> 2] - HEAP322[$2_1 + 36 >> 2]; HEAP322[$0 + 32 >> 2] = $20_1 - $19; HEAP322[$0 + 28 >> 2] = $18_1 - $17_1; HEAP322[$0 + 24 >> 2] = $16_1 - $15_1; HEAP322[$0 + 20 >> 2] = $14_1 - $13_1; HEAP322[$0 + 16 >> 2] = $12_1 - $11_1; HEAP322[$0 + 12 >> 2] = $10_1 - $9_1; HEAP322[$0 + 8 >> 2] = $8_1 - $7_1; HEAP322[$0 + 4 >> 2] = $6_1 - $5_1; HEAP322[$0 >> 2] = $4_1 - $3_1; } function $44($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0; $6_1 = HEAP322[$1_1 + 36 >> 2]; $7_1 = HEAP322[$1_1 + 32 >> 2]; $8_1 = HEAP322[$1_1 + 28 >> 2]; $9_1 = HEAP322[$1_1 + 24 >> 2]; $10_1 = HEAP322[$1_1 + 20 >> 2]; $4_1 = HEAP322[$1_1 + 16 >> 2]; $11_1 = HEAP322[$1_1 + 12 >> 2]; $5_1 = HEAP322[$1_1 + 8 >> 2]; $3_1 = HEAP322[$1_1 + 4 >> 2]; $2_1 = HEAP322[$1_1 >> 2]; $1_1 = Math_imul2($6_1 + ($7_1 + ($8_1 + ($9_1 + ($10_1 + ($4_1 + ($11_1 + ($5_1 + ($3_1 + ($2_1 + (Math_imul2($6_1, 19) + 16777216 >> 25) >> 26) >> 25) >> 26) >> 25) >> 26) >> 25) >> 26) >> 25) >> 26) >> 25, 19) + $2_1 | 0; HEAP82[$0 | 0] = $1_1; HEAP82[$0 + 2 | 0] = $1_1 >>> 16; HEAP82[$0 + 1 | 0] = $1_1 >>> 8; $2_1 = $3_1 + ($1_1 >> 26) | 0; HEAP82[$0 + 5 | 0] = $2_1 >>> 14; HEAP82[$0 + 4 | 0] = $2_1 >>> 6; $3_1 = $5_1 + ($2_1 >> 25) | 0; HEAP82[$0 + 8 | 0] = $3_1 >>> 13; HEAP82[$0 + 7 | 0] = $3_1 >>> 5; $5_1 = $1_1 >>> 24 & 3; $1_1 = $2_1 & 33554431; HEAP82[$0 + 3 | 0] = $5_1 | $1_1 << 2; $2_1 = ($3_1 >> 26) + $11_1 | 0; HEAP82[$0 + 11 | 0] = $2_1 >>> 11; HEAP82[$0 + 10 | 0] = $2_1 >>> 3; $3_1 = $3_1 & 67108863; HEAP82[$0 + 6 | 0] = $3_1 << 3 | $1_1 >>> 22; $1_1 = ($2_1 >> 25) + $4_1 | 0; HEAP82[$0 + 15 | 0] = $1_1 >>> 18; HEAP82[$0 + 14 | 0] = $1_1 >>> 10; HEAP82[$0 + 13 | 0] = $1_1 >>> 2; $4_1 = $2_1 & 33554431; HEAP82[$0 + 9 | 0] = $4_1 << 5 | $3_1 >>> 21; $2_1 = ($1_1 >> 26) + $10_1 | 0; HEAP82[$0 + 16 | 0] = $2_1; HEAP82[$0 + 12 | 0] = $1_1 << 6 | $4_1 >>> 19; HEAP82[$0 + 18 | 0] = $2_1 >>> 16; HEAP82[$0 + 17 | 0] = $2_1 >>> 8; $1_1 = ($2_1 >> 25) + $9_1 | 0; HEAP82[$0 + 21 | 0] = $1_1 >>> 15; HEAP82[$0 + 20 | 0] = $1_1 >>> 7; $3_1 = ($1_1 >> 26) + $8_1 | 0; HEAP82[$0 + 24 | 0] = $3_1 >>> 13; HEAP82[$0 + 23 | 0] = $3_1 >>> 5; $4_1 = $2_1 >>> 24 & 1; $2_1 = $1_1 & 67108863; HEAP82[$0 + 19 | 0] = $4_1 | $2_1 << 1; $1_1 = ($3_1 >> 25) + $7_1 | 0; HEAP82[$0 + 27 | 0] = $1_1 >>> 12; HEAP82[$0 + 26 | 0] = $1_1 >>> 4; $3_1 = $3_1 & 33554431; HEAP82[$0 + 22 | 0] = $3_1 << 3 | $2_1 >>> 23; $2_1 = ($1_1 >> 26) + $6_1 | 0; HEAP82[$0 + 30 | 0] = $2_1 >>> 10; HEAP82[$0 + 29 | 0] = $2_1 >>> 2; $1_1 = $1_1 & 67108863; HEAP82[$0 + 25 | 0] = $1_1 << 4 | $3_1 >>> 21; $2_1 = $2_1 & 33554431; HEAP82[$0 + 31 | 0] = $2_1 >>> 18; HEAP82[$0 + 28 | 0] = $2_1 << 6 | $1_1 >>> 20; } function $45($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $5_1 = global$0 - 48 | 0; global$0 = $5_1; $3_1 = $1_1 + 40 | 0; $29($0, $3_1, $1_1); $4_1 = $0 + 40 | 0; $43($4_1, $3_1, $1_1); $3_1 = $0 + 80 | 0; $38($3_1, $0, $2_1); $38($4_1, $4_1, $2_1 + 40 | 0); $6_1 = $0 + 120 | 0; $38($6_1, $2_1 + 120 | 0, $1_1 + 120 | 0); $38($0, $1_1 + 80 | 0, $2_1 + 80 | 0); $29($5_1, $0, $0); $43($0, $3_1, $4_1); $29($4_1, $3_1, $4_1); $29($3_1, $5_1, $6_1); $43($6_1, $5_1, $6_1); global$0 = $5_1 + 48 | 0; } function $46($0, $1_1, $2_1, $3_1) { var $4_1 = 0; $4_1 = global$0 - 2272 | 0; global$0 = $4_1; $47($4_1 + 2016 | 0, $1_1); $47($4_1 + 1760 | 0, $3_1); $58($4_1 + 480 | 0, $2_1); $56($4_1 + 320 | 0, $2_1); $52($4_1, $4_1 + 320 | 0); $45($4_1 + 320 | 0, $4_1, $4_1 + 480 | 0); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 640 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 800 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 960 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 1120 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 1280 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $1_1 = $4_1 + 1440 | 0; $58($1_1, $4_1 + 160 | 0); $45($4_1 + 320 | 0, $4_1, $1_1); $52($4_1 + 160 | 0, $4_1 + 320 | 0); $58($4_1 + 1600 | 0, $4_1 + 160 | 0); $27($0); $28($0 + 40 | 0); $28($0 + 80 | 0); $1_1 = 255; while (1) { label$2: { $2_1 = $1_1; if (HEAPU82[$1_1 + ($4_1 + 2016 | 0) | 0]) { $3_1 = $2_1; break label$2; } if (HEAPU82[$2_1 + ($4_1 + 1760 | 0) | 0]) { $3_1 = $2_1; break label$2; } $3_1 = -1; $1_1 = $2_1 + -1 | 0; if ($2_1) { continue; } } break; } if (($3_1 | 0) >= 0) { while (1) { $54($4_1 + 320 | 0, $0); $1_1 = $3_1; $2_1 = HEAP82[$1_1 + ($4_1 + 2016 | 0) | 0]; label$7: { if (($2_1 | 0) >= 1) { $52($4_1 + 160 | 0, $4_1 + 320 | 0); $45($4_1 + 320 | 0, $4_1 + 160 | 0, ($4_1 + 480 | 0) + Math_imul2(($2_1 | 0) / 2 << 24 >> 24, 160) | 0); break label$7; } if (($2_1 | 0) > -1) { break label$7; } $52($4_1 + 160 | 0, $4_1 + 320 | 0); $66($4_1 + 320 | 0, $4_1 + 160 | 0, ($4_1 + 480 | 0) + Math_imul2(($2_1 | 0) / -2 << 24 >> 24, 160) | 0); } $2_1 = HEAP82[$1_1 + ($4_1 + 1760 | 0) | 0]; label$9: { if (($2_1 | 0) >= 1) { $52($4_1 + 160 | 0, $4_1 + 320 | 0); $49($4_1 + 320 | 0, $4_1 + 160 | 0, Math_imul2(($2_1 | 0) / 2 << 24 >> 24, 120) + 1904 | 0); break label$9; } if (($2_1 | 0) > -1) { break label$9; } $52($4_1 + 160 | 0, $4_1 + 320 | 0); $50($4_1 + 320 | 0, $4_1 + 160 | 0, Math_imul2(($2_1 | 0) / -2 << 24 >> 24, 120) + 1904 | 0); } $51($0, $4_1 + 320 | 0); $3_1 = $1_1 + -1 | 0; if (($1_1 | 0) > 0) { continue; } break; } } global$0 = $4_1 + 2272 | 0; } function $47($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0; while (1) { HEAP82[$0 + $2_1 | 0] = HEAPU82[($2_1 >>> 3 | 0) + $1_1 | 0] >>> ($2_1 & 7) & 1; $2_1 = $2_1 + 1 | 0; if (($2_1 | 0) != 256) { continue; } break; } $5_1 = 254; while (1) { $6_1 = $0 + $3_1 | 0; label$3: { if (!HEAPU82[$6_1 | 0] | $3_1 >>> 0 > 254) { break label$3; } $10_1 = $5_1 >>> 0 < 5 ? $5_1 : 5; $1_1 = 1; $2_1 = $3_1 + 1 | 0; while (1) { $7_1 = $1_1; $1_1 = $0 + $2_1 | 0; $4_1 = HEAP82[$1_1 | 0]; label$5: { if (!$4_1) { break label$5; } $8_1 = HEAP82[$6_1 | 0]; $4_1 = $4_1 << $7_1; $9_1 = $8_1 + $4_1 | 0; if (($9_1 | 0) <= 15) { HEAP82[$6_1 | 0] = $9_1; HEAP82[$1_1 | 0] = 0; break label$5; } $1_1 = $8_1 - $4_1 | 0; if (($1_1 | 0) < -15) { break label$3; } HEAP82[$6_1 | 0] = $1_1; while (1) { $1_1 = $0 + $2_1 | 0; if (!HEAPU82[$1_1 | 0]) { HEAP82[$1_1 | 0] = 1; break label$5; } HEAP82[$1_1 | 0] = 0; $1_1 = $2_1 >>> 0 < 255; $2_1 = $2_1 + 1 | 0; if ($1_1) { continue; } break; } } $1_1 = $7_1 + 1 | 0; $2_1 = $3_1 + $1_1 | 0; if (($10_1 + 1 | 0) != ($7_1 | 0)) { continue; } break; } } $5_1 = $5_1 + -1 | 0; $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 256) { continue; } break; } } function $48($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0; $2_1 = global$0 - 240 | 0; global$0 = $2_1; $4_1 = $0 + 40 | 0; $32($4_1, $1_1); $3_1 = $0 + 80 | 0; $28($3_1); $42($2_1 + 192 | 0, $4_1); $38($2_1 + 144 | 0, $2_1 + 192 | 0, 1056); $43($2_1 + 192 | 0, $2_1 + 192 | 0, $3_1); $29($2_1 + 144 | 0, $2_1 + 144 | 0, $3_1); $42($2_1 + 96 | 0, $2_1 + 144 | 0); $38($2_1 + 96 | 0, $2_1 + 96 | 0, $2_1 + 144 | 0); $42($0, $2_1 + 96 | 0); $38($0, $0, $2_1 + 144 | 0); $38($0, $0, $2_1 + 192 | 0); $40($0, $0); $38($0, $0, $2_1 + 96 | 0); $38($0, $0, $2_1 + 192 | 0); $42($2_1 + 48 | 0, $0); $38($2_1 + 48 | 0, $2_1 + 48 | 0, $2_1 + 144 | 0); $43($2_1, $2_1 + 48 | 0, $2_1 + 192 | 0); label$1: { if ($37($2_1)) { $29($2_1, $2_1 + 48 | 0, $2_1 + 192 | 0); $3_1 = -1; if ($37($2_1)) { break label$1; } $38($0, $0, 1104); } if (($36($0) | 0) == (HEAPU82[$1_1 + 31 | 0] >>> 7 | 0)) { $39($0, $0); } $38($0 + 120 | 0, $0, $4_1); $3_1 = 0; } global$0 = $2_1 + 240 | 0; return $3_1; } function $49($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $5_1 = global$0 - 48 | 0; global$0 = $5_1; $3_1 = $1_1 + 40 | 0; $29($0, $3_1, $1_1); $4_1 = $0 + 40 | 0; $43($4_1, $3_1, $1_1); $3_1 = $0 + 80 | 0; $38($3_1, $0, $2_1); $38($4_1, $4_1, $2_1 + 40 | 0); $6_1 = $0 + 120 | 0; $38($6_1, $2_1 + 80 | 0, $1_1 + 120 | 0); $1_1 = $1_1 + 80 | 0; $29($5_1, $1_1, $1_1); $43($0, $3_1, $4_1); $29($4_1, $3_1, $4_1); $29($3_1, $5_1, $6_1); $43($6_1, $5_1, $6_1); global$0 = $5_1 + 48 | 0; } function $50($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $5_1 = global$0 - 48 | 0; global$0 = $5_1; $3_1 = $1_1 + 40 | 0; $29($0, $3_1, $1_1); $4_1 = $0 + 40 | 0; $43($4_1, $3_1, $1_1); $3_1 = $0 + 80 | 0; $38($3_1, $0, $2_1 + 40 | 0); $38($4_1, $4_1, $2_1); $6_1 = $0 + 120 | 0; $38($6_1, $2_1 + 80 | 0, $1_1 + 120 | 0); $1_1 = $1_1 + 80 | 0; $29($5_1, $1_1, $1_1); $43($0, $3_1, $4_1); $29($4_1, $3_1, $4_1); $43($3_1, $5_1, $6_1); $29($6_1, $5_1, $6_1); global$0 = $5_1 + 48 | 0; } function $51($0, $1_1) { var $2_1 = 0, $3_1 = 0; $2_1 = $1_1 + 120 | 0; $38($0, $1_1, $2_1); $3_1 = $1_1 + 40 | 0; $1_1 = $1_1 + 80 | 0; $38($0 + 40 | 0, $3_1, $1_1); $38($0 + 80 | 0, $1_1, $2_1); } function $52($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0; $2_1 = $1_1 + 120 | 0; $38($0, $1_1, $2_1); $3_1 = $1_1 + 40 | 0; $4_1 = $1_1 + 80 | 0; $38($0 + 40 | 0, $3_1, $4_1); $38($0 + 80 | 0, $4_1, $2_1); $38($0 + 120 | 0, $1_1, $3_1); } function $54($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $3_1 = global$0 - 48 | 0; global$0 = $3_1; $42($0, $1_1); $2_1 = $0 + 80 | 0; $6_1 = $1_1 + 40 | 0; $42($2_1, $6_1); $5_1 = $0 + 120 | 0; $41($5_1, $1_1 + 80 | 0); $4_1 = $0 + 40 | 0; $29($4_1, $1_1, $6_1); $42($3_1, $4_1); $29($4_1, $2_1, $0); $43($2_1, $2_1, $0); $43($0, $3_1, $4_1); $43($5_1, $5_1, $2_1); global$0 = $3_1 + 48 | 0; } function $56($0, $1_1) { var $2_1 = 0; $2_1 = global$0 - 128 | 0; global$0 = $2_1; $59($2_1 + 8 | 0, $1_1); $54($0, $2_1 + 8 | 0); global$0 = $2_1 + 128 | 0; } function $57($0, $1_1) { var $2_1 = 0; $2_1 = global$0 - 144 | 0; global$0 = $2_1; $35($2_1 + 96 | 0, $1_1 + 80 | 0); $38($2_1 + 48 | 0, $1_1, $2_1 + 96 | 0); $38($2_1, $1_1 + 40 | 0, $2_1 + 96 | 0); $44($0, $2_1); HEAP82[$0 + 31 | 0] = $36($2_1 + 48 | 0) << 7 ^ HEAPU82[$0 + 31 | 0]; global$0 = $2_1 + 144 | 0; } function $58($0, $1_1) { var $2_1 = 0; $2_1 = $1_1 + 40 | 0; $29($0, $2_1, $1_1); $43($0 + 40 | 0, $2_1, $1_1); $31($0 + 80 | 0, $1_1 + 80 | 0); $38($0 + 120 | 0, $1_1 + 120 | 0, 1152); } function $59($0, $1_1) { $31($0, $1_1); $31($0 + 40 | 0, $1_1 + 40 | 0); $31($0 + 80 | 0, $1_1 + 80 | 0); } function $61($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $2_1 = global$0 - 464 | 0; global$0 = $2_1; while (1) { $4_1 = $3_1 << 1; $6_1 = HEAPU82[$1_1 + $3_1 | 0]; HEAP82[$4_1 + ($2_1 + 400 | 0) | 0] = $6_1 & 15; HEAP82[($2_1 + 400 | 0) + ($4_1 | 1) | 0] = $6_1 >>> 4; $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 32) { continue; } break; } $3_1 = 0; while (1) { $4_1 = ($2_1 + 400 | 0) + $5_1 | 0; $3_1 = $3_1 + HEAPU82[$4_1 | 0] | 0; $1_1 = $3_1 + 8 | 0; HEAP82[$4_1 | 0] = $3_1 - ($1_1 & 240); $3_1 = $1_1 << 24 >> 28; $5_1 = $5_1 + 1 | 0; if (($5_1 | 0) != 63) { continue; } break; } HEAP82[$2_1 + 463 | 0] = HEAPU82[$2_1 + 463 | 0] + $3_1; $27($0); $28($0 + 40 | 0); $28($0 + 80 | 0); $27($0 + 120 | 0); $3_1 = 1; while (1) { $62($2_1, $3_1 >>> 1 | 0, HEAP82[($2_1 + 400 | 0) + $3_1 | 0]); $49($2_1 + 240 | 0, $0, $2_1); $52($0, $2_1 + 240 | 0); $1_1 = $3_1 >>> 0 < 62; $3_1 = $3_1 + 2 | 0; if ($1_1) { continue; } break; } $56($2_1 + 240 | 0, $0); $51($2_1 + 120 | 0, $2_1 + 240 | 0); $54($2_1 + 240 | 0, $2_1 + 120 | 0); $51($2_1 + 120 | 0, $2_1 + 240 | 0); $54($2_1 + 240 | 0, $2_1 + 120 | 0); $51($2_1 + 120 | 0, $2_1 + 240 | 0); $54($2_1 + 240 | 0, $2_1 + 120 | 0); $52($0, $2_1 + 240 | 0); $3_1 = 0; while (1) { $62($2_1, $3_1 >>> 1 | 0, HEAP82[($2_1 + 400 | 0) + $3_1 | 0]); $49($2_1 + 240 | 0, $0, $2_1); $52($0, $2_1 + 240 | 0); $1_1 = $3_1 >>> 0 < 62; $3_1 = $3_1 + 2 | 0; if ($1_1) { continue; } break; } global$0 = $2_1 + 464 | 0; } function $62($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0; $3_1 = global$0 - 128 | 0; global$0 = $3_1; $28($0); $28($0 + 40 | 0); $27($0 + 80 | 0); $1_1 = Math_imul2($1_1, 960); $4_1 = ($2_1 & 128) >>> 7 | 0; $2_1 = $2_1 - ((0 - $4_1 & $2_1) << 1) << 24 >> 24; $65($0, $1_1 + 2864 | 0, $64($2_1, 1)); $65($0, $1_1 + 2984 | 0, $64($2_1, 2)); $65($0, $1_1 + 3104 | 0, $64($2_1, 3)); $65($0, $1_1 + 3224 | 0, $64($2_1, 4)); $65($0, $1_1 + 3344 | 0, $64($2_1, 5)); $65($0, $1_1 + 3464 | 0, $64($2_1, 6)); $65($0, $1_1 + 3584 | 0, $64($2_1, 7)); $65($0, $1_1 + 3704 | 0, $64($2_1, 8)); $31($3_1 + 8 | 0, $0 + 40 | 0); $31($3_1 + 48 | 0, $0); $39($3_1 + 88 | 0, $0 + 80 | 0); $65($0, $3_1 + 8 | 0, $4_1); global$0 = $3_1 + 128 | 0; } function $64($0, $1_1) { return (($0 ^ $1_1) & 255) + -1 >>> 31 | 0; } function $65($0, $1_1, $2_1) { $30($0, $1_1, $2_1); $30($0 + 40 | 0, $1_1 + 40 | 0, $2_1); $30($0 + 80 | 0, $1_1 + 80 | 0, $2_1); } function $66($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $5_1 = global$0 - 48 | 0; global$0 = $5_1; $3_1 = $1_1 + 40 | 0; $29($0, $3_1, $1_1); $4_1 = $0 + 40 | 0; $43($4_1, $3_1, $1_1); $3_1 = $0 + 80 | 0; $38($3_1, $0, $2_1 + 40 | 0); $38($4_1, $4_1, $2_1); $6_1 = $0 + 120 | 0; $38($6_1, $2_1 + 120 | 0, $1_1 + 120 | 0); $38($0, $1_1 + 80 | 0, $2_1 + 80 | 0); $29($5_1, $0, $0); $43($0, $3_1, $4_1); $29($4_1, $3_1, $4_1); $43($3_1, $5_1, $6_1); $29($6_1, $5_1, $6_1); global$0 = $5_1 + 48 | 0; } function $67($0, $1_1, $2_1, $3_1, $4_1) { var $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0; $5_1 = global$0 - 480 | 0; global$0 = $5_1; label$1: { label$2: { if ($3_1 >>> 0 < 64 | HEAPU82[$2_1 + 63 | 0] > 31) { break label$2; } if ($48($5_1 + 128 | 0, $4_1)) { break label$2; } $8_1 = HEAPU82[$4_1 + 28 | 0] | HEAPU82[$4_1 + 29 | 0] << 8 | (HEAPU82[$4_1 + 30 | 0] << 16 | HEAPU82[$4_1 + 31 | 0] << 24); $7_1 = $5_1 + 472 | 0; $6_1 = $7_1; HEAP322[$6_1 >> 2] = HEAPU82[$4_1 + 24 | 0] | HEAPU82[$4_1 + 25 | 0] << 8 | (HEAPU82[$4_1 + 26 | 0] << 16 | HEAPU82[$4_1 + 27 | 0] << 24); HEAP322[$6_1 + 4 >> 2] = $8_1; $8_1 = HEAPU82[$4_1 + 20 | 0] | HEAPU82[$4_1 + 21 | 0] << 8 | (HEAPU82[$4_1 + 22 | 0] << 16 | HEAPU82[$4_1 + 23 | 0] << 24); $9_1 = $5_1 + 464 | 0; $6_1 = $9_1; HEAP322[$6_1 >> 2] = HEAPU82[$4_1 + 16 | 0] | HEAPU82[$4_1 + 17 | 0] << 8 | (HEAPU82[$4_1 + 18 | 0] << 16 | HEAPU82[$4_1 + 19 | 0] << 24); HEAP322[$6_1 + 4 >> 2] = $8_1; $8_1 = HEAPU82[$4_1 + 4 | 0] | HEAPU82[$4_1 + 5 | 0] << 8 | (HEAPU82[$4_1 + 6 | 0] << 16 | HEAPU82[$4_1 + 7 | 0] << 24); HEAP322[$5_1 + 448 >> 2] = HEAPU82[$4_1 | 0] | HEAPU82[$4_1 + 1 | 0] << 8 | (HEAPU82[$4_1 + 2 | 0] << 16 | HEAPU82[$4_1 + 3 | 0] << 24); HEAP322[$5_1 + 452 >> 2] = $8_1; $8_1 = HEAPU82[$4_1 + 12 | 0] | HEAPU82[$4_1 + 13 | 0] << 8 | (HEAPU82[$4_1 + 14 | 0] << 16 | HEAPU82[$4_1 + 15 | 0] << 24); HEAP322[$5_1 + 456 >> 2] = HEAPU82[$4_1 + 8 | 0] | HEAPU82[$4_1 + 9 | 0] << 8 | (HEAPU82[$4_1 + 10 | 0] << 16 | HEAPU82[$4_1 + 11 | 0] << 24); HEAP322[$5_1 + 460 >> 2] = $8_1; $4_1 = HEAPU82[$2_1 + 20 | 0] | HEAPU82[$2_1 + 21 | 0] << 8 | (HEAPU82[$2_1 + 22 | 0] << 16 | HEAPU82[$2_1 + 23 | 0] << 24); HEAP322[$5_1 + 432 >> 2] = HEAPU82[$2_1 + 16 | 0] | HEAPU82[$2_1 + 17 | 0] << 8 | (HEAPU82[$2_1 + 18 | 0] << 16 | HEAPU82[$2_1 + 19 | 0] << 24); HEAP322[$5_1 + 436 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 28 | 0] | HEAPU82[$2_1 + 29 | 0] << 8 | (HEAPU82[$2_1 + 30 | 0] << 16 | HEAPU82[$2_1 + 31 | 0] << 24); HEAP322[$5_1 + 440 >> 2] = HEAPU82[$2_1 + 24 | 0] | HEAPU82[$2_1 + 25 | 0] << 8 | (HEAPU82[$2_1 + 26 | 0] << 16 | HEAPU82[$2_1 + 27 | 0] << 24); HEAP322[$5_1 + 444 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 4 | 0] | HEAPU82[$2_1 + 5 | 0] << 8 | (HEAPU82[$2_1 + 6 | 0] << 16 | HEAPU82[$2_1 + 7 | 0] << 24); HEAP322[$5_1 + 416 >> 2] = HEAPU82[$2_1 | 0] | HEAPU82[$2_1 + 1 | 0] << 8 | (HEAPU82[$2_1 + 2 | 0] << 16 | HEAPU82[$2_1 + 3 | 0] << 24); HEAP322[$5_1 + 420 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 12 | 0] | HEAPU82[$2_1 + 13 | 0] << 8 | (HEAPU82[$2_1 + 14 | 0] << 16 | HEAPU82[$2_1 + 15 | 0] << 24); HEAP322[$5_1 + 424 >> 2] = HEAPU82[$2_1 + 8 | 0] | HEAPU82[$2_1 + 9 | 0] << 8 | (HEAPU82[$2_1 + 10 | 0] << 16 | HEAPU82[$2_1 + 11 | 0] << 24); HEAP322[$5_1 + 428 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 52 | 0] | HEAPU82[$2_1 + 53 | 0] << 8 | (HEAPU82[$2_1 + 54 | 0] << 16 | HEAPU82[$2_1 + 55 | 0] << 24); HEAP322[$5_1 + 400 >> 2] = HEAPU82[$2_1 + 48 | 0] | HEAPU82[$2_1 + 49 | 0] << 8 | (HEAPU82[$2_1 + 50 | 0] << 16 | HEAPU82[$2_1 + 51 | 0] << 24); HEAP322[$5_1 + 404 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 60 | 0] | HEAPU82[$2_1 + 61 | 0] << 8 | (HEAPU82[$2_1 + 62 | 0] << 16 | HEAPU82[$2_1 + 63 | 0] << 24); HEAP322[$5_1 + 408 >> 2] = HEAPU82[$2_1 + 56 | 0] | HEAPU82[$2_1 + 57 | 0] << 8 | (HEAPU82[$2_1 + 58 | 0] << 16 | HEAPU82[$2_1 + 59 | 0] << 24); HEAP322[$5_1 + 412 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 36 | 0] | HEAPU82[$2_1 + 37 | 0] << 8 | (HEAPU82[$2_1 + 38 | 0] << 16 | HEAPU82[$2_1 + 39 | 0] << 24); HEAP322[$5_1 + 384 >> 2] = HEAPU82[$2_1 + 32 | 0] | HEAPU82[$2_1 + 33 | 0] << 8 | (HEAPU82[$2_1 + 34 | 0] << 16 | HEAPU82[$2_1 + 35 | 0] << 24); HEAP322[$5_1 + 388 >> 2] = $4_1; $4_1 = HEAPU82[$2_1 + 44 | 0] | HEAPU82[$2_1 + 45 | 0] << 8 | (HEAPU82[$2_1 + 46 | 0] << 16 | HEAPU82[$2_1 + 47 | 0] << 24); HEAP322[$5_1 + 392 >> 2] = HEAPU82[$2_1 + 40 | 0] | HEAPU82[$2_1 + 41 | 0] << 8 | (HEAPU82[$2_1 + 42 | 0] << 16 | HEAPU82[$2_1 + 43 | 0] << 24); HEAP322[$5_1 + 396 >> 2] = $4_1; $8_1 = $3_1; $4_1 = $80($0, $2_1, $3_1); $2_1 = $4_1; $6_1 = HEAP322[$7_1 + 4 >> 2]; $7_1 = HEAP322[$7_1 >> 2]; HEAP82[$2_1 + 56 | 0] = $7_1; HEAP82[$2_1 + 57 | 0] = $7_1 >>> 8; HEAP82[$2_1 + 58 | 0] = $7_1 >>> 16; HEAP82[$2_1 + 59 | 0] = $7_1 >>> 24; HEAP82[$2_1 + 60 | 0] = $6_1; HEAP82[$2_1 + 61 | 0] = $6_1 >>> 8; HEAP82[$2_1 + 62 | 0] = $6_1 >>> 16; HEAP82[$2_1 + 63 | 0] = $6_1 >>> 24; $6_1 = HEAP322[$9_1 + 4 >> 2]; $7_1 = HEAP322[$9_1 >> 2]; HEAP82[$2_1 + 48 | 0] = $7_1; HEAP82[$2_1 + 49 | 0] = $7_1 >>> 8; HEAP82[$2_1 + 50 | 0] = $7_1 >>> 16; HEAP82[$2_1 + 51 | 0] = $7_1 >>> 24; HEAP82[$2_1 + 52 | 0] = $6_1; HEAP82[$2_1 + 53 | 0] = $6_1 >>> 8; HEAP82[$2_1 + 54 | 0] = $6_1 >>> 16; HEAP82[$2_1 + 55 | 0] = $6_1 >>> 24; $6_1 = HEAP322[$5_1 + 460 >> 2]; $7_1 = HEAP322[$5_1 + 456 >> 2]; HEAP82[$2_1 + 40 | 0] = $7_1; HEAP82[$2_1 + 41 | 0] = $7_1 >>> 8; HEAP82[$2_1 + 42 | 0] = $7_1 >>> 16; HEAP82[$2_1 + 43 | 0] = $7_1 >>> 24; HEAP82[$2_1 + 44 | 0] = $6_1; HEAP82[$2_1 + 45 | 0] = $6_1 >>> 8; HEAP82[$2_1 + 46 | 0] = $6_1 >>> 16; HEAP82[$2_1 + 47 | 0] = $6_1 >>> 24; $6_1 = HEAP322[$5_1 + 452 >> 2]; $7_1 = HEAP322[$5_1 + 448 >> 2]; HEAP82[$2_1 + 32 | 0] = $7_1; HEAP82[$2_1 + 33 | 0] = $7_1 >>> 8; HEAP82[$2_1 + 34 | 0] = $7_1 >>> 16; HEAP82[$2_1 + 35 | 0] = $7_1 >>> 24; HEAP82[$2_1 + 36 | 0] = $6_1; HEAP82[$2_1 + 37 | 0] = $6_1 >>> 8; HEAP82[$2_1 + 38 | 0] = $6_1 >>> 16; HEAP82[$2_1 + 39 | 0] = $6_1 >>> 24; $5($5_1 + 320 | 0, $2_1, $3_1); $69($5_1 + 320 | 0); $46($5_1 + 8 | 0, $5_1 + 320 | 0, $5_1 + 128 | 0, $5_1 + 384 | 0); $57($5_1 + 288 | 0, $5_1 + 8 | 0); if ($2($5_1 + 288 | 0, $5_1 + 416 | 0)) { break label$2; } $0 = $4_1; $4_1 = $4_1 - -64 | 0; $2_1 = -1; $3_1 = $3_1 + -64 | 0; if ($3_1 >>> 0 < 4294967232) { $2_1 = 0; } $0 = ($80($0, $4_1, $3_1) + $8_1 | 0) + -64 | 0; HEAP82[$0 + 56 | 0] = 0; HEAP82[$0 + 57 | 0] = 0; HEAP82[$0 + 58 | 0] = 0; HEAP82[$0 + 59 | 0] = 0; HEAP82[$0 + 60 | 0] = 0; HEAP82[$0 + 61 | 0] = 0; HEAP82[$0 + 62 | 0] = 0; HEAP82[$0 + 63 | 0] = 0; HEAP82[$0 + 48 | 0] = 0; HEAP82[$0 + 49 | 0] = 0; HEAP82[$0 + 50 | 0] = 0; HEAP82[$0 + 51 | 0] = 0; HEAP82[$0 + 52 | 0] = 0; HEAP82[$0 + 53 | 0] = 0; HEAP82[$0 + 54 | 0] = 0; HEAP82[$0 + 55 | 0] = 0; HEAP82[$0 + 40 | 0] = 0; HEAP82[$0 + 41 | 0] = 0; HEAP82[$0 + 42 | 0] = 0; HEAP82[$0 + 43 | 0] = 0; HEAP82[$0 + 44 | 0] = 0; HEAP82[$0 + 45 | 0] = 0; HEAP82[$0 + 46 | 0] = 0; HEAP82[$0 + 47 | 0] = 0; HEAP82[$0 + 32 | 0] = 0; HEAP82[$0 + 33 | 0] = 0; HEAP82[$0 + 34 | 0] = 0; HEAP82[$0 + 35 | 0] = 0; HEAP82[$0 + 36 | 0] = 0; HEAP82[$0 + 37 | 0] = 0; HEAP82[$0 + 38 | 0] = 0; HEAP82[$0 + 39 | 0] = 0; HEAP82[$0 + 24 | 0] = 0; HEAP82[$0 + 25 | 0] = 0; HEAP82[$0 + 26 | 0] = 0; HEAP82[$0 + 27 | 0] = 0; HEAP82[$0 + 28 | 0] = 0; HEAP82[$0 + 29 | 0] = 0; HEAP82[$0 + 30 | 0] = 0; HEAP82[$0 + 31 | 0] = 0; HEAP82[$0 + 16 | 0] = 0; HEAP82[$0 + 17 | 0] = 0; HEAP82[$0 + 18 | 0] = 0; HEAP82[$0 + 19 | 0] = 0; HEAP82[$0 + 20 | 0] = 0; HEAP82[$0 + 21 | 0] = 0; HEAP82[$0 + 22 | 0] = 0; HEAP82[$0 + 23 | 0] = 0; HEAP82[$0 + 8 | 0] = 0; HEAP82[$0 + 9 | 0] = 0; HEAP82[$0 + 10 | 0] = 0; HEAP82[$0 + 11 | 0] = 0; HEAP82[$0 + 12 | 0] = 0; HEAP82[$0 + 13 | 0] = 0; HEAP82[$0 + 14 | 0] = 0; HEAP82[$0 + 15 | 0] = 0; HEAP82[$0 | 0] = 0; HEAP82[$0 + 1 | 0] = 0; HEAP82[$0 + 2 | 0] = 0; HEAP82[$0 + 3 | 0] = 0; HEAP82[$0 + 4 | 0] = 0; HEAP82[$0 + 5 | 0] = 0; HEAP82[$0 + 6 | 0] = 0; HEAP82[$0 + 7 | 0] = 0; HEAP322[$1_1 >> 2] = $3_1; HEAP322[$1_1 + 4 >> 2] = $2_1; $0 = 0; break label$1; } HEAP322[$1_1 >> 2] = -1; HEAP322[$1_1 + 4 >> 2] = -1; $79($0, $3_1); $0 = -1; } global$0 = $5_1 + 480 | 0; return $0; } function $68($0, $1_1, $2_1, $3_1) { var $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, $52_1 = 0, $53 = 0, $54_1 = 0, $55 = 0, $56_1 = 0, $57_1 = 0, $58_1 = 0, $59_1 = 0, $60 = 0, $61_1 = 0, $62_1 = 0, $63 = 0, $64_1 = 0, $65_1 = 0, $66_1 = 0, $67_1 = 0, $68_1 = 0, $69_1 = 0, $70_1 = 0, $71_1 = 0, $72_1 = 0, $73_1 = 0, $74 = 0, $75_1 = 0, $76_1 = 0, $77 = 0, $78_1 = 0, $79_1 = 0, $80_1 = 0, $81_1 = 0, $82_1 = 0, $83_1 = 0, $84_1 = 0, $85_1 = 0, $86_1 = 0, $87_1 = 0, $88_1 = 0, $89 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0; $100 = $34($1_1); $105 = $33($1_1 + 2 | 0); $84_1 = i64toi32_i32$HIGH_BITS; $25_1 = $34($1_1 + 5 | 0); $85_1 = i64toi32_i32$HIGH_BITS; $91 = $33($1_1 + 7 | 0); $86_1 = i64toi32_i32$HIGH_BITS; $92 = $33($1_1 + 10 | 0); $21_1 = i64toi32_i32$HIGH_BITS; $93 = $34($1_1 + 13 | 0); $18_1 = i64toi32_i32$HIGH_BITS; $94 = $33($1_1 + 15 | 0); $22_1 = i64toi32_i32$HIGH_BITS; $95 = $34($1_1 + 18 | 0); $19 = i64toi32_i32$HIGH_BITS; $96 = $34($1_1 + 21 | 0); $27_1 = $33($1_1 + 23 | 0); $11_1 = i64toi32_i32$HIGH_BITS; $30_1 = $34($1_1 + 26 | 0); $8_1 = i64toi32_i32$HIGH_BITS; $16_1 = $33($1_1 + 28 | 0); $6_1 = i64toi32_i32$HIGH_BITS; $97 = $34($2_1); $98 = $33($2_1 + 2 | 0); $15_1 = i64toi32_i32$HIGH_BITS; $114 = $34($2_1 + 5 | 0); $13_1 = i64toi32_i32$HIGH_BITS; $115 = $33($2_1 + 7 | 0); $23_1 = i64toi32_i32$HIGH_BITS; $87_1 = $33($2_1 + 10 | 0); $20_1 = i64toi32_i32$HIGH_BITS; $116 = $34($2_1 + 13 | 0); $17_1 = i64toi32_i32$HIGH_BITS; $58_1 = $33($2_1 + 15 | 0); $10_1 = i64toi32_i32$HIGH_BITS; $106 = $34($2_1 + 18 | 0); $7_1 = i64toi32_i32$HIGH_BITS; $107 = $34($2_1 + 21 | 0); $14_1 = $33($2_1 + 23 | 0); $9_1 = i64toi32_i32$HIGH_BITS; $12_1 = $34($2_1 + 26 | 0); $5_1 = i64toi32_i32$HIGH_BITS; $2_1 = $33($2_1 + 28 | 0); $1_1 = i64toi32_i32$HIGH_BITS; $122 = $34($3_1); $123 = $33($3_1 + 2 | 0); $124 = i64toi32_i32$HIGH_BITS; $125 = $34($3_1 + 5 | 0); $126 = i64toi32_i32$HIGH_BITS; $127 = $33($3_1 + 7 | 0); $90 = i64toi32_i32$HIGH_BITS; $117 = $33($3_1 + 10 | 0); $31_1 = i64toi32_i32$HIGH_BITS; $118 = $34($3_1 + 13 | 0); $28_1 = i64toi32_i32$HIGH_BITS; $61_1 = $33($3_1 + 15 | 0); $26_1 = i64toi32_i32$HIGH_BITS; $32_1 = $34($3_1 + 18 | 0); $24_1 = i64toi32_i32$HIGH_BITS; $62_1 = $34($3_1 + 21 | 0); $128 = $0; $4_1 = $1_1 >>> 7 | 0; $59_1 = $4_1; $33_1 = ($1_1 & 127) << 25 | $2_1 >>> 7; $34_1 = (($8_1 & 3) << 30 | $30_1 >>> 2) & 2097151; $1_1 = __wasm_i64_mul($33_1, $4_1, $34_1, 0); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $1_1; $35_1 = (($5_1 & 3) << 30 | $12_1 >>> 2) & 2097151; $36_1 = ($6_1 & 127) << 25 | $16_1 >>> 7; $37_1 = $6_1 >>> 7 | 0; $1_1 = __wasm_i64_mul($35_1, 0, $36_1, $37_1); $5_1 = $2_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $8_1 = $5_1; $5_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($34_1, $63, $35_1, $64_1); $4_1 = i64toi32_i32$HIGH_BITS; $38_1 = (($9_1 & 31) << 27 | $14_1 >>> 5) & 2097151; $2_1 = __wasm_i64_mul($38_1, 0, $36_1, $37_1); $9_1 = $2_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $9_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $39_1 = (($11_1 & 31) << 27 | $27_1 >>> 5) & 2097151; $2_1 = __wasm_i64_mul($33_1, $59_1, $39_1, 0); $9_1 = $2_1 + $9_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $6_1 = $9_1; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $16_1 = $4_1; $1_1 = $6_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $29_1 = $1_1 - -1048576 | 0; $14_1 = $4_1; $2_1 = $4_1 >>> 21 | 0; $4_1 = ($4_1 & 2097151) << 11 | $29_1 >>> 21; $9_1 = $4_1 + $8_1 | 0; $1_1 = $2_1 + $5_1 | 0; $5_1 = $9_1; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $12_1 = $1_1; $1_1 = $5_1; $8_1 = $12_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $30_1 = $1_1 - -1048576 | 0; $11_1 = $8_1; $9_1 = __wasm_i64_mul($33_1, $59_1, $36_1, $37_1); $1_1 = $9_1; $99 = $1_1 - -1048576 | 0; $88_1 = i64toi32_i32$HIGH_BITS; $27_1 = $88_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $4_1 = $27_1; $2_1 = $8_1 >>> 21 | 0; $27_1 = ($8_1 & 2097151) << 11 | $30_1 >>> 21; $8_1 = $99 & -2097152; $9_1 = $1_1 - $8_1 | 0; $89 = $27_1 + $9_1 | 0; $1_1 = ($88_1 - (($4_1 & 2147483647) + ($1_1 >>> 0 < $8_1 >>> 0) | 0) | 0) + $2_1 | 0; $108 = $89; $1_1 = $89 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $109 = $1_1; $8_1 = __wasm_i64_mul($89, $1_1, -683901, -1); $9_1 = i64toi32_i32$HIGH_BITS; $1_1 = $4_1 >>> 21 | 0; $89 = $1_1; $101 = ($4_1 & 2097151) << 11 | $99 >>> 21; $1_1 = __wasm_i64_mul($101, $1_1, 136657, 0); $4_1 = $1_1 + $8_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $27_1 = $4_1; $8_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $40_1 = (($17_1 & 1) << 31 | $116 >>> 1) & 2097151; $1_1 = __wasm_i64_mul($40_1, 0, $34_1, $63); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $41_1 = (($20_1 & 15) << 28 | $87_1 >>> 4) & 2097151; $1_1 = __wasm_i64_mul($41_1, 0, $36_1, $37_1); $9_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $42_1 = (($10_1 & 63) << 26 | $58_1 >>> 6) & 2097151; $1_1 = __wasm_i64_mul($42_1, 0, $39_1, $65_1); $9_1 = $1_1 + $9_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = 0; $60 = $1_1; $43_1 = $107 & 2097151; $44_1 = (($19 & 7) << 29 | $95 >>> 3) & 2097151; $4_1 = __wasm_i64_mul($43_1, $1_1, $44_1, 0); $9_1 = $9_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $9_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $45_1 = (($7_1 & 7) << 29 | $106 >>> 3) & 2097151; $46_1 = $96 & 2097151; $2_1 = __wasm_i64_mul($45_1, 0, $46_1, 0); $9_1 = $2_1 + $9_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $9_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $47_1 = (($22_1 & 63) << 26 | $94 >>> 6) & 2097151; $1_1 = __wasm_i64_mul($38_1, $66_1, $47_1, 0); $9_1 = $1_1 + $9_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $48_1 = (($18_1 & 1) << 31 | $93 >>> 1) & 2097151; $4_1 = __wasm_i64_mul($35_1, $64_1, $48_1, 0); $9_1 = $4_1 + $9_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $9_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $49_1 = (($21_1 & 15) << 28 | $92 >>> 4) & 2097151; $2_1 = __wasm_i64_mul($33_1, $59_1, $49_1, 0); $9_1 = $2_1 + $9_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $19 = $9_1; $9_1 = $9_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($34_1, $63, $41_1, $67_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $50_1 = (($23_1 & 127) << 25 | $115 >>> 7) & 2097151; $1_1 = __wasm_i64_mul($50_1, 0, $36_1, $37_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($40_1, $68_1, $39_1, $65_1); $7_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($46_1, $69_1, $42_1, $70_1); $7_1 = $2_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($47_1, $71_1, $43_1, $60); $7_1 = $1_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $7_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($44_1, $72_1, $45_1, $73_1); $7_1 = $4_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($38_1, $66_1, $48_1, $74); $7_1 = $4_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($35_1, $64_1, $49_1, $75_1); $7_1 = $4_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $51_1 = (($86_1 & 127) << 25 | $91 >>> 7) & 2097151; $2_1 = __wasm_i64_mul($33_1, $59_1, $51_1, 0); $7_1 = $2_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $20_1 = $7_1; $4_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $10_1 = $4_1; $1_1 = $7_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $17_1 = $1_1 - -1048576 | 0; $7_1 = $4_1; $2_1 = $4_1 >> 21; $4_1 = ($4_1 & 2097151) << 11 | $17_1 >>> 21; $23_1 = $4_1 + $19 | 0; $1_1 = $2_1 + $9_1 | 0; $2_1 = $23_1; $9_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = $9_1 + $8_1 | 0; $8_1 = $2_1 + $27_1 | 0; if ($8_1 >>> 0 < $2_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $4_1 = $8_1; $21_1 = $2_1 - -1048576 | 0; $8_1 = $9_1 - (($2_1 >>> 0 < 4293918720) + -1 | 0) | 0; $9_1 = $8_1; $2_1 = $4_1; $4_1 = $21_1 & -2097152; $22_1 = $2_1 - $4_1 | 0; $19 = $1_1 - (($2_1 >>> 0 < $4_1 >>> 0) + $9_1 | 0) | 0; $1_1 = $30_1 & -2097152; $4_1 = $12_1 - (($11_1 & 2147483647) + ($5_1 >>> 0 < $1_1 >>> 0) | 0) | 0; $102 = $5_1 - $1_1 | 0; $91 = $4_1; $1_1 = __wasm_i64_mul($101, $89, -997805, -1); $5_1 = $1_1 + $20_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $10_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $5_1; $5_1 = __wasm_i64_mul($108, $109, 136657, 0); $10_1 = $1_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = __wasm_i64_mul($102, $4_1, -683901, -1); $4_1 = $2_1 + $10_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($10_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1) | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $17_1 & -2097152; $8_1 = $4_1 - $2_1 | 0; $10_1 = $1_1 - (($4_1 >>> 0 < $2_1 >>> 0) + $7_1 | 0) | 0; $1_1 = __wasm_i64_mul($34_1, $63, $50_1, $76_1); $4_1 = i64toi32_i32$HIGH_BITS; $52_1 = (($13_1 & 3) << 30 | $114 >>> 2) & 2097151; $2_1 = __wasm_i64_mul($52_1, 0, $36_1, $37_1); $5_1 = $2_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($39_1, $65_1, $41_1, $67_1); $5_1 = $2_1 + $5_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($40_1, $68_1, $46_1, $69_1); $5_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($44_1, $72_1, $42_1, $70_1); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($43_1, $60, $48_1, $74); $5_1 = $4_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($45_1, $73_1, $47_1, $71_1); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($38_1, $66_1, $49_1, $75_1); $5_1 = $2_1 + $5_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($35_1, $64_1, $51_1, $77); $5_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $53 = (($85_1 & 3) << 30 | $25_1 >>> 2) & 2097151; $4_1 = __wasm_i64_mul($33_1, $59_1, $53, 0); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $7_1 = $5_1; $5_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($34_1, $63, $52_1, $78_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $54_1 = (($15_1 & 31) << 27 | $98 >>> 5) & 2097151; $1_1 = __wasm_i64_mul($54_1, 0, $36_1, $37_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($39_1, $65_1, $50_1, $76_1); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($41_1, $67_1, $46_1, $69_1); $11_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $11_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($40_1, $68_1, $44_1, $72_1); $4_1 = $2_1 + $11_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($47_1, $71_1, $42_1, $70_1); $11_1 = $2_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $11_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($43_1, $60, $49_1, $75_1); $11_1 = $1_1 + $11_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $11_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($45_1, $73_1, $48_1, $74); $4_1 = $1_1 + $11_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($38_1, $66_1, $51_1, $77); $11_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $11_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($35_1, $64_1, $53, $79_1); $4_1 = $2_1 + $11_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $55 = (($84_1 & 31) << 27 | $105 >>> 5) & 2097151; $2_1 = __wasm_i64_mul($33_1, $59_1, $55, 0); $11_1 = $2_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $23_1 = $11_1; $4_1 = $11_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $106 = $4_1; $1_1 = $11_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $114 = $1_1 - -1048576 | 0; $107 = $4_1; $1_1 = $4_1 >> 21; $2_1 = ($4_1 & 2097151) << 11 | $114 >>> 21; $4_1 = $2_1 + $7_1 | 0; $1_1 = $1_1 + $5_1 | 0; $20_1 = $4_1; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $88_1 = $1_1; $1_1 = $4_1; $4_1 = $88_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $115 = $1_1 - -1048576 | 0; $27_1 = $4_1; $2_1 = ($4_1 & 2097151) << 11 | $115 >>> 21; $5_1 = $2_1 + $8_1 | 0; $4_1 = ($4_1 >> 21) + $10_1 | 0; $17_1 = $5_1; $4_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $30_1 = $4_1; $1_1 = $5_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $87_1 = $1_1 - -1048576 | 0; $84_1 = $4_1; $1_1 = $4_1 >> 21; $2_1 = ($4_1 & 2097151) << 11 | $87_1 >>> 21; $4_1 = $2_1 + $22_1 | 0; $1_1 = $1_1 + $19 | 0; $7_1 = $4_1; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $19 = $1_1; $1_1 = $4_1; $4_1 = $19 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $58_1 = $1_1 - -1048576 | 0; $15_1 = $4_1; $12_1 = ($4_1 & 2097151) << 11 | $58_1 >>> 21; $10_1 = $4_1 >> 21; $1_1 = __wasm_i64_mul($34_1, $63, $42_1, $70_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($36_1, $37_1, $40_1, $68_1); $5_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($46_1, $69_1, $43_1, $60); $5_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($39_1, $65_1, $45_1, $73_1); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($38_1, $66_1, $44_1, $72_1); $5_1 = $4_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($35_1, $64_1, $47_1, $71_1); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($33_1, $59_1, $48_1, $74); $5_1 = $2_1 + $5_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $8_1 = __wasm_i64_mul($101, $89, -683901, -1); $11_1 = $5_1 + $8_1 | 0; $1_1 = $4_1; $2_1 = $1_1 + i64toi32_i32$HIGH_BITS | 0; $2_1 = $11_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $11_1; $8_1 = $1_1; $1_1 = $5_1; $8_1 = $8_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $18_1 = $1_1 - -1048576 | 0; $1_1 = $4_1; $4_1 = $18_1 & -2097152; $11_1 = $1_1 - $4_1 | 0; $5_1 = $8_1; $4_1 = $2_1 - ($5_1 + ($1_1 >>> 0 < $4_1 >>> 0) | 0) | 0; $1_1 = $9_1 >> 21; $2_1 = ($9_1 & 2097151) << 11 | $21_1 >>> 21; $9_1 = $2_1 + $11_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $9_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $9_1; $22_1 = $2_1 - -1048576 | 0; $11_1 = $1_1 - (($2_1 >>> 0 < 4293918720) + -1 | 0) | 0; $4_1 = $11_1; $8_1 = $22_1 & -2097152; $9_1 = $2_1 - $8_1 | 0; $12_1 = $9_1 + $12_1 | 0; $2_1 = ($1_1 - (($2_1 >>> 0 < $8_1 >>> 0) + $4_1 | 0) | 0) + $10_1 | 0; $110 = $12_1; $2_1 = $12_1 >>> 0 < $9_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $92 = $2_1; $13_1 = __wasm_i64_mul($12_1, $2_1, -683901, -1); $12_1 = i64toi32_i32$HIGH_BITS; $8_1 = ($4_1 & 2097151) << 11 | $22_1 >>> 21; $9_1 = $4_1 >> 21; $2_1 = __wasm_i64_mul($39_1, $65_1, $43_1, $60); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($36_1, $37_1, $42_1, $70_1); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($34_1, $63, $45_1, $73_1); $10_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $10_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($38_1, $66_1, $46_1, $69_1); $10_1 = $1_1 + $10_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $10_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($35_1, $64_1, $44_1, $72_1); $10_1 = $1_1 + $10_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $10_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($33_1, $59_1, $47_1, $71_1); $10_1 = $4_1 + $10_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $10_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $5_1 >> 21; $2_1 = ($5_1 & 2097151) << 11 | $18_1 >>> 21; $5_1 = $2_1 + $10_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $5_1; $21_1 = $2_1 - -1048576 | 0; $10_1 = $1_1 - (($2_1 >>> 0 < 4293918720) + -1 | 0) | 0; $11_1 = $10_1; $5_1 = $21_1 & -2097152; $4_1 = $2_1 - $5_1 | 0; $8_1 = $4_1 + $8_1 | 0; $1_1 = ($1_1 - (($2_1 >>> 0 < $5_1 >>> 0) + $10_1 | 0) | 0) + $9_1 | 0; $111 = $8_1; $1_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $93 = $1_1; $2_1 = __wasm_i64_mul($8_1, $1_1, 136657, 0); $4_1 = $2_1 + $13_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $12_1 | 0; $85_1 = $4_1; $13_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = $29_1 & -2097152; $18_1 = $6_1 - $1_1 | 0; $22_1 = $16_1 - (($14_1 & 2147483647) + ($6_1 >>> 0 < $1_1 >>> 0) | 0) | 0; $1_1 = __wasm_i64_mul($34_1, $63, $38_1, $66_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($36_1, $37_1, $43_1, $60); $5_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($35_1, $64_1, $39_1, $65_1); $5_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($33_1, $59_1, $46_1, $69_1); $4_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $6_1 = $4_1; $5_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($36_1, $37_1, $45_1, $73_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($34_1, $63, $43_1, $60); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($38_1, $66_1, $39_1, $65_1); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($35_1, $64_1, $46_1, $69_1); $9_1 = $1_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($33_1, $59_1, $44_1, $72_1); $9_1 = $2_1 + $9_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $9_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $8_1 = $1_1; $1_1 = $9_1; $2_1 = $8_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $14_1 = $1_1 - -1048576 | 0; $10_1 = $2_1; $1_1 = ($2_1 & 2097151) << 11 | $14_1 >>> 21; $6_1 = $1_1 + $6_1 | 0; $2_1 = ($2_1 >> 21) + $5_1 | 0; $5_1 = $6_1; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = $2_1; $1_1 = $5_1; $16_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $12_1 = $1_1 - -1048576 | 0; $2_1 = $16_1; $4_1 = $2_1 >> 21; $16_1 = ($2_1 & 2097151) << 11 | $12_1 >>> 21; $18_1 = $16_1 + $18_1 | 0; $1_1 = $4_1 + $22_1 | 0; $112 = $18_1; $1_1 = $18_1 >>> 0 < $16_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $94 = $1_1; $4_1 = __wasm_i64_mul($18_1, $1_1, 470296, 0); $16_1 = i64toi32_i32$HIGH_BITS; $1_1 = $12_1 & -2097152; $2_1 = $6_1 - (($5_1 >>> 0 < $1_1 >>> 0) + $2_1 | 0) | 0; $103 = $5_1 - $1_1 | 0; $95 = $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($102, $91, 666643, 0); $5_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $16_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($103, $2_1, 654183, 0); $5_1 = $4_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $6_1 = $5_1; $4_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $14_1 & -2097152; $1_1 = $9_1 - $2_1 | 0; $9_1 = $8_1 - (($9_1 >>> 0 < $2_1 >>> 0) + $10_1 | 0) | 0; $5_1 = ($11_1 & 2097151) << 11 | $21_1 >>> 21; $10_1 = $5_1 + $1_1 | 0; $1_1 = ($11_1 >> 21) + $9_1 | 0; $113 = $10_1; $1_1 = $10_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $96 = $1_1; $1_1 = __wasm_i64_mul($10_1, $1_1, -997805, -1); $5_1 = $1_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $14_1 = $5_1; $8_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($46_1, $69_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $56_1 = $97 & 2097151; $1_1 = __wasm_i64_mul($56_1, 0, $39_1, $65_1); $5_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($44_1, $72_1, $52_1, $78_1); $5_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($47_1, $71_1, $50_1, $76_1); $4_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($41_1, $67_1, $48_1, $74); $5_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($40_1, $68_1, $49_1, $75_1); $4_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($42_1, $70_1, $51_1, $77); $5_1 = $1_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($43_1, $60, $55, $81_1); $5_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($45_1, $73_1, $53, $79_1); $4_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $57_1 = $100 & 2097151; $4_1 = __wasm_i64_mul($38_1, $66_1, $57_1, 0); $5_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $5_1; $2_1 = $1_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $33($3_1 + 23 | 0); $4_1 = i64toi32_i32$HIGH_BITS; $4_1 = (($4_1 & 31) << 27 | $1_1 >>> 5) & 2097151; $1_1 = $5_1 + $4_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $12_1 = $1_1; $9_1 = $2_1; $2_1 = __wasm_i64_mul($44_1, $72_1, $54_1, $80_1); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($46_1, $69_1, $56_1, $82_1); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($47_1, $71_1, $52_1, $78_1); $4_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($48_1, $74, $50_1, $76_1); $5_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($41_1, $67_1, $49_1, $75_1); $5_1 = $1_1 + $5_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($40_1, $68_1, $51_1, $77); $5_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($42_1, $70_1, $53, $79_1); $5_1 = $4_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($43_1, $60, $57_1, $83_1); $4_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($45_1, $73_1, $55, $81_1); $5_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $62_1 & 2097151; $5_1 = $1_1 + $5_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $4_1; $1_1 = $5_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $11_1 = $1_1 - -1048576 | 0; $6_1 = $4_1; $1_1 = $4_1 >> 21; $2_1 = ($4_1 & 2097151) << 11 | $11_1 >>> 21; $4_1 = $2_1 + $12_1 | 0; $1_1 = $1_1 + $9_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $9_1 = $1_1; $2_1 = $1_1 + $8_1 | 0; $1_1 = $4_1; $8_1 = $1_1 + $14_1 | 0; if ($8_1 >>> 0 < $1_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $1_1 = $8_1; $8_1 = $9_1 - (($4_1 >>> 0 < 4293918720) + -1 | 0) | 0; $9_1 = $8_1; $99 = $4_1 - -1048576 | 0; $4_1 = $99 & -2097152; $86_1 = $1_1 - $4_1 | 0; $21_1 = $2_1 - (($1_1 >>> 0 < $4_1 >>> 0) + $9_1 | 0) | 0; $2_1 = __wasm_i64_mul($103, $95, 470296, 0); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($112, $94, 666643, 0); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($113, $96, 654183, 0); $8_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $5_1 + $8_1 | 0; $4_1 = $10_1 + ($8_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) | 0; $4_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = $1_1; $1_1 = $11_1 & -2097152; $14_1 = $2_1 - $1_1 | 0; $10_1 = $4_1 - (($2_1 >>> 0 < $1_1 >>> 0) + $6_1 | 0) | 0; $1_1 = __wasm_i64_mul($47_1, $71_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($44_1, $72_1, $56_1, $82_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($48_1, $74, $52_1, $78_1); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($49_1, $75_1, $50_1, $76_1); $5_1 = $1_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($41_1, $67_1, $51_1, $77); $5_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($40_1, $68_1, $53, $79_1); $4_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($42_1, $70_1, $55, $81_1); $5_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($45_1, $73_1, $57_1, $83_1); $4_1 = $1_1 + $5_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = $2_1; $2_1 = (($24_1 & 7) << 29 | $32_1 >>> 3) & 2097151; $1_1 = $2_1 + $1_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $4_1 = $4_1 + 1 | 0; } $6_1 = $1_1; $5_1 = $4_1; $2_1 = __wasm_i64_mul($48_1, $74, $54_1, $80_1); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($47_1, $71_1, $56_1, $82_1); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($49_1, $75_1, $52_1, $78_1); $8_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($51_1, $77, $50_1, $76_1); $8_1 = $4_1 + $8_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($41_1, $67_1, $53, $79_1); $8_1 = $4_1 + $8_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($40_1, $68_1, $55, $81_1); $8_1 = $1_1 + $8_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $8_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($42_1, $70_1, $57_1, $83_1); $8_1 = $2_1 + $8_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $8_1; $2_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = (($26_1 & 63) << 26 | $61_1 >>> 6) & 2097151; $1_1 = $8_1 + $4_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $18_1 = $1_1; $12_1 = $2_1; $2_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $29_1 = $1_1 - -1048576 | 0; $16_1 = $2_1; $4_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $29_1 >>> 21; $6_1 = $2_1 + $6_1 | 0; $1_1 = $4_1 + $5_1 | 0; $1_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $11_1 = $1_1; $1_1 = $6_1; $2_1 = $11_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $22_1 = $1_1 - -1048576 | 0; $8_1 = $2_1; $1_1 = ($2_1 & 2097151) << 11 | $22_1 >>> 21; $5_1 = $1_1 + $14_1 | 0; $2_1 = ($2_1 >> 21) + $10_1 | 0; $26_1 = $5_1; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $2_1; $1_1 = $5_1; $2_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $24_1 = $1_1 - -1048576 | 0; $14_1 = $2_1; $4_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $24_1 >>> 21; $5_1 = $2_1 + $86_1 | 0; $1_1 = $4_1 + $21_1 | 0; $4_1 = $5_1; $5_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $5_1 + $13_1 | 0; $1_1 = $4_1; $13_1 = $1_1 + $85_1 | 0; if ($13_1 >>> 0 < $1_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $1_1 = $13_1; $13_1 = $5_1 - (($4_1 >>> 0 < 4293918720) + -1 | 0) | 0; $5_1 = $13_1; $100 = $4_1 - -1048576 | 0; $4_1 = $100 & -2097152; $105 = $1_1 - $4_1 | 0; $25_1 = $2_1 - (($1_1 >>> 0 < $4_1 >>> 0) + $5_1 | 0) | 0; $1_1 = __wasm_i64_mul($111, $93, -997805, -1); $2_1 = $1_1 + $26_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $10_1 | 0; $97 = $2_1; $13_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($113, $96, 470296, 0); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($103, $95, 666643, 0); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1 + $6_1 | 0; $2_1 = $2_1 + $11_1 | 0; $2_1 = $1_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $1_1; $1_1 = $22_1 & -2097152; $32_1 = $4_1 - $1_1 | 0; $62_1 = $2_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $8_1 | 0) | 0; $2_1 = __wasm_i64_mul($113, $96, 666643, 0); $4_1 = $2_1 + $18_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $12_1 | 0; $26_1 = $4_1; $10_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($49_1, $75_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($48_1, $74, $56_1, $82_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($51_1, $77, $52_1, $78_1); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($53, $79_1, $50_1, $76_1); $6_1 = $1_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($41_1, $67_1, $55, $81_1); $6_1 = $2_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($40_1, $68_1, $57_1, $83_1); $4_1 = $2_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1; $1_1 = $4_1; $4_1 = (($28_1 & 1) << 31 | $118 >>> 1) & 2097151; $1_1 = $1_1 + $4_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $8_1 = $1_1; $6_1 = $2_1; $1_1 = __wasm_i64_mul($51_1, $77, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($49_1, $75_1, $56_1, $82_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($53, $79_1, $52_1, $78_1); $11_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $11_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($55, $81_1, $50_1, $76_1); $11_1 = $2_1 + $11_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $11_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($41_1, $67_1, $57_1, $83_1); $11_1 = $2_1 + $11_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $11_1; $2_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = (($31_1 & 15) << 28 | $117 >>> 4) & 2097151; $1_1 = $11_1 + $4_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $12_1 = $1_1; $85_1 = $2_1; $2_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $116 = $1_1 - -1048576 | 0; $86_1 = $2_1; $4_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $116 >>> 21; $8_1 = $2_1 + $8_1 | 0; $1_1 = $4_1 + $6_1 | 0; $11_1 = $8_1; $1_1 = $8_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $21_1 = $1_1; $1_1 = $8_1; $2_1 = $21_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $117 = $1_1 - -1048576 | 0; $18_1 = $2_1; $1_1 = ($2_1 & 2097151) << 11 | $117 >>> 21; $6_1 = $1_1 + $26_1 | 0; $2_1 = ($2_1 >> 21) + $10_1 | 0; $4_1 = $6_1; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $29_1 & -2097152; $22_1 = $2_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $16_1 | 0) | 0; $8_1 = $4_1 - $1_1 | 0; $1_1 = $8_1; $4_1 = $22_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $118 = $1_1 - -1048576 | 0; $31_1 = $4_1; $2_1 = ($4_1 & 2097151) << 11 | $118 >>> 21; $6_1 = $2_1 + $32_1 | 0; $4_1 = ($4_1 >> 21) + $62_1 | 0; $61_1 = $6_1; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $28_1 = $4_1; $1_1 = $6_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $32_1 = $1_1 - -1048576 | 0; $26_1 = $4_1; $1_1 = $58_1 & -2097152; $6_1 = $19 - (($7_1 >>> 0 < $1_1 >>> 0) + $15_1 | 0) | 0; $104 = $7_1 - $1_1 | 0; $98 = $6_1; $1_1 = $4_1 >> 21; $4_1 = ($4_1 & 2097151) << 11 | $32_1 >>> 21; $7_1 = $4_1 + $97 | 0; $2_1 = $1_1 + $13_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($110, $92, 136657, 0); $4_1 = $24_1 & -2097152; $10_1 = $1_1 + ($7_1 - $4_1 | 0) | 0; $4_1 = i64toi32_i32$HIGH_BITS + ($2_1 - (($7_1 >>> 0 < $4_1 >>> 0) + $14_1 | 0) | 0) | 0; $4_1 = $10_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($104, $6_1, -683901, -1); $6_1 = $1_1 + $10_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $10_1 = $6_1; $2_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $24_1 = $2_1; $1_1 = $6_1; $4_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $62_1 = $1_1 - -1048576 | 0; $19 = $4_1; $2_1 = ($4_1 & 2097151) << 11 | $62_1 >>> 21; $6_1 = $2_1 + $105 | 0; $4_1 = ($4_1 >> 21) + $25_1 | 0; $7_1 = $6_1; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $15_1 = $4_1; $1_1 = $6_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $58_1 = $1_1 - -1048576 | 0; $16_1 = $4_1; $97 = ($4_1 & 2097151) << 11 | $58_1 >>> 21; $14_1 = $4_1 >> 21; $1_1 = __wasm_i64_mul($39_1, $65_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($34_1, $63, $56_1, $82_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($46_1, $69_1, $52_1, $78_1); $6_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($44_1, $72_1, $50_1, $76_1); $6_1 = $2_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($41_1, $67_1, $47_1, $71_1); $6_1 = $1_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($40_1, $68_1, $48_1, $74); $6_1 = $4_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($42_1, $70_1, $49_1, $75_1); $6_1 = $4_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($43_1, $60, $53, $79_1); $6_1 = $4_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($45_1, $73_1, $51_1, $77); $6_1 = $2_1 + $6_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($38_1, $66_1, $55, $81_1); $6_1 = $1_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($35_1, $64_1, $57_1, $83_1); $6_1 = $4_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1; $1_1 = $34($3_1 + 26 | 0); $4_1 = i64toi32_i32$HIGH_BITS; $4_1 = (($4_1 & 3) << 30 | $1_1 >>> 2) & 2097151; $1_1 = $6_1 + $4_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $29_1 = $1_1; $6_1 = $2_1; $2_1 = __wasm_i64_mul($102, $91, 470296, 0); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($108, $109, 666643, 0); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($112, $94, 654183, 0); $25_1 = $2_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $25_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($103, $95, -997805, -1); $25_1 = $2_1 + $25_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $25_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($113, $96, 136657, 0); $25_1 = $4_1 + $25_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $25_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $25_1; $4_1 = $1_1 + $29_1 | 0; $2_1 = $2_1 + $6_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $29_1; $13_1 = $6_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $119 = $1_1 - -1048576 | 0; $6_1 = $13_1; $13_1 = $4_1; $1_1 = $9_1 >> 21; $4_1 = ($9_1 & 2097151) << 11 | $99 >>> 21; $9_1 = $13_1 + $4_1 | 0; $1_1 = $1_1 + $2_1 | 0; $1_1 = $9_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $29_1 = $9_1; $2_1 = $119 & -2097152; $4_1 = $9_1 - $2_1 | 0; $9_1 = __wasm_i64_mul($111, $93, -683901, -1); $25_1 = $4_1 + $9_1 | 0; $1_1 = $1_1 - (($29_1 >>> 0 < $2_1 >>> 0) + $6_1 | 0) | 0; $2_1 = $1_1 + i64toi32_i32$HIGH_BITS | 0; $2_1 = $25_1 >>> 0 < $9_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $9_1 = $1_1; $1_1 = $4_1; $13_1 = $9_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $120 = $1_1 - -1048576 | 0; $9_1 = $13_1; $1_1 = $5_1 >> 21; $4_1 = ($5_1 & 2097151) << 11 | $100 >>> 21; $5_1 = $4_1 + $25_1 | 0; $1_1 = $1_1 + $2_1 | 0; $1_1 = $5_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $120 & -2097152; $4_1 = $5_1 - $2_1 | 0; $13_1 = $1_1 - (($5_1 >>> 0 < $2_1 >>> 0) + $9_1 | 0) | 0; $2_1 = $13_1 + $14_1 | 0; $1_1 = $4_1; $5_1 = $1_1 + $97 | 0; if ($5_1 >>> 0 < $1_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $1_1 = $5_1; $13_1 = $13_1 - (($4_1 >>> 0 < 4293918720) + -1 | 0) | 0; $5_1 = $13_1; $121 = $4_1 - -1048576 | 0; $4_1 = $121 & -2097152; $99 = $1_1 - $4_1 | 0; $100 = $2_1 - (($1_1 >>> 0 < $4_1 >>> 0) + $5_1 | 0) | 0; $1_1 = $58_1 & -2097152; $105 = $7_1 - $1_1 | 0; $25_1 = $15_1 - (($7_1 >>> 0 < $1_1 >>> 0) + $16_1 | 0) | 0; $1_1 = $62_1 & -2097152; $97 = $10_1 - $1_1 | 0; $62_1 = $24_1 - (($10_1 >>> 0 < $1_1 >>> 0) + $19 | 0) | 0; $1_1 = __wasm_i64_mul($111, $93, 654183, 0); $4_1 = $1_1 + $61_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $28_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = $4_1; $1_1 = $32_1 & -2097152; $4_1 = __wasm_i64_mul($110, $92, -997805, -1); $10_1 = ($7_1 - $1_1 | 0) + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($2_1 - (($7_1 >>> 0 < $1_1 >>> 0) + $26_1 | 0) | 0) | 0; $1_1 = $10_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($104, $98, 136657, 0); $7_1 = $4_1 + $10_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $58_1 = $7_1; $10_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $87_1 & -2097152; $29_1 = $17_1 - $1_1 | 0; $24_1 = $30_1 - (($17_1 >>> 0 < $1_1 >>> 0) + $84_1 | 0) | 0; $1_1 = __wasm_i64_mul($108, $109, -997805, -1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($101, $89, 654183, 0); $7_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $7_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = __wasm_i64_mul($102, $91, 136657, 0); $7_1 = $2_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $1_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($112, $94, -683901, -1); $7_1 = $4_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $7_1 + $20_1 | 0; $1_1 = $2_1 + $88_1 | 0; $1_1 = $4_1 >>> 0 < $20_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $115 & -2097152; $19 = $4_1 - $2_1 | 0; $15_1 = $1_1 - (($4_1 >>> 0 < $2_1 >>> 0) + $27_1 | 0) | 0; $1_1 = __wasm_i64_mul($108, $109, 654183, 0); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($101, $89, 470296, 0); $7_1 = $4_1 + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $7_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($102, $91, -997805, -1); $7_1 = $1_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $7_1 + $23_1 | 0; $1_1 = $106 + ($7_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1) | 0; $1_1 = $4_1 >>> 0 < $23_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($112, $94, 136657, 0); $4_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($103, $95, -683901, -1); $7_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $7_1; $1_1 = $114 & -2097152; $20_1 = $4_1 - $1_1 | 0; $17_1 = $2_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $107 | 0) | 0; $1_1 = __wasm_i64_mul($34_1, $63, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($36_1, $37_1, $56_1, $82_1); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($39_1, $65_1, $52_1, $78_1); $7_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($46_1, $69_1, $50_1, $76_1); $7_1 = $4_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($41_1, $67_1, $44_1, $72_1); $7_1 = $4_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($40_1, $68_1, $47_1, $71_1); $7_1 = $2_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($42_1, $70_1, $48_1, $74); $7_1 = $1_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $7_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($43_1, $60, $51_1, $77); $7_1 = $4_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($45_1, $73_1, $49_1, $75_1); $7_1 = $4_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($38_1, $66_1, $53, $79_1); $7_1 = $4_1 + $7_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($33_1, $59_1, $57_1, $83_1); $7_1 = $2_1 + $7_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($35_1, $64_1, $55, $81_1); $7_1 = $1_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $7_1; $1_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $33($3_1 + 28 | 0); $4_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1 >>> 7 | 0; $3_1 = ($4_1 & 127) << 25 | $3_1 >>> 7; $4_1 = $7_1 + $3_1 | 0; $1_1 = $1_1 + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = ($6_1 >> 21) + $1_1 | 0; $3_1 = ($6_1 & 2097151) << 11 | $119 >>> 21; $4_1 = $4_1 + $3_1 | 0; if ($4_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $7_1 = $4_1; $16_1 = $2_1; $1_1 = $4_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $28_1 = $1_1 - -1048576 | 0; $14_1 = $3_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $28_1 >>> 21; $4_1 = $3_1 + $20_1 | 0; $2_1 = $1_1 + $17_1 | 0; $6_1 = $4_1; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $13_1 = $2_1; $1_1 = $4_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $26_1 = $1_1 - -1048576 | 0; $23_1 = $3_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $26_1 >>> 21; $4_1 = $3_1 + $19 | 0; $2_1 = $1_1 + $15_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $4_1; $17_1 = $2_1; $1_1 = $4_1; $15_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $20_1 = $1_1 - -1048576 | 0; $4_1 = $15_1; $1_1 = $4_1 >> 21; $15_1 = ($4_1 & 2097151) << 11 | $20_1 >>> 21; $19 = $15_1 + $29_1 | 0; $2_1 = $1_1 + $24_1 | 0; $87_1 = $19; $2_1 = $19 >>> 0 < $15_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $27_1 = $2_1; $2_1 = __wasm_i64_mul($19, $2_1, -683901, -1); $15_1 = $2_1 + $58_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $10_1 | 0; $1_1 = $15_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $10_1 = $1_1; $1_1 = $20_1 & -2097152; $4_1 = $17_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $4_1 | 0) | 0; $61_1 = $3_1 - $1_1 | 0; $30_1 = $4_1; $1_1 = __wasm_i64_mul($111, $93, 470296, 0) + $8_1 | 0; $2_1 = $22_1 + i64toi32_i32$HIGH_BITS | 0; $2_1 = $1_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($110, $92, 654183, 0); $8_1 = $1_1; $1_1 = $118 & -2097152; $17_1 = $3_1 + ($8_1 - $1_1 | 0) | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($2_1 - (($8_1 >>> 0 < $1_1 >>> 0) + $31_1 | 0) | 0) | 0; $1_1 = $17_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($104, $98, -997805, -1); $3_1 = $2_1 + $17_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $3_1; $3_1 = __wasm_i64_mul($19, $27_1, 136657, 0); $8_1 = $2_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $8_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($61_1, $4_1, -683901, -1); $3_1 = $1_1 + $8_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $20_1 = $4_1; $1_1 = $3_1; $4_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $24_1 = $1_1 - -1048576 | 0; $17_1 = $4_1; $2_1 = $4_1 >> 21; $1_1 = ($4_1 & 2097151) << 11 | $24_1 >>> 21; $4_1 = $1_1 + $15_1 | 0; $2_1 = $2_1 + $10_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $8_1 = $2_1; $10_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $2_1 = $10_1 >> 21; $15_1 = $1_1 - -1048576 | 0; $19 = ($10_1 & 2097151) << 11 | $15_1 >>> 21; $31_1 = $19 + $97 | 0; $4_1 = $2_1 + $62_1 | 0; $62_1 = $31_1; $19 = $31_1 >>> 0 < $19 >>> 0 ? $4_1 + 1 | 0 : $4_1; $2_1 = $15_1 & -2097152; $58_1 = $1_1 - $2_1 | 0; $29_1 = $8_1 - (($1_1 >>> 0 < $2_1 >>> 0) + $10_1 | 0) | 0; $1_1 = $24_1 & -2097152; $88_1 = $3_1 - $1_1 | 0; $22_1 = $20_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $17_1 | 0) | 0; $2_1 = __wasm_i64_mul($111, $93, 666643, 0); $1_1 = $117 & -2097152; $3_1 = $2_1 + ($11_1 - $1_1 | 0) | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($21_1 - (($11_1 >>> 0 < $1_1 >>> 0) + $18_1 | 0) | 0) | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($110, $92, 470296, 0); $3_1 = $2_1 + $3_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $4_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($104, $98, 654183, 0); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $11_1 = $3_1; $3_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $26_1 & -2097152; $8_1 = $6_1 - $1_1 | 0; $10_1 = $13_1 - (($6_1 >>> 0 < $1_1 >>> 0) + $23_1 | 0) | 0; $1_1 = __wasm_i64_mul($108, $109, 470296, 0); $2_1 = i64toi32_i32$HIGH_BITS; $4_1 = $1_1; $1_1 = __wasm_i64_mul($101, $89, 666643, 0); $4_1 = $4_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($102, $91, 654183, 0); $6_1 = $1_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $4_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($112, $94, -997805, -1); $6_1 = $1_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = __wasm_i64_mul($103, $95, 136657, 0); $6_1 = $4_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($113, $96, -683901, -1); $4_1 = $2_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $4_1 + $7_1 | 0; $2_1 = $1_1 + $16_1 | 0; $2_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = $4_1; $4_1 = $28_1 & -2097152; $1_1 = $6_1 - $4_1 | 0; $4_1 = $2_1 - (($6_1 >>> 0 < $4_1 >>> 0) + $14_1 | 0) | 0; $6_1 = $1_1; $2_1 = $9_1 >> 21; $1_1 = ($9_1 & 2097151) << 11 | $120 >>> 21; $9_1 = $6_1 + $1_1 | 0; $2_1 = $2_1 + $4_1 | 0; $2_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $13_1 = $2_1; $1_1 = $9_1; $4_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $31_1 = $1_1 - -1048576 | 0; $23_1 = $4_1; $2_1 = $4_1 >> 21; $4_1 = ($4_1 & 2097151) << 11 | $31_1 >>> 21; $6_1 = $4_1 + $8_1 | 0; $1_1 = $2_1 + $10_1 | 0; $32_1 = $6_1; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $84_1 = $1_1; $1_1 = __wasm_i64_mul($6_1, $1_1, -683901, -1); $2_1 = $1_1 + $11_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $4_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($87_1, $27_1, -997805, -1); $3_1 = $1_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($61_1, $30_1, 136657, 0); $4_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $14_1 = $4_1; $10_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($53, $79_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = $1_1; $1_1 = __wasm_i64_mul($51_1, $77, $56_1, $82_1); $3_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($55, $81_1, $52_1, $78_1); $4_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($57_1, $83_1, $50_1, $76_1); $3_1 = $2_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $3_1; $2_1 = $1_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $3_1 = (($90 & 127) << 25 | $127 >>> 7) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $6_1 = $1_1; $3_1 = $2_1; $2_1 = __wasm_i64_mul($55, $81_1, $54_1, $80_1); $1_1 = i64toi32_i32$HIGH_BITS; $4_1 = $2_1; $2_1 = __wasm_i64_mul($53, $79_1, $56_1, $82_1); $4_1 = $4_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($57_1, $83_1, $52_1, $78_1); $7_1 = $2_1 + $4_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $7_1; $2_1 = $1_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $4_1 = (($126 & 3) << 30 | $125 >>> 2) & 2097151; $1_1 = $4_1 + $1_1 | 0; if ($1_1 >>> 0 < $4_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $7_1 = $1_1; $15_1 = $2_1; $4_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $18_1 = $1_1 - -1048576 | 0; $16_1 = $4_1; $2_1 = ($4_1 & 2097151) << 11 | $18_1 >>> 21; $6_1 = $2_1 + $6_1 | 0; $4_1 = ($4_1 >>> 21 | 0) + $3_1 | 0; $4_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $20_1 = $4_1; $1_1 = $6_1; $3_1 = $4_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $28_1 = $1_1 - -1048576 | 0; $17_1 = $3_1; $1_1 = $3_1 >> 21; $3_1 = $12_1 + (($3_1 & 2097151) << 11 | $28_1 >>> 21) | 0; $2_1 = $1_1 + $85_1 | 0; $2_1 = $3_1 >>> 0 < $12_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($110, $92, 666643, 0); $4_1 = $3_1; $3_1 = $116 & -2097152; $8_1 = $1_1 + ($4_1 - $3_1 | 0) | 0; $4_1 = i64toi32_i32$HIGH_BITS + ($2_1 - (($4_1 >>> 0 < $3_1 >>> 0) + $86_1 | 0) | 0) | 0; $2_1 = __wasm_i64_mul($104, $98, 470296, 0); $3_1 = $2_1 + $8_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($8_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1) | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $3_1; $3_1 = __wasm_i64_mul($32_1, $84_1, 136657, 0); $4_1 = $2_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($87_1, $27_1, 654183, 0); $3_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($61_1, $30_1, -997805, -1); $4_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $26_1 = $4_1; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $11_1 = $1_1; $1_1 = $4_1; $3_1 = $11_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $24_1 = $1_1 - -1048576 | 0; $8_1 = $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $24_1 >>> 21; $4_1 = $3_1 + $14_1 | 0; $1_1 = $2_1 + $10_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; $1_1 = $4_1; $14_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $12_1 = $1_1 - -1048576 | 0; $10_1 = $14_1; $2_1 = $10_1 >> 21; $14_1 = ($10_1 & 2097151) << 11 | $12_1 >>> 21; $21_1 = $14_1 + $88_1 | 0; $1_1 = $2_1 + $22_1 | 0; $106 = $21_1; $14_1 = $21_1 >>> 0 < $14_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $31_1 & -2097152; $1_1 = $9_1 - $2_1 | 0; $9_1 = $13_1 - (($9_1 >>> 0 < $2_1 >>> 0) + $23_1 | 0) | 0; $13_1 = $1_1; $1_1 = $5_1 >> 21; $2_1 = ($5_1 & 2097151) << 11 | $121 >>> 21; $5_1 = $13_1 + $2_1 | 0; $1_1 = $1_1 + $9_1 | 0; $9_1 = $5_1; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $13_1 = $1_1; $1_1 = $5_1; $5_1 = $13_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $22_1 = $1_1 - -1048576 | 0; $23_1 = $5_1; $1_1 = $5_1 >> 21; $21_1 = $1_1; $90 = ($5_1 & 2097151) << 11 | $22_1 >>> 21; $1_1 = __wasm_i64_mul($90, $1_1, -683901, -1); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $12_1 & -2097152; $107 = $4_1 - $1_1 | 0; $88_1 = $2_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $10_1 | 0) | 0; $2_1 = __wasm_i64_mul($90, $21_1, 136657, 0); $3_1 = $2_1 + $26_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $11_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $24_1 & -2097152; $85_1 = $3_1 - $2_1 | 0; $86_1 = $1_1 - (($3_1 >>> 0 < $2_1 >>> 0) + $8_1 | 0) | 0; $1_1 = __wasm_i64_mul($104, $98, 666643, 0); $2_1 = $28_1 & -2097152; $3_1 = $1_1 + ($6_1 - $2_1 | 0) | 0; $4_1 = i64toi32_i32$HIGH_BITS + ($20_1 - (($6_1 >>> 0 < $2_1 >>> 0) + $17_1 | 0) | 0) | 0; $4_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = __wasm_i64_mul($32_1, $84_1, -997805, -1); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($87_1, $27_1, 470296, 0); $4_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($61_1, $30_1, 654183, 0); $3_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $8_1 = $3_1; $6_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($57_1, $83_1, $54_1, $80_1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = $1_1; $1_1 = __wasm_i64_mul($55, $81_1, $56_1, $82_1); $3_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $4_1 = $2_1; $2_1 = (($124 & 31) << 27 | $123 >>> 5) & 2097151; $1_1 = $2_1 + $1_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $4_1 = $4_1 + 1 | 0; } $10_1 = $1_1; $1_1 = $122 & 2097151; $3_1 = __wasm_i64_mul($57_1, $83_1, $56_1, $82_1) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $5_1 = $3_1; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $20_1 = $2_1; $1_1 = $3_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $31_1 = $1_1 - -1048576 | 0; $17_1 = $3_1; $1_1 = $3_1 >>> 21 | 0; $2_1 = ($3_1 & 2097151) << 11 | $31_1 >>> 21; $3_1 = $2_1 + $10_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $12_1 = $1_1; $1_1 = $3_1; $4_1 = $12_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $28_1 = $1_1 - -1048576 | 0; $11_1 = $4_1; $1_1 = $4_1 >>> 21 | 0; $4_1 = $7_1 + (($4_1 & 2097151) << 11 | $28_1 >>> 21) | 0; $2_1 = $1_1 + $15_1 | 0; $2_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = $4_1; $1_1 = $18_1 & -2097152; $4_1 = __wasm_i64_mul($32_1, $84_1, 654183, 0); $10_1 = ($7_1 - $1_1 | 0) + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($2_1 - (($16_1 & 16383) + ($7_1 >>> 0 < $1_1 >>> 0) | 0) | 0) | 0; $1_1 = $10_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($87_1, $27_1, 666643, 0); $4_1 = $2_1 + $10_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $4_1; $4_1 = __wasm_i64_mul($61_1, $30_1, 470296, 0); $7_1 = $2_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $26_1 = $7_1; $2_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $10_1 = $2_1; $1_1 = $7_1; $4_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $24_1 = $1_1 - -1048576 | 0; $7_1 = $4_1; $1_1 = $4_1 >> 21; $4_1 = ($4_1 & 2097151) << 11 | $24_1 >>> 21; $8_1 = $4_1 + $8_1 | 0; $2_1 = $1_1 + $6_1 | 0; $15_1 = $8_1; $2_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $2_1; $1_1 = $8_1; $8_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $16_1 = $1_1 - -1048576 | 0; $6_1 = $8_1; $1_1 = $6_1 >> 21; $8_1 = ($6_1 & 2097151) << 11 | $16_1 >>> 21; $18_1 = $8_1 + $85_1 | 0; $2_1 = $1_1 + $86_1 | 0; $85_1 = $18_1; $8_1 = $18_1 >>> 0 < $8_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($90, $21_1, -997805, -1); $2_1 = $1_1 + $15_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS + $4_1 | 0; $4_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = $16_1 & -2097152; $86_1 = $2_1 - $1_1 | 0; $18_1 = $4_1 - (($2_1 >>> 0 < $1_1 >>> 0) + $6_1 | 0) | 0; $2_1 = __wasm_i64_mul($90, $21_1, 654183, 0); $4_1 = $2_1 + $26_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $10_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $24_1 & -2097152; $15_1 = $4_1 - $2_1 | 0; $16_1 = $1_1 - (($4_1 >>> 0 < $2_1 >>> 0) + $7_1 | 0) | 0; $1_1 = __wasm_i64_mul($32_1, $84_1, 470296, 0); $2_1 = $28_1 & -2097152; $4_1 = $1_1 + ($3_1 - $2_1 | 0) | 0; $2_1 = i64toi32_i32$HIGH_BITS + ($12_1 - (($11_1 & 16383) + ($3_1 >>> 0 < $2_1 >>> 0) | 0) | 0) | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($61_1, $30_1, 666643, 0); $4_1 = $3_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $6_1 = $4_1; $4_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($32_1, $84_1, 666643, 0); $1_1 = $31_1 & -2097152; $3_1 = $2_1 + ($5_1 - $1_1 | 0) | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($20_1 - (($17_1 & 4095) + ($5_1 >>> 0 < $1_1 >>> 0) | 0) | 0) | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $10_1 = $1_1; $1_1 = $3_1; $5_1 = $10_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $17_1 = $1_1 - -1048576 | 0; $7_1 = $5_1; $2_1 = $5_1 >> 21; $5_1 = ($5_1 & 2097151) << 11 | $17_1 >>> 21; $6_1 = $5_1 + $6_1 | 0; $1_1 = $2_1 + $4_1 | 0; $12_1 = $6_1; $1_1 = $6_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $6_1 = $1_1; $1_1 = $12_1; $4_1 = $6_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $11_1 = $1_1 - -1048576 | 0; $5_1 = $4_1; $2_1 = $4_1 >> 21; $4_1 = ($4_1 & 2097151) << 11 | $11_1 >>> 21; $20_1 = $4_1 + $15_1 | 0; $1_1 = $2_1 + $16_1 | 0; $1_1 = $20_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $1_1; $1_1 = __wasm_i64_mul($90, $21_1, 470296, 0); $12_1 = $1_1 + $12_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $6_1 | 0; $2_1 = $12_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = $11_1 & -2097152; $1_1 = $12_1 - $6_1 | 0; $6_1 = $2_1 - (($12_1 >>> 0 < $6_1 >>> 0) + $5_1 | 0) | 0; $11_1 = $1_1; $2_1 = __wasm_i64_mul($90, $21_1, 666643, 0); $1_1 = $17_1 & -2097152; $5_1 = $2_1 + ($3_1 - $1_1 | 0) | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($10_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $7_1 | 0) | 0) | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $5_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $11_1 + $1_1 | 0; $2_1 = $2_1 + $6_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $11_1 = $3_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $2_1 + $20_1 | 0; $1_1 = $1_1 + $4_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $6_1 = $3_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $1_1 + $86_1 | 0; $4_1 = $2_1 + $18_1 | 0; $28_1 = $3_1; $2_1 = $3_1; $4_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = $4_1 >> 21; $3_1 = ($4_1 & 2097151) << 11 | $2_1 >>> 21; $4_1 = $3_1 + $85_1 | 0; $2_1 = $1_1 + $8_1 | 0; $26_1 = $4_1; $1_1 = $4_1; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $1_1 >>> 21; $3_1 = $2_1 + $107 | 0; $1_1 = $4_1 + $88_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $24_1 = $3_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $1_1 + $106 | 0; $2_1 = $2_1 + $14_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $15_1 = $3_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $2_1 + $58_1 | 0; $1_1 = $1_1 + $29_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $16_1 = $3_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $1_1 + $62_1 | 0; $4_1 = $2_1 + $19 | 0; $14_1 = $3_1; $2_1 = $3_1; $4_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = $4_1 >> 21; $3_1 = ($4_1 & 2097151) << 11 | $2_1 >>> 21; $4_1 = $3_1 + $105 | 0; $2_1 = $1_1 + $25_1 | 0; $20_1 = $4_1; $1_1 = $4_1; $2_1 = $1_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $4_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $1_1 >>> 21; $3_1 = $2_1 + $99 | 0; $1_1 = $4_1 + $100 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $17_1 = $3_1; $2_1 = $1_1 >> 21; $4_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $1_1 = $22_1 & -2097152; $3_1 = $9_1 - $1_1 | 0; $4_1 = $4_1 + $3_1 | 0; $1_1 = ($13_1 - (($9_1 >>> 0 < $1_1 >>> 0) + $23_1 | 0) | 0) + $2_1 | 0; $12_1 = $4_1; $2_1 = $4_1; $1_1 = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $23_1 = ($1_1 & 2097151) << 11 | $2_1 >>> 21; $4_1 = $1_1 >> 21; $10_1 = $4_1; $2_1 = $5_1 & 2097151; $3_1 = __wasm_i64_mul($23_1, $4_1, 666643, 0) + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $7_1 = $3_1; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; HEAP82[$128 | 0] = $7_1; HEAP82[$0 + 1 | 0] = ($1_1 & 255) << 24 | $7_1 >>> 8; $5_1 = $0; $1_1 = $11_1 & 2097151; $4_1 = __wasm_i64_mul($23_1, $4_1, 470296, 0) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $8_1 = $4_1; $1_1 = $3_1; $4_1 = $1_1 >> 21; $9_1 = ($1_1 & 2097151) << 11 | $7_1 >>> 21; $8_1 = $8_1 + $9_1 | 0; $1_1 = $2_1 + $4_1 | 0; $1_1 = $8_1 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $9_1 = $8_1; $4_1 = $9_1; HEAP82[$5_1 + 4 | 0] = ($1_1 & 2047) << 21 | $4_1 >>> 11; $2_1 = $1_1; HEAP82[$5_1 + 3 | 0] = ($1_1 & 7) << 29 | $4_1 >>> 3; $4_1 = $6_1 & 2097151; $6_1 = __wasm_i64_mul($23_1, $10_1, 654183, 0) + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $1_1 = $6_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $6_1; $6_1 = ($2_1 & 2097151) << 11 | $9_1 >>> 21; $8_1 = $4_1 + $6_1 | 0; $2_1 = ($2_1 >> 21) + $1_1 | 0; $2_1 = $8_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = $8_1; $1_1 = $2_1; HEAP82[$5_1 + 6 | 0] = ($1_1 & 63) << 26 | $6_1 >>> 6; $5_1 = 0; $11_1 = $9_1 & 2097151; $2_1 = $11_1; HEAP82[$0 + 2 | 0] = (($3_1 & 65535) << 16 | $7_1 >>> 16) & 31 | $2_1 << 5; $4_1 = $0; $3_1 = $28_1 & 2097151; $9_1 = __wasm_i64_mul($23_1, $10_1, -997805, -1) + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $9_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $9_1; $9_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $7_1 = $3_1 + $9_1 | 0; $1_1 = ($1_1 >> 21) + $2_1 | 0; $1_1 = $7_1 >>> 0 < $9_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $7_1; HEAP82[$4_1 + 9 | 0] = ($1_1 & 511) << 23 | $3_1 >>> 9; $2_1 = $1_1; HEAP82[$4_1 + 8 | 0] = ($1_1 & 1) << 31 | $3_1 >>> 1; $9_1 = 0; $8_1 = $6_1 & 2097151; $3_1 = $8_1; HEAP82[$4_1 + 5 | 0] = ($5_1 & 524287) << 13 | $11_1 >>> 19 | $3_1 << 2; $5_1 = $4_1; $1_1 = $26_1 & 2097151; $3_1 = __wasm_i64_mul($23_1, $10_1, 136657, 0) + $1_1 | 0; $4_1 = i64toi32_i32$HIGH_BITS; $4_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $4_1 + 1 | 0 : $4_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $7_1 >>> 21; $3_1 = $2_1 + $3_1 | 0; $1_1 = $1_1 + $4_1 | 0; $6_1 = $3_1; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $3_1; HEAP82[$5_1 + 12 | 0] = ($1_1 & 4095) << 20 | $2_1 >>> 12; $3_1 = $1_1; HEAP82[$5_1 + 11 | 0] = ($1_1 & 15) << 28 | $2_1 >>> 4; $5_1 = 0; $7_1 = $7_1 & 2097151; $2_1 = $7_1; HEAP82[$0 + 7 | 0] = ($9_1 & 16383) << 18 | $8_1 >>> 14 | $2_1 << 7; $4_1 = $0; $1_1 = $24_1 & 2097151; $9_1 = __wasm_i64_mul($23_1, $10_1, -683901, -1) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $6_1 >>> 21; $9_1 = $3_1 + $9_1 | 0; $2_1 = $1_1 + $2_1 | 0; $2_1 = $9_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $2_1; HEAP82[$4_1 + 14 | 0] = ($1_1 & 127) << 25 | $9_1 >>> 7; $4_1 = 0; $10_1 = $6_1 & 2097151; $3_1 = $10_1; HEAP82[$0 + 10 | 0] = ($5_1 & 131071) << 15 | $7_1 >>> 17 | $3_1 << 4; $5_1 = ($1_1 & 2097151) << 11 | $9_1 >>> 21; $7_1 = $5_1 + ($15_1 & 2097151) | 0; $1_1 = $1_1 >> 21; $1_1 = $7_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $7_1; HEAP82[$0 + 17 | 0] = ($1_1 & 1023) << 22 | $3_1 >>> 10; $2_1 = $1_1; HEAP82[$0 + 16 | 0] = ($1_1 & 3) << 30 | $3_1 >>> 2; $3_1 = 0; $8_1 = $9_1 & 2097151; $5_1 = $8_1; HEAP82[$0 + 13 | 0] = ($4_1 & 1048575) << 12 | $10_1 >>> 20 | $5_1 << 1; $1_1 = $0; $4_1 = $2_1; $2_1 = $2_1 >> 21; $5_1 = ($4_1 & 2097151) << 11 | $7_1 >>> 21; $6_1 = $5_1 + ($16_1 & 2097151) | 0; $4_1 = $6_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; HEAP82[$1_1 + 20 | 0] = ($4_1 & 8191) << 19 | $6_1 >>> 13; $5_1 = $4_1; HEAP82[$1_1 + 19 | 0] = ($4_1 & 31) << 27 | $6_1 >>> 5; $9_1 = 0; $10_1 = $7_1 & 2097151; $2_1 = $10_1; HEAP82[$1_1 + 15 | 0] = ($3_1 & 32767) << 17 | $8_1 >>> 15 | $2_1 << 6; $4_1 = $1_1; $1_1 = $5_1; $2_1 = $1_1 >> 21; $3_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $8_1 = $3_1 + ($14_1 & 2097151) | 0; $1_1 = $2_1; $1_1 = $8_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; HEAP82[$4_1 + 21 | 0] = $8_1; $1_1 = $6_1; HEAP82[$4_1 + 18 | 0] = ($9_1 & 262143) << 14 | $10_1 >>> 18 | $1_1 << 3; $1_1 = $3_1; HEAP82[$4_1 + 22 | 0] = ($1_1 & 255) << 24 | $8_1 >>> 8; $2_1 = $1_1; $1_1 = $1_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $8_1 >>> 21; $5_1 = $2_1 + ($20_1 & 2097151) | 0; $6_1 = $5_1; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $5_1; HEAP82[$0 + 25 | 0] = ($1_1 & 2047) << 21 | $4_1 >>> 11; HEAP82[$0 + 24 | 0] = ($1_1 & 7) << 29 | $4_1 >>> 3; $5_1 = $0; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $4_1 >>> 21; $7_1 = $1_1 + ($17_1 & 2097151) | 0; $9_1 = $7_1; $4_1 = $7_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; HEAP82[$5_1 + 27 | 0] = ($1_1 & 63) << 26 | $7_1 >>> 6; $4_1 = 0; $7_1 = $6_1 & 2097151; $2_1 = $7_1; HEAP82[$5_1 + 23 | 0] = (($3_1 & 65535) << 16 | $8_1 >>> 16) & 31 | $2_1 << 5; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $9_1 >>> 21; $5_1 = $1_1 + ($12_1 & 2097151) | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $5_1; HEAP82[$0 + 31 | 0] = ($2_1 & 131071) << 15 | $3_1 >>> 17; $1_1 = $2_1; HEAP82[$0 + 30 | 0] = ($1_1 & 511) << 23 | $3_1 >>> 9; HEAP82[$0 + 29 | 0] = ($1_1 & 1) << 31 | $3_1 >>> 1; $2_1 = 0; $9_1 = $9_1 & 2097151; $6_1 = $9_1; HEAP82[$0 + 26 | 0] = ($4_1 & 524287) << 13 | $7_1 >>> 19 | $6_1 << 2; HEAP82[$0 + 28 | 0] = ($2_1 & 16383) << 18 | $6_1 >>> 14 | $3_1 << 7; } function $69($0) { var $1_1 = 0, $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, $52_1 = 0, $53 = 0, $54_1 = 0, $55 = 0, $56_1 = 0, $57_1 = 0, $58_1 = 0, $59_1 = 0, $60 = 0, $61_1 = 0, $62_1 = 0, $63 = 0, $64_1 = 0, $65_1 = 0, $66_1 = 0, $67_1 = 0, $68_1 = 0, $69_1 = 0; $59_1 = $34($0); $60 = $33($0 + 2 | 0); $61_1 = i64toi32_i32$HIGH_BITS; $62_1 = $34($0 + 5 | 0); $63 = i64toi32_i32$HIGH_BITS; $64_1 = $33($0 + 7 | 0); $52_1 = i64toi32_i32$HIGH_BITS; $65_1 = $33($0 + 10 | 0); $53 = i64toi32_i32$HIGH_BITS; $66_1 = $34($0 + 13 | 0); $54_1 = i64toi32_i32$HIGH_BITS; $67_1 = $33($0 + 15 | 0); $19 = i64toi32_i32$HIGH_BITS; $28_1 = $34($0 + 18 | 0); $20_1 = i64toi32_i32$HIGH_BITS; $42_1 = $34($0 + 21 | 0); $23_1 = $33($0 + 23 | 0); $13_1 = i64toi32_i32$HIGH_BITS; $29_1 = $34($0 + 26 | 0); $8_1 = i64toi32_i32$HIGH_BITS; $68_1 = $33($0 + 28 | 0); $43_1 = i64toi32_i32$HIGH_BITS; $32_1 = $33($0 + 31 | 0); $24_1 = i64toi32_i32$HIGH_BITS; $30_1 = $34($0 + 34 | 0); $27_1 = i64toi32_i32$HIGH_BITS; $33_1 = $33($0 + 36 | 0); $12_1 = i64toi32_i32$HIGH_BITS; $34_1 = $34($0 + 39 | 0); $15_1 = i64toi32_i32$HIGH_BITS; $3_1 = $34($0 + 42 | 0); $2_1 = $33($0 + 44 | 0); $1_1 = i64toi32_i32$HIGH_BITS; $35_1 = $34($0 + 47 | 0); $10_1 = i64toi32_i32$HIGH_BITS; $31_1 = $33($0 + 49 | 0); $9_1 = i64toi32_i32$HIGH_BITS; $25_1 = $33($0 + 52 | 0); $4_1 = i64toi32_i32$HIGH_BITS; $17_1 = $34($0 + 55 | 0); $7_1 = i64toi32_i32$HIGH_BITS; $16_1 = $33($0 + 57 | 0); $5_1 = i64toi32_i32$HIGH_BITS; $69_1 = $0; $14_1 = (($1_1 & 31) << 27 | $2_1 >>> 5) & 2097151; $2_1 = $33($0 + 60 | 0); $6_1 = i64toi32_i32$HIGH_BITS; $1_1 = $6_1 >>> 3 | 0; $36_1 = ($6_1 & 7) << 29 | $2_1 >>> 3; $44_1 = $1_1; $2_1 = __wasm_i64_mul($36_1, $1_1, -683901, -1); $1_1 = $3_1 & 2097151; $3_1 = $2_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $6_1 = $3_1; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $22_1 = $2_1; $1_1 = $3_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $21_1 = $1_1 - -1048576 | 0; $11_1 = $3_1; $1_1 = ($3_1 & 2097151) << 11 | $21_1 >>> 21; $14_1 = $1_1 + $14_1 | 0; $3_1 = ($3_1 >> 21) + $18_1 | 0; $45_1 = $14_1; $3_1 = $14_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $46_1 = $3_1; $14_1 = __wasm_i64_mul($14_1, $3_1, -683901, -1); $18_1 = i64toi32_i32$HIGH_BITS; $37_1 = (($10_1 & 3) << 30 | $35_1 >>> 2) & 2097151; $2_1 = __wasm_i64_mul($37_1, 0, 136657, 0); $1_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($8_1 & 3) << 30 | $29_1 >>> 2) & 2097151; $2_1 = $3_1 + $2_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = $2_1; $2_1 = $1_1; $38_1 = (($9_1 & 127) << 25 | $31_1 >>> 7) & 2097151; $1_1 = __wasm_i64_mul($38_1, 0, -997805, -1); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $39_1 = (($4_1 & 15) << 28 | $25_1 >>> 4) & 2097151; $1_1 = __wasm_i64_mul($39_1, 0, 654183, 0); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $40_1 = (($7_1 & 1) << 31 | $17_1 >>> 1) & 2097151; $3_1 = __wasm_i64_mul($40_1, 0, 470296, 0); $7_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $7_1; $2_1 = $1_1; $41_1 = (($5_1 & 63) << 26 | $16_1 >>> 6) & 2097151; $1_1 = __wasm_i64_mul($41_1, 0, 666643, 0); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $5_1 = $3_1; $7_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = $7_1 + $18_1 | 0; $1_1 = $3_1; $3_1 = $1_1 + $14_1 | 0; if ($3_1 >>> 0 < $1_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $25_1 = $3_1; $10_1 = $2_1; $2_1 = __wasm_i64_mul($37_1, $48_1, -997805, -1); $1_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($13_1 & 31) << 27 | $23_1 >>> 5) & 2097151; $2_1 = $3_1 + $2_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = $2_1; $2_1 = __wasm_i64_mul($38_1, $49_1, 654183, 0); $4_1 = $3_1 + $2_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $3_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = __wasm_i64_mul($39_1, $50_1, 470296, 0); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($40_1, $51_1, 666643, 0); $4_1 = $3_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $9_1 = $4_1; $3_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = $42_1 & 2097151; $4_1 = __wasm_i64_mul($37_1, $48_1, 654183, 0) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $4_1; $4_1 = __wasm_i64_mul($38_1, $49_1, 470296, 0); $8_1 = $1_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = __wasm_i64_mul($39_1, $50_1, 666643, 0); $8_1 = $4_1 + $8_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $8_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $16_1 = $2_1; $1_1 = $8_1; $4_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $29_1 = $1_1 - -1048576 | 0; $18_1 = $4_1; $1_1 = $4_1 >>> 21 | 0; $2_1 = ($4_1 & 2097151) << 11 | $29_1 >>> 21; $4_1 = $2_1 + $9_1 | 0; $3_1 = $1_1 + $3_1 | 0; $3_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = $3_1; $1_1 = $4_1; $17_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $14_1 = $1_1 - -1048576 | 0; $57_1 = $5_1 - -1048576 | 0; $13_1 = $7_1 - (($5_1 >>> 0 < 4293918720) + -1 | 0) | 0; $7_1 = $13_1; $3_1 = $17_1; $1_1 = $3_1 >> 21; $5_1 = ($3_1 & 2097151) << 11 | $14_1 >>> 21; $17_1 = $5_1 + $25_1 | 0; $2_1 = $1_1 + $10_1 | 0; $2_1 = $17_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $5_1 = $17_1; $1_1 = $57_1 & -2097152; $13_1 = $2_1 - (($5_1 >>> 0 < $1_1 >>> 0) + $7_1 | 0) | 0; $1_1 = $5_1 - $1_1 | 0; $58_1 = $1_1 - -1048576 | 0; $5_1 = $13_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $2_1 = $58_1 & -2097152; $55 = $1_1 - $2_1 | 0; $56_1 = $13_1 - (($1_1 >>> 0 < $2_1 >>> 0) + $5_1 | 0) | 0; $2_1 = __wasm_i64_mul($45_1, $46_1, 136657, 0) + $4_1 | 0; $1_1 = $9_1 + i64toi32_i32$HIGH_BITS | 0; $1_1 = $2_1 >>> 0 < $4_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $4_1 = $2_1; $2_1 = $14_1 & -2097152; $31_1 = $4_1 - $2_1 | 0; $25_1 = $1_1 - (($4_1 >>> 0 < $2_1 >>> 0) + $3_1 | 0) | 0; $1_1 = $21_1 & -2097152; $13_1 = $6_1 - $1_1 | 0; $9_1 = $22_1 - (($6_1 >>> 0 < $1_1 >>> 0) + $11_1 | 0) | 0; $1_1 = __wasm_i64_mul($36_1, $44_1, 136657, 0); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($15_1 & 7) << 29 | $34_1 >>> 3) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $3_1 = __wasm_i64_mul($41_1, $26_1, -683901, -1); $4_1 = $3_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $6_1 = $4_1; $4_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($40_1, $51_1, -683901, -1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($12_1 & 63) << 26 | $33_1 >>> 6) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $3_1 = $1_1; $1_1 = __wasm_i64_mul($36_1, $44_1, -997805, -1); $10_1 = $3_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $10_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = __wasm_i64_mul($41_1, $26_1, 136657, 0); $10_1 = $2_1 + $10_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $10_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $21_1 = $1_1; $1_1 = $10_1; $2_1 = $21_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $35_1 = $1_1 - -1048576 | 0; $14_1 = $2_1; $1_1 = ($2_1 & 2097151) << 11 | $35_1 >>> 21; $6_1 = $1_1 + $6_1 | 0; $2_1 = ($2_1 >> 21) + $4_1 | 0; $4_1 = $6_1; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $15_1 = $2_1; $1_1 = $4_1; $2_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $17_1 = $1_1 - -1048576 | 0; $22_1 = $2_1; $3_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $17_1 >>> 21; $6_1 = $2_1 + $13_1 | 0; $1_1 = $3_1 + $9_1 | 0; $47_1 = $6_1; $1_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $23_1 = $1_1; $2_1 = __wasm_i64_mul($6_1, $1_1, -683901, -1); $3_1 = $2_1 + $31_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $25_1 | 0; $42_1 = $3_1; $11_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($37_1, $48_1, 470296, 0); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($20_1 & 7) << 29 | $28_1 >>> 3) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $3_1 = $1_1; $1_1 = __wasm_i64_mul($38_1, $49_1, 666643, 0); $3_1 = $3_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $12_1 = $3_1; $3_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $2_1 = __wasm_i64_mul($37_1, $48_1, 666643, 0); $1_1 = i64toi32_i32$HIGH_BITS; $6_1 = (($19 & 63) << 26 | $67_1 >>> 6) & 2097151; $2_1 = $6_1 + $2_1 | 0; if ($2_1 >>> 0 < $6_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $9_1 = $2_1; $19 = $1_1; $1_1 = $2_1; $6_1 = $19 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $31_1 = $1_1 - -1048576 | 0; $20_1 = $6_1; $2_1 = $6_1 >>> 21 | 0; $1_1 = ($6_1 & 2097151) << 11 | $31_1 >>> 21; $6_1 = $1_1 + $12_1 | 0; $2_1 = $2_1 + $3_1 | 0; $2_1 = $6_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $13_1 = $2_1; $1_1 = $6_1; $34_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $25_1 = $1_1 - -1048576 | 0; $1_1 = $17_1 & -2097152; $3_1 = $15_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $22_1 | 0) | 0; $28_1 = $4_1 - $1_1 | 0; $33_1 = $3_1; $12_1 = $34_1; $4_1 = $8_1 + (($12_1 & 2097151) << 11 | $25_1 >>> 21) | 0; $1_1 = $16_1 + ($12_1 >>> 21 | 0) | 0; $1_1 = $4_1 >>> 0 < $8_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $8_1 = $4_1; $2_1 = $29_1 & -2097152; $4_1 = __wasm_i64_mul($45_1, $46_1, -997805, -1); $22_1 = ($8_1 - $2_1 | 0) + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + ($1_1 - (($18_1 & 8191) + ($8_1 >>> 0 < $2_1 >>> 0) | 0) | 0) | 0; $2_1 = $22_1 >>> 0 < $4_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($47_1, $23_1, 136657, 0); $4_1 = $1_1 + $22_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($28_1, $3_1, -683901, -1); $4_1 = $3_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $15_1 = $1_1; $1_1 = $4_1; $3_1 = $15_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $17_1 = $1_1 - -1048576 | 0; $22_1 = $3_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $17_1 >>> 21; $8_1 = $3_1 + $42_1 | 0; $2_1 = $1_1 + $11_1 | 0; $2_1 = $8_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $8_1; $11_1 = $2_1; $1_1 = $3_1; $18_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $16_1 = $1_1 - -1048576 | 0; $8_1 = $18_1; $1_1 = $8_1 >> 21; $2_1 = ($8_1 & 2097151) << 11 | $16_1 >>> 21; $18_1 = $2_1 + $55 | 0; $1_1 = $1_1 + $56_1 | 0; $55 = $18_1; $18_1 = $18_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = $16_1 & -2097152; $56_1 = $3_1 - $1_1 | 0; $42_1 = $11_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $8_1 | 0) | 0; $1_1 = $17_1 & -2097152; $34_1 = $4_1 - $1_1 | 0; $29_1 = $15_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $22_1 | 0) | 0; $1_1 = __wasm_i64_mul($45_1, $46_1, 654183, 0); $2_1 = $25_1 & -2097152; $4_1 = $1_1 + ($6_1 - $2_1 | 0) | 0; $3_1 = i64toi32_i32$HIGH_BITS + ($13_1 - (($12_1 & 8191) + ($6_1 >>> 0 < $2_1 >>> 0) | 0) | 0) | 0; $3_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = __wasm_i64_mul($47_1, $23_1, -997805, -1); $4_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($28_1, $33_1, 136657, 0); $4_1 = $3_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $17_1 = $4_1; $12_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $35_1 & -2097152; $16_1 = $10_1 - $1_1 | 0; $21_1 = $21_1 - (($10_1 >>> 0 < $1_1 >>> 0) + $14_1 | 0) | 0; $2_1 = __wasm_i64_mul($39_1, $50_1, -683901, -1); $1_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($27_1 & 1) << 31 | $30_1 >>> 1) & 2097151; $2_1 = $3_1 + $2_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = $2_1; $2_1 = __wasm_i64_mul($40_1, $51_1, 136657, 0); $3_1 = $3_1 + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $3_1; $3_1 = __wasm_i64_mul($36_1, $44_1, 654183, 0); $4_1 = $2_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($41_1, $26_1, -997805, -1); $3_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $10_1 = $3_1; $4_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($38_1, $49_1, -683901, -1); $3_1 = i64toi32_i32$HIGH_BITS; $2_1 = (($24_1 & 15) << 28 | $32_1 >>> 4) & 2097151; $1_1 = $2_1 + $1_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $3_1 = $3_1 + 1 | 0; } $2_1 = __wasm_i64_mul($39_1, $50_1, 136657, 0); $6_1 = $2_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($40_1, $51_1, -997805, -1); $6_1 = $3_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($36_1, $44_1, 470296, 0); $6_1 = $3_1 + $6_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($41_1, $26_1, 654183, 0); $6_1 = $3_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $15_1 = $2_1; $1_1 = $6_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $14_1 = $1_1 - -1048576 | 0; $22_1 = $3_1; $1_1 = $3_1 >> 21; $2_1 = ($3_1 & 2097151) << 11 | $14_1 >>> 21; $3_1 = $2_1 + $10_1 | 0; $1_1 = $1_1 + $4_1 | 0; $4_1 = $3_1; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $11_1 = $1_1; $1_1 = $3_1; $3_1 = $11_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $13_1 = $1_1 - -1048576 | 0; $8_1 = $3_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $13_1 >>> 21; $10_1 = $3_1 + $16_1 | 0; $2_1 = $1_1 + $21_1 | 0; $32_1 = $10_1; $2_1 = $10_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $24_1 = $2_1; $1_1 = __wasm_i64_mul($10_1, $2_1, -683901, -1); $2_1 = $1_1 + $17_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $12_1 | 0; $12_1 = $2_1; $10_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = $13_1 & -2097152; $8_1 = $11_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $8_1 | 0) | 0; $30_1 = $4_1 - $1_1 | 0; $27_1 = $8_1; $1_1 = __wasm_i64_mul($45_1, $46_1, 470296, 0); $2_1 = $31_1 & -2097152; $3_1 = $1_1 + ($9_1 - $2_1 | 0) | 0; $2_1 = i64toi32_i32$HIGH_BITS + ($19 - (($20_1 & 2047) + ($9_1 >>> 0 < $2_1 >>> 0) | 0) | 0) | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($47_1, $23_1, 654183, 0); $3_1 = $1_1 + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($28_1, $33_1, -997805, -1); $4_1 = $1_1 + $3_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = __wasm_i64_mul($32_1, $24_1, 136657, 0); $4_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($30_1, $8_1, -683901, -1); $4_1 = $3_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $11_1 = $2_1; $1_1 = $4_1; $3_1 = $2_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $20_1 = $1_1 - -1048576 | 0; $8_1 = $3_1; $1_1 = $3_1 >> 21; $2_1 = ($3_1 & 2097151) << 11 | $20_1 >>> 21; $3_1 = $2_1 + $12_1 | 0; $1_1 = $1_1 + $10_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $10_1 = $1_1; $1_1 = $3_1; $13_1 = $10_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $12_1 = $1_1 - -1048576 | 0; $9_1 = $13_1; $1_1 = $9_1 >> 21; $13_1 = ($9_1 & 2097151) << 11 | $12_1 >>> 21; $19 = $13_1 + $34_1 | 0; $2_1 = $1_1 + $29_1 | 0; $34_1 = $19; $13_1 = $19 >>> 0 < $13_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $12_1 & -2097152; $29_1 = $3_1 - $1_1 | 0; $35_1 = $10_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $9_1 | 0) | 0; $1_1 = $20_1 & -2097152; $17_1 = $4_1 - $1_1 | 0; $21_1 = $11_1 - (($4_1 >>> 0 < $1_1 >>> 0) + $8_1 | 0) | 0; $2_1 = __wasm_i64_mul($45_1, $46_1, 666643, 0); $1_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($54_1 & 1) << 31 | $66_1 >>> 1) & 2097151; $2_1 = $3_1 + $2_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $1_1 = $1_1 + 1 | 0; } $3_1 = __wasm_i64_mul($47_1, $23_1, 470296, 0); $4_1 = $3_1 + $2_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($28_1, $33_1, 654183, 0); $4_1 = $3_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($32_1, $24_1, -997805, -1); $4_1 = $2_1 + $4_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $3_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = __wasm_i64_mul($30_1, $27_1, 136657, 0); $4_1 = $1_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $8_1 = $4_1; $9_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $14_1 & -2097152; $10_1 = $6_1 - $1_1 | 0; $6_1 = $15_1 - (($6_1 >>> 0 < $1_1 >>> 0) + $22_1 | 0) | 0; $1_1 = __wasm_i64_mul($37_1, $48_1, -683901, -1); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($43_1 & 127) << 25 | $68_1 >>> 7) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $3_1 = $1_1; $1_1 = __wasm_i64_mul($38_1, $49_1, 136657, 0); $4_1 = $3_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = __wasm_i64_mul($39_1, $50_1, -997805, -1); $4_1 = $2_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($40_1, $51_1, 654183, 0); $4_1 = $3_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = __wasm_i64_mul($36_1, $44_1, 666643, 0); $4_1 = $3_1 + $4_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($41_1, $26_1, 470296, 0); $4_1 = $3_1 + $4_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $4_1; $1_1 = $2_1; $2_1 = $7_1 >> 21; $7_1 = ($7_1 & 2097151) << 11 | $57_1 >>> 21; $4_1 = $7_1 + $3_1 | 0; $3_1 = $1_1 + $2_1 | 0; $3_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $22_1 = $3_1; $1_1 = $4_1; $3_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $15_1 = $1_1 - -1048576 | 0; $11_1 = $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $15_1 >>> 21; $7_1 = $3_1 + $10_1 | 0; $1_1 = $2_1 + $6_1 | 0; $26_1 = $7_1; $1_1 = $7_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $16_1 = $1_1; $1_1 = __wasm_i64_mul($7_1, $1_1, -683901, -1); $3_1 = $1_1 + $8_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $9_1 | 0; $9_1 = $3_1; $7_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($47_1, $23_1, 666643, 0); $3_1 = i64toi32_i32$HIGH_BITS; $2_1 = (($53 & 15) << 28 | $65_1 >>> 4) & 2097151; $1_1 = $2_1 + $1_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $3_1 = $3_1 + 1 | 0; } $2_1 = __wasm_i64_mul($28_1, $33_1, 470296, 0); $6_1 = $2_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $6_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = __wasm_i64_mul($32_1, $24_1, 654183, 0); $6_1 = $3_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $2_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = __wasm_i64_mul($30_1, $27_1, -997805, -1); $3_1 = $1_1 + $6_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1; $3_1 = __wasm_i64_mul($26_1, $16_1, 136657, 0); $6_1 = $1_1 + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $8_1 = $1_1; $1_1 = $6_1; $3_1 = $8_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $19 = $1_1 - -1048576 | 0; $10_1 = $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $19 >>> 21; $9_1 = $3_1 + $9_1 | 0; $1_1 = $2_1 + $7_1 | 0; $7_1 = $9_1; $1_1 = $7_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; $1_1 = $7_1; $12_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $20_1 = $1_1 - -1048576 | 0; $9_1 = $12_1; $2_1 = $9_1 >> 21; $12_1 = ($9_1 & 2097151) << 11 | $20_1 >>> 21; $14_1 = $12_1 + $17_1 | 0; $1_1 = $2_1 + $21_1 | 0; $31_1 = $14_1; $12_1 = $14_1 >>> 0 < $12_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $15_1 & -2097152; $1_1 = $4_1 - $2_1 | 0; $4_1 = $22_1 - (($4_1 >>> 0 < $2_1 >>> 0) + $11_1 | 0) | 0; $11_1 = $1_1; $1_1 = $5_1 >> 21; $2_1 = ($5_1 & 2097151) << 11 | $58_1 >>> 21; $5_1 = $11_1 + $2_1 | 0; $1_1 = $1_1 + $4_1 | 0; $4_1 = $5_1; $1_1 = $4_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $15_1 = $1_1; $1_1 = $4_1; $5_1 = $15_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $14_1 = $1_1 - -1048576 | 0; $22_1 = $5_1; $1_1 = $5_1 >> 21; $21_1 = $1_1; $23_1 = ($5_1 & 2097151) << 11 | $14_1 >>> 21; $1_1 = __wasm_i64_mul($23_1, $1_1, -683901, -1); $5_1 = $1_1 + $7_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $5_1; $1_1 = $20_1 & -2097152; $25_1 = $3_1 - $1_1 | 0; $17_1 = $2_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $9_1 | 0) | 0; $2_1 = __wasm_i64_mul($23_1, $21_1, 136657, 0) + $6_1 | 0; $1_1 = $8_1 + i64toi32_i32$HIGH_BITS | 0; $1_1 = $2_1 >>> 0 < $6_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $2_1; $2_1 = $19 & -2097152; $43_1 = $3_1 - $2_1 | 0; $19 = $1_1 - (($3_1 >>> 0 < $2_1 >>> 0) + $10_1 | 0) | 0; $1_1 = __wasm_i64_mul($28_1, $33_1, 666643, 0); $2_1 = i64toi32_i32$HIGH_BITS; $3_1 = (($52_1 & 127) << 25 | $64_1 >>> 7) & 2097151; $1_1 = $3_1 + $1_1 | 0; if ($1_1 >>> 0 < $3_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $3_1 = $1_1; $1_1 = __wasm_i64_mul($32_1, $24_1, 470296, 0); $5_1 = $3_1 + $1_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $3_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = __wasm_i64_mul($30_1, $27_1, 654183, 0); $5_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = __wasm_i64_mul($26_1, $16_1, -997805, -1); $3_1 = $2_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $1_1 | 0; $10_1 = $3_1; $3_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($32_1, $24_1, 666643, 0); $2_1 = i64toi32_i32$HIGH_BITS; $5_1 = (($63 & 3) << 30 | $62_1 >>> 2) & 2097151; $1_1 = $5_1 + $1_1 | 0; if ($1_1 >>> 0 < $5_1 >>> 0) { $2_1 = $2_1 + 1 | 0; } $5_1 = $1_1; $1_1 = __wasm_i64_mul($30_1, $27_1, 470296, 0); $5_1 = $5_1 + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $5_1; $5_1 = __wasm_i64_mul($26_1, $16_1, 654183, 0); $7_1 = $1_1 + $5_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $2_1 | 0; $1_1 = $7_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = $7_1; $9_1 = $1_1; $1_1 = $5_1; $7_1 = $9_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $20_1 = $1_1 - -1048576 | 0; $6_1 = $7_1; $2_1 = $6_1 >> 21; $7_1 = ($6_1 & 2097151) << 11 | $20_1 >>> 21; $10_1 = $7_1 + $10_1 | 0; $1_1 = $2_1 + $3_1 | 0; $8_1 = $10_1; $1_1 = $8_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; $1_1 = $8_1; $11_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $10_1 = $1_1 - -1048576 | 0; $7_1 = $11_1; $2_1 = $7_1 >> 21; $11_1 = ($7_1 & 2097151) << 11 | $10_1 >>> 21; $24_1 = $11_1 + $43_1 | 0; $1_1 = $2_1 + $19 | 0; $52_1 = $24_1; $11_1 = $24_1 >>> 0 < $11_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $1_1 = __wasm_i64_mul($23_1, $21_1, -997805, -1); $2_1 = $1_1 + $8_1 | 0; $3_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $3_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $1_1 = $10_1 & -2097152; $53 = $2_1 - $1_1 | 0; $54_1 = $3_1 - (($2_1 >>> 0 < $1_1 >>> 0) + $7_1 | 0) | 0; $1_1 = __wasm_i64_mul($23_1, $21_1, 654183, 0) + $5_1 | 0; $2_1 = $9_1 + i64toi32_i32$HIGH_BITS | 0; $2_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $1_1; $1_1 = $20_1 & -2097152; $43_1 = $3_1 - $1_1 | 0; $24_1 = $2_1 - (($3_1 >>> 0 < $1_1 >>> 0) + $6_1 | 0) | 0; $1_1 = __wasm_i64_mul($30_1, $27_1, 666643, 0); $3_1 = i64toi32_i32$HIGH_BITS; $2_1 = (($61_1 & 31) << 27 | $60 >>> 5) & 2097151; $1_1 = $2_1 + $1_1 | 0; if ($1_1 >>> 0 < $2_1 >>> 0) { $3_1 = $3_1 + 1 | 0; } $2_1 = __wasm_i64_mul($26_1, $16_1, 470296, 0); $5_1 = $2_1 + $1_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS + $3_1 | 0; $6_1 = $5_1; $3_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $59_1 & 2097151; $5_1 = __wasm_i64_mul($26_1, $16_1, 666643, 0) + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $7_1 = $5_1; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $8_1 = $1_1; $1_1 = $5_1; $5_1 = $8_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $19 = $1_1 - -1048576 | 0; $10_1 = $5_1; $2_1 = $5_1 >> 21; $1_1 = ($5_1 & 2097151) << 11 | $19 >>> 21; $5_1 = $1_1 + $6_1 | 0; $3_1 = $2_1 + $3_1 | 0; $3_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $9_1 = $3_1; $1_1 = $5_1; $3_1 = $3_1 - (($1_1 >>> 0 < 4293918720) + -1 | 0) | 0; $20_1 = $1_1 - -1048576 | 0; $6_1 = $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $20_1 >>> 21; $16_1 = $3_1 + $43_1 | 0; $1_1 = $2_1 + $24_1 | 0; $1_1 = $16_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1; $1_1 = __wasm_i64_mul($23_1, $21_1, 470296, 0) + $5_1 | 0; $2_1 = $9_1 + i64toi32_i32$HIGH_BITS | 0; $2_1 = $1_1 >>> 0 < $5_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $9_1 = $1_1; $5_1 = $20_1 & -2097152; $1_1 = $1_1 - $5_1 | 0; $6_1 = $2_1 - (($9_1 >>> 0 < $5_1 >>> 0) + $6_1 | 0) | 0; $9_1 = $1_1; $2_1 = __wasm_i64_mul($23_1, $21_1, 666643, 0); $1_1 = $19 & -2097152; $5_1 = $2_1 + ($7_1 - $1_1 | 0) | 0; $1_1 = i64toi32_i32$HIGH_BITS + ($8_1 - (($7_1 >>> 0 < $1_1 >>> 0) + $10_1 | 0) | 0) | 0; $1_1 = $5_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $7_1 = $5_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $5_1 >>> 21; $5_1 = $9_1 + $1_1 | 0; $2_1 = $2_1 + $6_1 | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $27_1 = $5_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $5_1 >>> 21; $5_1 = $2_1 + $16_1 | 0; $3_1 = $1_1 + $3_1 | 0; $6_1 = $5_1; $1_1 = $5_1; $3_1 = $1_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $1_1 >>> 21; $5_1 = $3_1 + $53 | 0; $1_1 = $2_1 + $54_1 | 0; $10_1 = $5_1; $2_1 = $5_1; $1_1 = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $2_1 >>> 21; $5_1 = $1_1 + $52_1 | 0; $2_1 = $3_1 + $11_1 | 0; $11_1 = $5_1; $3_1 = $5_1; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $2_1 + $25_1 | 0; $1_1 = $1_1 + $17_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $16_1 = $3_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $1_1 + $31_1 | 0; $2_1 = $2_1 + $12_1 | 0; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $21_1 = $3_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $3_1 >>> 21; $5_1 = $2_1 + $29_1 | 0; $3_1 = $1_1 + $35_1 | 0; $19 = $5_1; $1_1 = $5_1; $3_1 = $1_1 >>> 0 < $2_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $2_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $1_1 >>> 21; $5_1 = $3_1 + $34_1 | 0; $1_1 = $2_1 + $13_1 | 0; $20_1 = $5_1; $2_1 = $5_1; $1_1 = $2_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $2_1 >>> 21; $5_1 = $1_1 + $56_1 | 0; $2_1 = $3_1 + $42_1 | 0; $13_1 = $5_1; $3_1 = $5_1; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $2_1 + $55 | 0; $1_1 = $1_1 + $18_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $12_1 = $3_1; $2_1 = $1_1 >> 21; $5_1 = ($1_1 & 2097151) << 11 | $3_1 >>> 21; $3_1 = $14_1 & -2097152; $1_1 = $4_1 - $3_1 | 0; $5_1 = $5_1 + $1_1 | 0; $3_1 = ($15_1 - (($4_1 >>> 0 < $3_1 >>> 0) + $22_1 | 0) | 0) + $2_1 | 0; $22_1 = $5_1; $2_1 = $5_1; $3_1 = $2_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $18_1 = ($3_1 & 2097151) << 11 | $2_1 >>> 21; $1_1 = $3_1 >> 21; $8_1 = $1_1; $2_1 = $7_1 & 2097151; $3_1 = __wasm_i64_mul($18_1, $1_1, 666643, 0) + $2_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $9_1 = $3_1; $1_1 = $3_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = $1_1; HEAP82[$69_1 | 0] = $3_1; HEAP82[$0 + 1 | 0] = ($1_1 & 255) << 24 | $3_1 >>> 8; $1_1 = $27_1 & 2097151; $3_1 = __wasm_i64_mul($18_1, $8_1, 470296, 0) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $3_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $7_1 = $3_1; $3_1 = $5_1; $1_1 = $3_1 >> 21; $4_1 = ($3_1 & 2097151) << 11 | $9_1 >>> 21; $15_1 = $7_1 + $4_1 | 0; $3_1 = $1_1 + $2_1 | 0; $3_1 = $15_1 >>> 0 < $4_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; $4_1 = $15_1; HEAP82[$0 + 4 | 0] = ($3_1 & 2047) << 21 | $4_1 >>> 11; $2_1 = $3_1; $1_1 = $2_1; $3_1 = $4_1; HEAP82[$0 + 3 | 0] = ($1_1 & 7) << 29 | $3_1 >>> 3; $3_1 = $6_1 & 2097151; $6_1 = __wasm_i64_mul($18_1, $8_1, 654183, 0) + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $1_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $6_1; $6_1 = ($2_1 & 2097151) << 11 | $4_1 >>> 21; $15_1 = $3_1 + $6_1 | 0; $2_1 = ($2_1 >> 21) + $1_1 | 0; $2_1 = $15_1 >>> 0 < $6_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $6_1 = $15_1; $1_1 = $2_1; HEAP82[$0 + 6 | 0] = ($1_1 & 63) << 26 | $6_1 >>> 6; $7_1 = 0; $3_1 = (($5_1 & 65535) << 16 | $9_1 >>> 16) & 31; $9_1 = $4_1 & 2097151; $2_1 = $9_1; HEAP82[$0 + 2 | 0] = $3_1 | $2_1 << 5; $5_1 = $0; $3_1 = $10_1 & 2097151; $4_1 = __wasm_i64_mul($18_1, $8_1, -997805, -1) + $3_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $2_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $4_1 = $1_1 + $4_1 | 0; $3_1 = $2_1 + $3_1 | 0; $10_1 = $4_1; $3_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $3_1 + 1 | 0 : $3_1; HEAP82[$5_1 + 9 | 0] = ($3_1 & 511) << 23 | $4_1 >>> 9; $2_1 = $3_1; $1_1 = $2_1; $3_1 = $4_1; HEAP82[$5_1 + 8 | 0] = ($1_1 & 1) << 31 | $3_1 >>> 1; $4_1 = 0; $6_1 = $6_1 & 2097151; $3_1 = $6_1; HEAP82[$5_1 + 5 | 0] = ($7_1 & 524287) << 13 | $9_1 >>> 19 | $3_1 << 2; $3_1 = $11_1 & 2097151; $7_1 = __wasm_i64_mul($18_1, $8_1, 136657, 0) + $3_1 | 0; $1_1 = i64toi32_i32$HIGH_BITS; $1_1 = $7_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $3_1 = $2_1 >> 21; $2_1 = ($2_1 & 2097151) << 11 | $10_1 >>> 21; $7_1 = $2_1 + $7_1 | 0; $1_1 = $1_1 + $3_1 | 0; $9_1 = $7_1; $1_1 = $7_1 >>> 0 < $2_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $7_1; HEAP82[$5_1 + 12 | 0] = ($1_1 & 4095) << 20 | $2_1 >>> 12; $3_1 = $1_1; HEAP82[$5_1 + 11 | 0] = ($1_1 & 15) << 28 | $2_1 >>> 4; $7_1 = 0; $11_1 = $10_1 & 2097151; $2_1 = $11_1; HEAP82[$5_1 + 7 | 0] = ($4_1 & 16383) << 18 | $6_1 >>> 14 | $2_1 << 7; $1_1 = $16_1 & 2097151; $4_1 = __wasm_i64_mul($18_1, $8_1, -683901, -1) + $1_1 | 0; $2_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $3_1 >> 21; $3_1 = ($3_1 & 2097151) << 11 | $9_1 >>> 21; $4_1 = $3_1 + $4_1 | 0; $2_1 = $1_1 + $2_1 | 0; $6_1 = $4_1; $2_1 = $4_1 >>> 0 < $3_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $1_1 = $2_1; HEAP82[$5_1 + 14 | 0] = ($1_1 & 127) << 25 | $4_1 >>> 7; $4_1 = 0; $10_1 = $9_1 & 2097151; $3_1 = $10_1; HEAP82[$5_1 + 10 | 0] = ($7_1 & 131071) << 15 | $11_1 >>> 17 | $3_1 << 4; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $9_1 = $1_1 + ($21_1 & 2097151) | 0; $3_1 = $9_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; HEAP82[$5_1 + 17 | 0] = ($3_1 & 1023) << 22 | $9_1 >>> 10; $1_1 = $3_1; $3_1 = $9_1; HEAP82[$5_1 + 16 | 0] = ($1_1 & 3) << 30 | $3_1 >>> 2; $8_1 = $6_1 & 2097151; $3_1 = $8_1; HEAP82[$5_1 + 13 | 0] = ($4_1 & 1048575) << 12 | $10_1 >>> 20 | $3_1 << 1; $3_1 = ($1_1 & 2097151) << 11 | $9_1 >>> 21; $6_1 = $3_1 + ($19 & 2097151) | 0; $1_1 = $1_1 >> 21; $1_1 = $6_1 >>> 0 < $3_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $6_1; HEAP82[$5_1 + 20 | 0] = ($1_1 & 8191) << 19 | $2_1 >>> 13; HEAP82[$5_1 + 19 | 0] = ($1_1 & 31) << 27 | $2_1 >>> 5; $10_1 = $9_1 & 2097151; $2_1 = $10_1; HEAP82[$5_1 + 15 | 0] = ($7_1 & 32767) << 17 | $8_1 >>> 15 | $2_1 << 6; $2_1 = $1_1 >> 21; $5_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $8_1 = $5_1 + ($20_1 & 2097151) | 0; $1_1 = $2_1; $1_1 = $8_1 >>> 0 < $5_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $5_1 = $1_1; HEAP82[$0 + 21 | 0] = $8_1; $1_1 = $6_1; HEAP82[$0 + 18 | 0] = ($4_1 & 262143) << 14 | $10_1 >>> 18 | $1_1 << 3; $1_1 = $5_1; HEAP82[$0 + 22 | 0] = ($1_1 & 255) << 24 | $8_1 >>> 8; $2_1 = $0; $3_1 = $1_1; $1_1 = $1_1 >> 21; $7_1 = ($3_1 & 2097151) << 11 | $8_1 >>> 21; $6_1 = $7_1 + ($13_1 & 2097151) | 0; $3_1 = $6_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; HEAP82[$2_1 + 25 | 0] = ($3_1 & 2047) << 21 | $6_1 >>> 11; $1_1 = $3_1; $3_1 = $6_1; HEAP82[$2_1 + 24 | 0] = ($1_1 & 7) << 29 | $3_1 >>> 3; $3_1 = $2_1; $7_1 = ($1_1 & 2097151) << 11 | $6_1 >>> 21; $9_1 = $7_1 + ($12_1 & 2097151) | 0; $1_1 = $1_1 >> 21; $4_1 = $9_1; $1_1 = $4_1 >>> 0 < $7_1 >>> 0 ? $1_1 + 1 | 0 : $1_1; $2_1 = $1_1; HEAP82[$3_1 + 27 | 0] = ($1_1 & 63) << 26 | $4_1 >>> 6; $7_1 = 0; $9_1 = $6_1 & 2097151; $1_1 = $9_1; HEAP82[$3_1 + 23 | 0] = (($5_1 & 65535) << 16 | $8_1 >>> 16) & 31 | $1_1 << 5; $1_1 = $2_1; $2_1 = $1_1 >> 21; $1_1 = ($1_1 & 2097151) << 11 | $4_1 >>> 21; $5_1 = $1_1 + ($22_1 & 2097151) | 0; $2_1 = $5_1 >>> 0 < $1_1 >>> 0 ? $2_1 + 1 | 0 : $2_1; $3_1 = $5_1; HEAP82[$0 + 31 | 0] = ($2_1 & 131071) << 15 | $3_1 >>> 17; $1_1 = $2_1; HEAP82[$0 + 30 | 0] = ($1_1 & 511) << 23 | $3_1 >>> 9; HEAP82[$0 + 29 | 0] = ($1_1 & 1) << 31 | $3_1 >>> 1; $2_1 = 0; $4_1 = $4_1 & 2097151; HEAP82[$0 + 26 | 0] = ($7_1 & 524287) << 13 | $9_1 >>> 19 | $4_1 << 2; HEAP82[$0 + 28 | 0] = ($2_1 & 16383) << 18 | $4_1 >>> 14 | $3_1 << 7; } function $70($0) { var $1_1 = 0; $1_1 = HEAP322[315]; HEAP322[$0 + 184 >> 2] = HEAP322[314]; HEAP322[$0 + 188 >> 2] = $1_1; $1_1 = HEAP322[313]; HEAP322[$0 + 176 >> 2] = HEAP322[312]; HEAP322[$0 + 180 >> 2] = $1_1; $1_1 = HEAP322[311]; HEAP322[$0 + 168 >> 2] = HEAP322[310]; HEAP322[$0 + 172 >> 2] = $1_1; $1_1 = HEAP322[309]; HEAP322[$0 + 160 >> 2] = HEAP322[308]; HEAP322[$0 + 164 >> 2] = $1_1; $1_1 = HEAP322[307]; HEAP322[$0 + 152 >> 2] = HEAP322[306]; HEAP322[$0 + 156 >> 2] = $1_1; $1_1 = HEAP322[305]; HEAP322[$0 + 144 >> 2] = HEAP322[304]; HEAP322[$0 + 148 >> 2] = $1_1; $1_1 = HEAP322[303]; HEAP322[$0 + 136 >> 2] = HEAP322[302]; HEAP322[$0 + 140 >> 2] = $1_1; $1_1 = HEAP322[301]; HEAP322[$0 + 128 >> 2] = HEAP322[300]; HEAP322[$0 + 132 >> 2] = $1_1; HEAP322[$0 + 192 >> 2] = 0; HEAP322[$0 + 196 >> 2] = 0; } function $71($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0; if ($2_1) { $7_1 = $0 + 128 | 0; $4_1 = HEAP322[$0 + 192 >> 2] & 127; while (1) { $3_1 = 128 - $4_1 | 0; $3_1 = $3_1 >>> 0 > $2_1 >>> 0 ? $2_1 : $3_1; $78($0 + $4_1 | 0, $1_1, $3_1); $2_1 = $2_1 - $3_1 | 0; $4_1 = $3_1 + $4_1 | 0; if (($4_1 | 0) == 128) { $72($0, $7_1); $4_1 = 0; } $1_1 = $1_1 + $3_1 | 0; $5_1 = HEAP322[$0 + 196 >> 2]; $6_1 = HEAP322[$0 + 192 >> 2] + $3_1 | 0; if ($6_1 >>> 0 < $3_1 >>> 0) { $5_1 = $5_1 + 1 | 0; } HEAP322[$0 + 192 >> 2] = $6_1; HEAP322[$0 + 196 >> 2] = $5_1; if ($2_1) { continue; } break; } } } function $72($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0, $12_1 = 0, $13_1 = 0, $14_1 = 0, $15_1 = 0, $16_1 = 0, $17_1 = 0, $18_1 = 0, $19 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0; $24_1 = global$0 - 640 | 0; global$0 = $24_1; while (1) { $5_1 = $3_1 << 3; $4_1 = $5_1 + $24_1 | 0; HEAP322[$4_1 >> 2] = $73($0 + $5_1 | 0); HEAP322[$4_1 + 4 >> 2] = i64toi32_i32$HIGH_BITS; $26_1 = 16; $3_1 = $3_1 + 1 | 0; if (($3_1 | 0) != 16) { continue; } break; } while (1) { $6_1 = ($26_1 << 3) + $24_1 | 0; $3_1 = $6_1; $4_1 = $3_1 + -56 | 0; $9_1 = HEAP322[$4_1 >> 2]; $0 = $3_1 + -128 | 0; $5_1 = $9_1 + HEAP322[$0 >> 2] | 0; $0 = HEAP322[$0 + 4 >> 2] + HEAP322[$4_1 + 4 >> 2] | 0; $4_1 = $5_1; $5_1 = $4_1 >>> 0 < $9_1 >>> 0 ? $0 + 1 | 0 : $0; $9_1 = $3_1 + -16 | 0; $0 = HEAP322[$9_1 + 4 >> 2]; $9_1 = HEAP322[$9_1 >> 2]; $16_1 = __wasm_rotl_i64($9_1, $0, 3); $14_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1; $4_1 = $0; $0 = $0 >>> 6 | 0; $9_1 = __wasm_rotl_i64($9_1, $4_1, 45) ^ ((($4_1 & 63) << 26 | $9_1 >>> 6) ^ $16_1); $4_1 = $2_1 + $9_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ ($0 ^ $14_1)) + $5_1 | 0; $0 = $4_1 >>> 0 < $9_1 >>> 0 ? $0 + 1 | 0 : $0; $5_1 = $0; $6_1 = $3_1 + -120 | 0; $0 = HEAP322[$6_1 + 4 >> 2]; $6_1 = HEAP322[$6_1 >> 2]; $9_1 = __wasm_rotl_i64($6_1, $0, 56); $16_1 = i64toi32_i32$HIGH_BITS; $2_1 = $4_1; $4_1 = $0; $0 = $0 >>> 7 | 0; $6_1 = __wasm_rotl_i64($6_1, $4_1, 63) ^ ((($4_1 & 127) << 25 | $6_1 >>> 7) ^ $9_1); $4_1 = $2_1 + $6_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ ($0 ^ $16_1)) + $5_1 | 0; HEAP322[$3_1 >> 2] = $4_1; HEAP322[$3_1 + 4 >> 2] = $4_1 >>> 0 < $6_1 >>> 0 ? $0 + 1 | 0 : $0; $26_1 = $26_1 + 1 | 0; if (($26_1 | 0) != 80) { continue; } break; } $26_1 = 0; $0 = $1_1; $3_1 = HEAP322[$0 + 4 >> 2]; $28_1 = HEAP322[$0 >> 2]; $7_1 = $28_1; $36_1 = $3_1; $10_1 = $3_1; $9_1 = HEAP322[$0 + 12 >> 2]; $37_1 = $9_1; $29_1 = HEAP322[$0 + 8 >> 2]; $15_1 = $29_1; $16_1 = HEAP322[$0 + 20 >> 2]; $38_1 = $16_1; $30_1 = HEAP322[$0 + 16 >> 2]; $17_1 = $30_1; $14_1 = HEAP322[$0 + 28 >> 2]; $39_1 = $14_1; $31_1 = HEAP322[$0 + 24 >> 2]; $18_1 = $31_1; $3_1 = HEAP322[$0 + 36 >> 2]; $40_1 = $3_1; $32_1 = HEAP322[$0 + 32 >> 2]; $8_1 = $32_1; $5_1 = HEAP322[$0 + 44 >> 2]; $41_1 = $5_1; $33_1 = HEAP322[$0 + 40 >> 2]; $11_1 = $33_1; $4_1 = HEAP322[$0 + 52 >> 2]; $42_1 = $4_1; $34_1 = HEAP322[$0 + 48 >> 2]; $12_1 = $34_1; $6_1 = HEAP322[$0 + 60 >> 2]; $43_1 = $6_1; $35_1 = HEAP322[$0 + 56 >> 2]; $20_1 = $35_1; while (1) { $25_1 = $26_1 << 3; $0 = $25_1 + 1264 | 0; $13_1 = HEAP322[$0 >> 2]; $2_1 = HEAP322[$0 + 4 >> 2]; $0 = __wasm_rotl_i64($8_1, $3_1, 50); $21_1 = i64toi32_i32$HIGH_BITS; $19 = __wasm_rotl_i64($8_1, $3_1, 46) ^ $0; $21_1 = i64toi32_i32$HIGH_BITS ^ $21_1; $0 = $6_1 + ($4_1 ^ $3_1 & ($4_1 ^ $5_1)) | 0; $6_1 = $20_1 + ($12_1 ^ $8_1 & ($11_1 ^ $12_1)) | 0; if ($6_1 >>> 0 < $20_1 >>> 0) { $0 = $0 + 1 | 0; } $20_1 = __wasm_rotl_i64($8_1, $3_1, 23) ^ $19; $6_1 = $20_1 + $6_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $21_1) + $0 | 0; $0 = $6_1 >>> 0 < $20_1 >>> 0 ? $0 + 1 | 0 : $0; $20_1 = $6_1; $6_1 = $6_1 + $13_1 | 0; $0 = $0 + $2_1 | 0; $0 = $6_1 >>> 0 < $20_1 >>> 0 ? $0 + 1 | 0 : $0; $20_1 = $24_1 + $25_1 | 0; $13_1 = HEAP322[$20_1 >> 2]; $6_1 = $13_1 + $6_1 | 0; $0 = HEAP322[$20_1 + 4 >> 2] + $0 | 0; $0 = $6_1 >>> 0 < $13_1 >>> 0 ? $0 + 1 | 0 : $0; $13_1 = $0; $0 = __wasm_rotl_i64($7_1, $10_1, 36); $2_1 = i64toi32_i32$HIGH_BITS; $0 = __wasm_rotl_i64($7_1, $10_1, 30) ^ $0; $21_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $19 = __wasm_rotl_i64($7_1, $10_1, 25) ^ $0; $2_1 = $19 + ($17_1 & ($7_1 | $15_1) | $7_1 & $15_1) | 0; $0 = ($16_1 & ($9_1 | $10_1) | $9_1 & $10_1) + (i64toi32_i32$HIGH_BITS ^ $21_1) | 0; $0 = $2_1 >>> 0 < $19 >>> 0 ? $0 + 1 | 0 : $0; $21_1 = $2_1; $2_1 = $2_1 + $6_1 | 0; $0 = $0 + $13_1 | 0; $0 = $2_1 >>> 0 < $21_1 >>> 0 ? $0 + 1 | 0 : $0; $21_1 = $2_1; $20_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $22_1 = $20_1; $20_1 = $0; $19 = $22_1 ^ __wasm_rotl_i64($21_1, $0, 30); $22_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($21_1, $0, 25) ^ $19; $19 = $15_1 & ($7_1 | $21_1) | $7_1 & $21_1; $2_1 = $2_1 + $19 | 0; $0 = ($9_1 & ($0 | $10_1) | $0 & $10_1) + (i64toi32_i32$HIGH_BITS ^ $22_1) | 0; $22_1 = $2_1; $2_1 = $2_1 >>> 0 < $19 >>> 0 ? $0 + 1 | 0 : $0; $23_1 = $25_1 | 8; $0 = $23_1 + 1264 | 0; $19 = $12_1 + HEAP322[$0 >> 2] | 0; $0 = $4_1 + HEAP322[$0 + 4 >> 2] | 0; $0 = $19 >>> 0 < $12_1 >>> 0 ? $0 + 1 | 0 : $0; $4_1 = $19; $12_1 = $23_1 + $24_1 | 0; $19 = HEAP322[$12_1 >> 2]; $4_1 = $4_1 + $19 | 0; $0 = HEAP322[$12_1 + 4 >> 2] + $0 | 0; $12_1 = $4_1; $4_1 = $4_1 >>> 0 < $19 >>> 0 ? $0 + 1 | 0 : $0; $0 = $13_1 + $14_1 | 0; $14_1 = $6_1 + $18_1 | 0; if ($14_1 >>> 0 < $6_1 >>> 0) { $0 = $0 + 1 | 0; } $6_1 = $14_1; $14_1 = $0; $0 = ($5_1 ^ $0 & ($3_1 ^ $5_1)) + $4_1 | 0; $4_1 = $11_1 ^ ($8_1 ^ $11_1) & $6_1; $12_1 = $4_1 + $12_1 | 0; if ($12_1 >>> 0 < $4_1 >>> 0) { $0 = $0 + 1 | 0; } $4_1 = $12_1; $12_1 = __wasm_rotl_i64($6_1, $14_1, 50); $13_1 = i64toi32_i32$HIGH_BITS; $12_1 = __wasm_rotl_i64($6_1, $14_1, 46) ^ $12_1; $13_1 = i64toi32_i32$HIGH_BITS ^ $13_1; $12_1 = __wasm_rotl_i64($6_1, $14_1, 23) ^ $12_1; $4_1 = $12_1 + $4_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $13_1) + $0 | 0; $0 = $4_1 >>> 0 < $12_1 >>> 0 ? $0 + 1 | 0 : $0; $13_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $4_1 + $22_1 | 0; if ($2_1 >>> 0 < $4_1 >>> 0) { $0 = $0 + 1 | 0; } $19 = $2_1; $12_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $18_1 = $12_1; $12_1 = $0; $18_1 = $18_1 ^ __wasm_rotl_i64($19, $0, 30); $22_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($19, $0, 25) ^ $18_1; $18_1 = $7_1 & ($19 | $21_1) | $19 & $21_1; $2_1 = $2_1 + $18_1 | 0; $0 = ($10_1 & ($0 | $20_1) | $0 & $20_1) + (i64toi32_i32$HIGH_BITS ^ $22_1) | 0; $22_1 = $2_1; $2_1 = $2_1 >>> 0 < $18_1 >>> 0 ? $0 + 1 | 0 : $0; $23_1 = $25_1 | 16; $0 = $23_1 + 1264 | 0; $18_1 = $11_1 + HEAP322[$0 >> 2] | 0; $0 = $5_1 + HEAP322[$0 + 4 >> 2] | 0; $0 = $18_1 >>> 0 < $11_1 >>> 0 ? $0 + 1 | 0 : $0; $5_1 = $18_1; $11_1 = $23_1 + $24_1 | 0; $18_1 = HEAP322[$11_1 >> 2]; $5_1 = $5_1 + $18_1 | 0; $0 = HEAP322[$11_1 + 4 >> 2] + $0 | 0; $11_1 = $5_1; $5_1 = $5_1 >>> 0 < $18_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $13_1 + $16_1 | 0; $16_1 = $4_1 + $17_1 | 0; if ($16_1 >>> 0 < $4_1 >>> 0) { $0 = $0 + 1 | 0; } $4_1 = $16_1; $16_1 = $0; $0 = ($3_1 ^ $0 & ($3_1 ^ $14_1)) + $5_1 | 0; $5_1 = $8_1 ^ ($6_1 ^ $8_1) & $4_1; $11_1 = $5_1 + $11_1 | 0; if ($11_1 >>> 0 < $5_1 >>> 0) { $0 = $0 + 1 | 0; } $5_1 = $11_1; $11_1 = __wasm_rotl_i64($4_1, $16_1, 50); $13_1 = i64toi32_i32$HIGH_BITS; $11_1 = __wasm_rotl_i64($4_1, $16_1, 46) ^ $11_1; $13_1 = i64toi32_i32$HIGH_BITS ^ $13_1; $11_1 = __wasm_rotl_i64($4_1, $16_1, 23) ^ $11_1; $5_1 = $11_1 + $5_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $13_1) + $0 | 0; $0 = $5_1 >>> 0 < $11_1 >>> 0 ? $0 + 1 | 0 : $0; $13_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $5_1 + $22_1 | 0; if ($2_1 >>> 0 < $5_1 >>> 0) { $0 = $0 + 1 | 0; } $22_1 = $2_1; $11_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $17_1 = $11_1; $11_1 = $0; $17_1 = $17_1 ^ __wasm_rotl_i64($22_1, $0, 30); $18_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($22_1, $0, 25) ^ $17_1; $17_1 = $21_1 & ($19 | $22_1) | $19 & $22_1; $2_1 = $2_1 + $17_1 | 0; $0 = ($20_1 & ($0 | $12_1) | $0 & $12_1) + (i64toi32_i32$HIGH_BITS ^ $18_1) | 0; $18_1 = $2_1; $2_1 = $2_1 >>> 0 < $17_1 >>> 0 ? $0 + 1 | 0 : $0; $23_1 = $25_1 | 24; $0 = $23_1 + 1264 | 0; $17_1 = $8_1 + HEAP322[$0 >> 2] | 0; $0 = $3_1 + HEAP322[$0 + 4 >> 2] | 0; $0 = $17_1 >>> 0 < $8_1 >>> 0 ? $0 + 1 | 0 : $0; $3_1 = $17_1; $8_1 = $23_1 + $24_1 | 0; $17_1 = HEAP322[$8_1 >> 2]; $3_1 = $3_1 + $17_1 | 0; $0 = HEAP322[$8_1 + 4 >> 2] + $0 | 0; $8_1 = $3_1; $3_1 = $3_1 >>> 0 < $17_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $9_1 + $13_1 | 0; $9_1 = $5_1 + $15_1 | 0; if ($9_1 >>> 0 < $5_1 >>> 0) { $0 = $0 + 1 | 0; } $5_1 = $9_1; $9_1 = $0; $0 = ($14_1 ^ $0 & ($16_1 ^ $14_1)) + $3_1 | 0; $3_1 = $6_1 ^ ($4_1 ^ $6_1) & $5_1; $8_1 = $3_1 + $8_1 | 0; if ($8_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $8_1; $8_1 = __wasm_rotl_i64($5_1, $9_1, 50); $13_1 = i64toi32_i32$HIGH_BITS; $8_1 = __wasm_rotl_i64($5_1, $9_1, 46) ^ $8_1; $13_1 = i64toi32_i32$HIGH_BITS ^ $13_1; $8_1 = __wasm_rotl_i64($5_1, $9_1, 23) ^ $8_1; $3_1 = $8_1 + $3_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $13_1) + $0 | 0; $0 = $3_1 >>> 0 < $8_1 >>> 0 ? $0 + 1 | 0 : $0; $8_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $3_1 + $18_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $23_1 = $2_1; $13_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $15_1 = $13_1; $13_1 = $0; $15_1 = $15_1 ^ __wasm_rotl_i64($23_1, $0, 30); $17_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($23_1, $0, 25) ^ $15_1; $15_1 = $19 & ($22_1 | $23_1) | $22_1 & $23_1; $2_1 = $2_1 + $15_1 | 0; $0 = ($12_1 & ($0 | $11_1) | $0 & $11_1) + (i64toi32_i32$HIGH_BITS ^ $17_1) | 0; $17_1 = $2_1; $2_1 = $2_1 >>> 0 < $15_1 >>> 0 ? $0 + 1 | 0 : $0; $18_1 = $25_1 | 32; $0 = $18_1 + 1264 | 0; $15_1 = $6_1 + HEAP322[$0 >> 2] | 0; $0 = $14_1 + HEAP322[$0 + 4 >> 2] | 0; $0 = $15_1 >>> 0 < $6_1 >>> 0 ? $0 + 1 | 0 : $0; $6_1 = $15_1; $14_1 = $18_1 + $24_1 | 0; $15_1 = HEAP322[$14_1 >> 2]; $6_1 = $6_1 + $15_1 | 0; $0 = HEAP322[$14_1 + 4 >> 2] + $0 | 0; $14_1 = $6_1; $6_1 = $6_1 >>> 0 < $15_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $8_1 + $10_1 | 0; $10_1 = $3_1 + $7_1 | 0; if ($10_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $8_1 = $0; $0 = ($16_1 ^ $0 & ($9_1 ^ $16_1)) + $6_1 | 0; $3_1 = $4_1 ^ ($4_1 ^ $5_1) & $10_1; $6_1 = $3_1 + $14_1 | 0; if ($6_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $6_1; $6_1 = __wasm_rotl_i64($10_1, $8_1, 50); $14_1 = i64toi32_i32$HIGH_BITS; $6_1 = __wasm_rotl_i64($10_1, $8_1, 46) ^ $6_1; $14_1 = i64toi32_i32$HIGH_BITS ^ $14_1; $6_1 = __wasm_rotl_i64($10_1, $8_1, 23) ^ $6_1; $3_1 = $6_1 + $3_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $14_1) + $0 | 0; $0 = $3_1 >>> 0 < $6_1 >>> 0 ? $0 + 1 | 0 : $0; $6_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $3_1 + $17_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $18_1 = $2_1; $14_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = $14_1; $14_1 = $0; $7_1 = $7_1 ^ __wasm_rotl_i64($18_1, $0, 30); $15_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($18_1, $0, 25) ^ $7_1; $7_1 = $22_1 & ($18_1 | $23_1) | $18_1 & $23_1; $2_1 = $2_1 + $7_1 | 0; $0 = ($11_1 & ($0 | $13_1) | $0 & $13_1) + (i64toi32_i32$HIGH_BITS ^ $15_1) | 0; $15_1 = $2_1; $2_1 = $2_1 >>> 0 < $7_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $25_1 | 40; $17_1 = $0 + $24_1 | 0; $0 = $0 + 1264 | 0; $27_1 = HEAP322[$0 >> 2]; $7_1 = HEAP322[$17_1 >> 2] + $27_1 | 0; $0 = HEAP322[$17_1 + 4 >> 2] + HEAP322[$0 + 4 >> 2] | 0; $0 = $7_1 >>> 0 < $27_1 >>> 0 ? $0 + 1 | 0 : $0; $7_1 = $4_1 + $7_1 | 0; $0 = $0 + $16_1 | 0; $16_1 = $7_1; $4_1 = $7_1 >>> 0 < $4_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $6_1 + $20_1 | 0; $6_1 = $3_1 + $21_1 | 0; if ($6_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $20_1 = $6_1; $6_1 = $0; $0 = ($9_1 ^ $0 & ($8_1 ^ $9_1)) + $4_1 | 0; $3_1 = $5_1 ^ ($5_1 ^ $10_1) & $20_1; $4_1 = $3_1 + $16_1 | 0; if ($4_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $4_1; $4_1 = __wasm_rotl_i64($20_1, $6_1, 50); $16_1 = i64toi32_i32$HIGH_BITS; $4_1 = __wasm_rotl_i64($20_1, $6_1, 46) ^ $4_1; $16_1 = i64toi32_i32$HIGH_BITS ^ $16_1; $4_1 = __wasm_rotl_i64($20_1, $6_1, 23) ^ $4_1; $3_1 = $4_1 + $3_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $16_1) + $0 | 0; $0 = $3_1 >>> 0 < $4_1 >>> 0 ? $0 + 1 | 0 : $0; $4_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $3_1 + $15_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $17_1 = $2_1; $16_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = $16_1; $16_1 = $0; $7_1 = $7_1 ^ __wasm_rotl_i64($17_1, $0, 30); $15_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($17_1, $0, 25) ^ $7_1; $7_1 = $23_1 & ($17_1 | $18_1) | $17_1 & $18_1; $2_1 = $2_1 + $7_1 | 0; $0 = ($13_1 & ($0 | $14_1) | $0 & $14_1) + (i64toi32_i32$HIGH_BITS ^ $15_1) | 0; $15_1 = $2_1; $2_1 = $2_1 >>> 0 < $7_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $25_1 | 48; $21_1 = $0 + $24_1 | 0; $0 = $0 + 1264 | 0; $27_1 = HEAP322[$0 >> 2]; $7_1 = HEAP322[$21_1 >> 2] + $27_1 | 0; $0 = HEAP322[$21_1 + 4 >> 2] + HEAP322[$0 + 4 >> 2] | 0; $0 = $7_1 >>> 0 < $27_1 >>> 0 ? $0 + 1 | 0 : $0; $7_1 = $5_1 + $7_1 | 0; $0 = $0 + $9_1 | 0; $9_1 = $7_1; $5_1 = $7_1 >>> 0 < $5_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $4_1 + $12_1 | 0; $4_1 = $3_1 + $19 | 0; if ($4_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $12_1 = $4_1; $4_1 = $0; $0 = ($8_1 ^ $0 & ($6_1 ^ $8_1)) + $5_1 | 0; $3_1 = $10_1 ^ ($10_1 ^ $20_1) & $12_1; $5_1 = $3_1 + $9_1 | 0; if ($5_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $5_1; $5_1 = __wasm_rotl_i64($12_1, $4_1, 50); $9_1 = i64toi32_i32$HIGH_BITS; $5_1 = __wasm_rotl_i64($12_1, $4_1, 46) ^ $5_1; $9_1 = i64toi32_i32$HIGH_BITS ^ $9_1; $5_1 = __wasm_rotl_i64($12_1, $4_1, 23) ^ $5_1; $3_1 = $5_1 + $3_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $9_1) + $0 | 0; $0 = $3_1 >>> 0 < $5_1 >>> 0 ? $0 + 1 | 0 : $0; $5_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $3_1 + $15_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $15_1 = $2_1; $9_1 = __wasm_rotl_i64($2_1, $0, 36); $2_1 = i64toi32_i32$HIGH_BITS; $7_1 = $9_1; $9_1 = $0; $7_1 = $7_1 ^ __wasm_rotl_i64($15_1, $0, 30); $21_1 = i64toi32_i32$HIGH_BITS ^ $2_1; $2_1 = __wasm_rotl_i64($15_1, $0, 25) ^ $7_1; $7_1 = $18_1 & ($15_1 | $17_1) | $15_1 & $17_1; $2_1 = $2_1 + $7_1 | 0; $0 = ($14_1 & ($0 | $16_1) | $0 & $16_1) + (i64toi32_i32$HIGH_BITS ^ $21_1) | 0; $21_1 = $2_1; $2_1 = $2_1 >>> 0 < $7_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $25_1 | 56; $25_1 = $0 + $24_1 | 0; $0 = $0 + 1264 | 0; $19 = HEAP322[$0 >> 2]; $7_1 = HEAP322[$25_1 >> 2] + $19 | 0; $0 = HEAP322[$25_1 + 4 >> 2] + HEAP322[$0 + 4 >> 2] | 0; $0 = $7_1 >>> 0 < $19 >>> 0 ? $0 + 1 | 0 : $0; $7_1 = $7_1 + $10_1 | 0; $0 = $0 + $8_1 | 0; $8_1 = $7_1; $10_1 = $8_1 >>> 0 < $10_1 >>> 0 ? $0 + 1 | 0 : $0; $0 = $5_1 + $11_1 | 0; $5_1 = $3_1 + $22_1 | 0; if ($5_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $11_1 = $5_1; $5_1 = $0; $0 = ($6_1 ^ $0 & ($4_1 ^ $6_1)) + $10_1 | 0; $3_1 = $20_1 ^ ($12_1 ^ $20_1) & $11_1; $10_1 = $3_1 + $8_1 | 0; if ($10_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $10_1; $10_1 = __wasm_rotl_i64($11_1, $5_1, 50); $8_1 = i64toi32_i32$HIGH_BITS; $10_1 = __wasm_rotl_i64($11_1, $5_1, 46) ^ $10_1; $8_1 = i64toi32_i32$HIGH_BITS ^ $8_1; $10_1 = __wasm_rotl_i64($11_1, $5_1, 23) ^ $10_1; $3_1 = $10_1 + $3_1 | 0; $0 = (i64toi32_i32$HIGH_BITS ^ $8_1) + $0 | 0; $0 = $3_1 >>> 0 < $10_1 >>> 0 ? $0 + 1 | 0 : $0; $8_1 = $0; $0 = $0 + $2_1 | 0; $2_1 = $3_1 + $21_1 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $7_1 = $2_1; $10_1 = $0; $0 = $8_1 + $13_1 | 0; $8_1 = $3_1 + $23_1 | 0; if ($8_1 >>> 0 < $3_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $0; $0 = $26_1 >>> 0 < 72; $26_1 = $26_1 + 8 | 0; if ($0) { continue; } break; } $0 = $6_1 + $43_1 | 0; $6_1 = $20_1 + $35_1 | 0; if ($6_1 >>> 0 < $35_1 >>> 0) { $0 = $0 + 1 | 0; } $13_1 = $1_1; HEAP322[$13_1 + 56 >> 2] = $6_1; HEAP322[$13_1 + 60 >> 2] = $0; $0 = $4_1 + $42_1 | 0; $4_1 = $12_1 + $34_1 | 0; if ($4_1 >>> 0 < $34_1 >>> 0) { $0 = $0 + 1 | 0; } $6_1 = $1_1; HEAP322[$6_1 + 48 >> 2] = $4_1; HEAP322[$6_1 + 52 >> 2] = $0; $0 = $5_1 + $41_1 | 0; $5_1 = $11_1 + $33_1 | 0; if ($5_1 >>> 0 < $33_1 >>> 0) { $0 = $0 + 1 | 0; } $4_1 = $1_1; HEAP322[$4_1 + 40 >> 2] = $5_1; HEAP322[$4_1 + 44 >> 2] = $0; $0 = $3_1 + $40_1 | 0; $3_1 = $8_1 + $32_1 | 0; if ($3_1 >>> 0 < $32_1 >>> 0) { $0 = $0 + 1 | 0; } $5_1 = $1_1; HEAP322[$5_1 + 32 >> 2] = $3_1; HEAP322[$5_1 + 36 >> 2] = $0; $0 = $14_1 + $39_1 | 0; $5_1 = $18_1 + $31_1 | 0; if ($5_1 >>> 0 < $31_1 >>> 0) { $0 = $0 + 1 | 0; } $3_1 = $1_1; HEAP322[$3_1 + 24 >> 2] = $5_1; HEAP322[$3_1 + 28 >> 2] = $0; $0 = $16_1 + $38_1 | 0; $5_1 = $17_1 + $30_1 | 0; if ($5_1 >>> 0 < $30_1 >>> 0) { $0 = $0 + 1 | 0; } HEAP322[$1_1 + 16 >> 2] = $5_1; HEAP322[$3_1 + 20 >> 2] = $0; $0 = $9_1 + $37_1 | 0; $5_1 = $15_1 + $29_1 | 0; if ($5_1 >>> 0 < $29_1 >>> 0) { $0 = $0 + 1 | 0; } HEAP322[$1_1 + 8 >> 2] = $5_1; HEAP322[$3_1 + 12 >> 2] = $0; $0 = $10_1 + $36_1 | 0; $3_1 = $7_1 + $28_1 | 0; if ($3_1 >>> 0 < $28_1 >>> 0) { $0 = $0 + 1 | 0; } HEAP322[$1_1 >> 2] = $3_1; HEAP322[$1_1 + 4 >> 2] = $0; global$0 = $24_1 + 640 | 0; } function $73($0) { var $1_1 = 0, $2_1 = 0, $3_1 = 0; $1_1 = HEAPU82[$0 | 0] | HEAPU82[$0 + 1 | 0] << 8 | (HEAPU82[$0 + 2 | 0] << 16 | HEAPU82[$0 + 3 | 0] << 24); $0 = HEAPU82[$0 + 4 | 0] | HEAPU82[$0 + 5 | 0] << 8 | (HEAPU82[$0 + 6 | 0] << 16 | HEAPU82[$0 + 7 | 0] << 24); $2_1 = $0 << 24 | $1_1 >>> 8; $2_1 = $2_1 & 65280 | ($0 << 8 | $1_1 >>> 24) & 255 | ($1_1 << 8 & 16711680 | $1_1 << 24); $0 = (($0 & 255) << 24 | $1_1 >>> 8) & -16777216 | (($0 & 16777215) << 8 | $1_1 >>> 24) & 16711680 | ($0 >>> 8 & 65280 | $0 >>> 24) | $3_1; i64toi32_i32$HIGH_BITS = $2_1; return $0; } function $75($0, $1_1) { var $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0; $3_1 = HEAP322[$0 + 192 >> 2] & 127; $2_1 = $3_1 + $0 | 0; HEAP82[$2_1 | 0] = 128; $2_1 = $2_1 + 1 | 0; label$1: { if ($3_1 >>> 0 >= 112) { $79($2_1, $3_1 ^ 127); $72($0, $0 + 128 | 0); $79($0, 112); break label$1; } $79($2_1, 111 - $3_1 | 0); } $76($0 + 112 | 0, HEAP322[$0 + 196 >> 2] >>> 29 | 0, 0); $5_1 = $0 + 120 | 0; $2_1 = HEAP322[$0 + 192 >> 2]; $3_1 = HEAP322[$0 + 196 >> 2] << 3 | $2_1 >>> 29; $2_1 = $2_1 << 3; $4_1 = $2_1; if ($2_1 >>> 0 < $2_1 >>> 0) { $3_1 = $3_1 + 1 | 0; } $76($5_1, $4_1, $3_1); $3_1 = $0 + 128 | 0; $72($0, $3_1); $0 = 0; while (1) { $2_1 = $0 << 3; $4_1 = $2_1 + $1_1 | 0; $2_1 = $2_1 + $3_1 | 0; $76($4_1, HEAP322[$2_1 >> 2], HEAP322[$2_1 + 4 >> 2]); $0 = $0 + 1 | 0; if (($0 | 0) != 8) { continue; } break; } } function $76($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $3_1 = $1_1 << 8 & 16711680 | $1_1 << 24; $4_1 = $2_1 << 24 | $1_1 >>> 8; $5_1 = $4_1 & 65280; $4_1 = $2_1 << 8 | $1_1 >>> 24; $3_1 = $4_1 & 255 | $5_1 | $3_1; $1_1 = (($2_1 & 255) << 24 | $1_1 >>> 8) & -16777216 | (($2_1 & 16777215) << 8 | $1_1 >>> 24) & 16711680 | ($2_1 >>> 8 & 65280 | $2_1 >>> 24) | $6_1; HEAP82[$0 | 0] = $1_1; HEAP82[$0 + 1 | 0] = $1_1 >>> 8; HEAP82[$0 + 2 | 0] = $1_1 >>> 16; HEAP82[$0 + 3 | 0] = $1_1 >>> 24; $1_1 = $3_1; HEAP82[$0 + 4 | 0] = $1_1; HEAP82[$0 + 5 | 0] = $1_1 >>> 8; HEAP82[$0 + 6 | 0] = $1_1 >>> 16; HEAP82[$0 + 7 | 0] = $1_1 >>> 24; } function $78($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0; if ($2_1 >>> 0 >= 512) { fimport$0($0 | 0, $1_1 | 0, $2_1 | 0) | 0; return $0; } $4_1 = $0 + $2_1 | 0; label$2: { if (!(($0 ^ $1_1) & 3)) { label$4: { if (($2_1 | 0) < 1) { $2_1 = $0; break label$4; } if (!($0 & 3)) { $2_1 = $0; break label$4; } $2_1 = $0; while (1) { HEAP82[$2_1 | 0] = HEAPU82[$1_1 | 0]; $1_1 = $1_1 + 1 | 0; $2_1 = $2_1 + 1 | 0; if ($2_1 >>> 0 >= $4_1 >>> 0) { break label$4; } if ($2_1 & 3) { continue; } break; } } $3_1 = $4_1 & -4; label$8: { if ($3_1 >>> 0 < 64) { break label$8; } $5_1 = $3_1 + -64 | 0; if ($2_1 >>> 0 > $5_1 >>> 0) { break label$8; } while (1) { HEAP322[$2_1 >> 2] = HEAP322[$1_1 >> 2]; HEAP322[$2_1 + 4 >> 2] = HEAP322[$1_1 + 4 >> 2]; HEAP322[$2_1 + 8 >> 2] = HEAP322[$1_1 + 8 >> 2]; HEAP322[$2_1 + 12 >> 2] = HEAP322[$1_1 + 12 >> 2]; HEAP322[$2_1 + 16 >> 2] = HEAP322[$1_1 + 16 >> 2]; HEAP322[$2_1 + 20 >> 2] = HEAP322[$1_1 + 20 >> 2]; HEAP322[$2_1 + 24 >> 2] = HEAP322[$1_1 + 24 >> 2]; HEAP322[$2_1 + 28 >> 2] = HEAP322[$1_1 + 28 >> 2]; HEAP322[$2_1 + 32 >> 2] = HEAP322[$1_1 + 32 >> 2]; HEAP322[$2_1 + 36 >> 2] = HEAP322[$1_1 + 36 >> 2]; HEAP322[$2_1 + 40 >> 2] = HEAP322[$1_1 + 40 >> 2]; HEAP322[$2_1 + 44 >> 2] = HEAP322[$1_1 + 44 >> 2]; HEAP322[$2_1 + 48 >> 2] = HEAP322[$1_1 + 48 >> 2]; HEAP322[$2_1 + 52 >> 2] = HEAP322[$1_1 + 52 >> 2]; HEAP322[$2_1 + 56 >> 2] = HEAP322[$1_1 + 56 >> 2]; HEAP322[$2_1 + 60 >> 2] = HEAP322[$1_1 + 60 >> 2]; $1_1 = $1_1 - -64 | 0; $2_1 = $2_1 - -64 | 0; if ($2_1 >>> 0 <= $5_1 >>> 0) { continue; } break; } } if ($2_1 >>> 0 >= $3_1 >>> 0) { break label$2; } while (1) { HEAP322[$2_1 >> 2] = HEAP322[$1_1 >> 2]; $1_1 = $1_1 + 4 | 0; $2_1 = $2_1 + 4 | 0; if ($2_1 >>> 0 < $3_1 >>> 0) { continue; } break; } break label$2; } if ($4_1 >>> 0 < 4) { $2_1 = $0; break label$2; } $3_1 = $4_1 + -4 | 0; if ($3_1 >>> 0 < $0 >>> 0) { $2_1 = $0; break label$2; } $2_1 = $0; while (1) { HEAP82[$2_1 | 0] = HEAPU82[$1_1 | 0]; HEAP82[$2_1 + 1 | 0] = HEAPU82[$1_1 + 1 | 0]; HEAP82[$2_1 + 2 | 0] = HEAPU82[$1_1 + 2 | 0]; HEAP82[$2_1 + 3 | 0] = HEAPU82[$1_1 + 3 | 0]; $1_1 = $1_1 + 4 | 0; $2_1 = $2_1 + 4 | 0; if ($2_1 >>> 0 <= $3_1 >>> 0) { continue; } break; } } if ($2_1 >>> 0 < $4_1 >>> 0) { while (1) { HEAP82[$2_1 | 0] = HEAPU82[$1_1 | 0]; $1_1 = $1_1 + 1 | 0; $2_1 = $2_1 + 1 | 0; if (($4_1 | 0) != ($2_1 | 0)) { continue; } break; } } return $0; } function $79($0, $1_1) { var $2_1 = 0, $3_1 = 0; label$1: { if (!$1_1) { break label$1; } $2_1 = $0 + $1_1 | 0; HEAP82[$2_1 + -1 | 0] = 0; HEAP82[$0 | 0] = 0; if ($1_1 >>> 0 < 3) { break label$1; } HEAP82[$2_1 + -2 | 0] = 0; HEAP82[$0 + 1 | 0] = 0; HEAP82[$2_1 + -3 | 0] = 0; HEAP82[$0 + 2 | 0] = 0; if ($1_1 >>> 0 < 7) { break label$1; } HEAP82[$2_1 + -4 | 0] = 0; HEAP82[$0 + 3 | 0] = 0; if ($1_1 >>> 0 < 9) { break label$1; } $3_1 = 0 - $0 & 3; $2_1 = $3_1 + $0 | 0; HEAP322[$2_1 >> 2] = 0; $3_1 = $1_1 - $3_1 & -4; $1_1 = $3_1 + $2_1 | 0; HEAP322[$1_1 + -4 >> 2] = 0; if ($3_1 >>> 0 < 9) { break label$1; } HEAP322[$2_1 + 8 >> 2] = 0; HEAP322[$2_1 + 4 >> 2] = 0; HEAP322[$1_1 + -8 >> 2] = 0; HEAP322[$1_1 + -12 >> 2] = 0; if ($3_1 >>> 0 < 25) { break label$1; } HEAP322[$2_1 + 24 >> 2] = 0; HEAP322[$2_1 + 20 >> 2] = 0; HEAP322[$2_1 + 16 >> 2] = 0; HEAP322[$2_1 + 12 >> 2] = 0; HEAP322[$1_1 + -16 >> 2] = 0; HEAP322[$1_1 + -20 >> 2] = 0; HEAP322[$1_1 + -24 >> 2] = 0; HEAP322[$1_1 + -28 >> 2] = 0; $1_1 = $3_1; $3_1 = $2_1 & 4 | 24; $1_1 = $1_1 - $3_1 | 0; if ($1_1 >>> 0 < 32) { break label$1; } $2_1 = $2_1 + $3_1 | 0; while (1) { HEAP322[$2_1 + 24 >> 2] = 0; HEAP322[$2_1 + 28 >> 2] = 0; HEAP322[$2_1 + 16 >> 2] = 0; HEAP322[$2_1 + 20 >> 2] = 0; HEAP322[$2_1 + 8 >> 2] = 0; HEAP322[$2_1 + 12 >> 2] = 0; HEAP322[$2_1 >> 2] = 0; HEAP322[$2_1 + 4 >> 2] = 0; $2_1 = $2_1 + 32 | 0; $1_1 = $1_1 + -32 | 0; if ($1_1 >>> 0 > 31) { continue; } break; } } return $0; } function $80($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0; label$1: { if (($0 | 0) == ($1_1 | 0)) { break label$1; } label$2: { if ($1_1 + $2_1 >>> 0 > $0 >>> 0) { $4_1 = $0 + $2_1 | 0; if ($4_1 >>> 0 > $1_1 >>> 0) { break label$2; } } return $78($0, $1_1, $2_1); } $3_1 = ($0 ^ $1_1) & 3; label$4: { label$5: { if ($0 >>> 0 < $1_1 >>> 0) { if ($3_1) { $3_1 = $0; break label$4; } if (!($0 & 3)) { $3_1 = $0; break label$5; } $3_1 = $0; while (1) { if (!$2_1) { break label$1; } HEAP82[$3_1 | 0] = HEAPU82[$1_1 | 0]; $1_1 = $1_1 + 1 | 0; $2_1 = $2_1 + -1 | 0; $3_1 = $3_1 + 1 | 0; if ($3_1 & 3) { continue; } break; } break label$5; } label$10: { if ($3_1) { break label$10; } if ($4_1 & 3) { while (1) { if (!$2_1) { break label$1; } $2_1 = $2_1 + -1 | 0; $3_1 = $2_1 + $0 | 0; HEAP82[$3_1 | 0] = HEAPU82[$1_1 + $2_1 | 0]; if ($3_1 & 3) { continue; } break; } } if ($2_1 >>> 0 <= 3) { break label$10; } while (1) { $2_1 = $2_1 + -4 | 0; HEAP322[$2_1 + $0 >> 2] = HEAP322[$1_1 + $2_1 >> 2]; if ($2_1 >>> 0 > 3) { continue; } break; } } if (!$2_1) { break label$1; } while (1) { $2_1 = $2_1 + -1 | 0; HEAP82[$2_1 + $0 | 0] = HEAPU82[$1_1 + $2_1 | 0]; if ($2_1) { continue; } break; } break label$1; } if ($2_1 >>> 0 <= 3) { break label$4; } while (1) { HEAP322[$3_1 >> 2] = HEAP322[$1_1 >> 2]; $1_1 = $1_1 + 4 | 0; $3_1 = $3_1 + 4 | 0; $2_1 = $2_1 + -4 | 0; if ($2_1 >>> 0 > 3) { continue; } break; } } if (!$2_1) { break label$1; } while (1) { HEAP82[$3_1 | 0] = HEAPU82[$1_1 | 0]; $3_1 = $3_1 + 1 | 0; $1_1 = $1_1 + 1 | 0; $2_1 = $2_1 + -1 | 0; if ($2_1) { continue; } break; } } return $0; } function $81() { return 33584; } function $82($0) { var $1_1 = 0, $2_1 = 0; $1_1 = HEAP322[8524]; $2_1 = $0 + 3 & -4; $0 = $1_1 + $2_1 | 0; label$1: { if ($0 >>> 0 <= $1_1 >>> 0 ? ($2_1 | 0) >= 1 : 0) { break label$1; } if ($0 >>> 0 > __wasm_memory_size() << 16 >>> 0) { if (!fimport$1($0 | 0)) { break label$1; } } HEAP322[8524] = $0; return $1_1; } HEAP322[8396] = 48; return -1; } function $83($0) { $0 = $0 | 0; var $1_1 = 0, $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, $11_1 = 0; $11_1 = global$0 - 16 | 0; global$0 = $11_1; label$1: { label$2: { label$3: { label$4: { label$5: { label$6: { label$7: { label$8: { label$9: { label$10: { label$11: { if ($0 >>> 0 <= 244) { $6_1 = HEAP322[8397]; $5_1 = $0 >>> 0 < 11 ? 16 : $0 + 11 & -8; $0 = $5_1 >>> 3 | 0; $1_1 = $6_1 >>> $0 | 0; if ($1_1 & 3) { $2_1 = $0 + (($1_1 ^ -1) & 1) | 0; $5_1 = $2_1 << 3; $1_1 = HEAP322[$5_1 + 33636 >> 2]; $0 = $1_1 + 8 | 0; $3_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = $5_1 + 33628 | 0; label$14: { if (($3_1 | 0) == ($5_1 | 0)) { HEAP322[8397] = __wasm_rotl_i32($2_1) & $6_1; break label$14; } HEAP322[$3_1 + 12 >> 2] = $5_1; HEAP322[$5_1 + 8 >> 2] = $3_1; } $2_1 = $2_1 << 3; HEAP322[$1_1 + 4 >> 2] = $2_1 | 3; $1_1 = $1_1 + $2_1 | 0; HEAP322[$1_1 + 4 >> 2] = HEAP322[$1_1 + 4 >> 2] | 1; break label$1; } $7_1 = HEAP322[8399]; if ($5_1 >>> 0 <= $7_1 >>> 0) { break label$11; } if ($1_1) { $2_1 = 2 << $0; $0 = (0 - $2_1 | $2_1) & $1_1 << $0; $0 = (0 - $0 & $0) + -1 | 0; $1_1 = $0 >>> 12 & 16; $2_1 = $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 5 & 8; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 2 & 4; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 2; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 1; $2_1 = ($2_1 | $1_1) + ($0 >>> $1_1 | 0) | 0; $3_1 = $2_1 << 3; $1_1 = HEAP322[$3_1 + 33636 >> 2]; $0 = HEAP322[$1_1 + 8 >> 2]; $3_1 = $3_1 + 33628 | 0; label$17: { if (($0 | 0) == ($3_1 | 0)) { $6_1 = __wasm_rotl_i32($2_1) & $6_1; HEAP322[8397] = $6_1; break label$17; } HEAP322[$0 + 12 >> 2] = $3_1; HEAP322[$3_1 + 8 >> 2] = $0; } $0 = $1_1 + 8 | 0; HEAP322[$1_1 + 4 >> 2] = $5_1 | 3; $4_1 = $1_1 + $5_1 | 0; $2_1 = $2_1 << 3; $3_1 = $2_1 - $5_1 | 0; HEAP322[$4_1 + 4 >> 2] = $3_1 | 1; HEAP322[$1_1 + $2_1 >> 2] = $3_1; if ($7_1) { $5_1 = $7_1 >>> 3 | 0; $1_1 = ($5_1 << 3) + 33628 | 0; $2_1 = HEAP322[8402]; $5_1 = 1 << $5_1; label$20: { if (!($5_1 & $6_1)) { HEAP322[8397] = $5_1 | $6_1; $5_1 = $1_1; break label$20; } $5_1 = HEAP322[$1_1 + 8 >> 2]; } HEAP322[$1_1 + 8 >> 2] = $2_1; HEAP322[$5_1 + 12 >> 2] = $2_1; HEAP322[$2_1 + 12 >> 2] = $1_1; HEAP322[$2_1 + 8 >> 2] = $5_1; } HEAP322[8402] = $4_1; HEAP322[8399] = $3_1; break label$1; } $10_1 = HEAP322[8398]; if (!$10_1) { break label$11; } $0 = ($10_1 & 0 - $10_1) + -1 | 0; $1_1 = $0 >>> 12 & 16; $2_1 = $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 5 & 8; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 2 & 4; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 2; $2_1 = $2_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 1; $1_1 = HEAP322[(($2_1 | $1_1) + ($0 >>> $1_1 | 0) << 2) + 33892 >> 2]; $3_1 = (HEAP322[$1_1 + 4 >> 2] & -8) - $5_1 | 0; $2_1 = $1_1; while (1) { label$23: { $0 = HEAP322[$2_1 + 16 >> 2]; if (!$0) { $0 = HEAP322[$2_1 + 20 >> 2]; if (!$0) { break label$23; } } $4_1 = (HEAP322[$0 + 4 >> 2] & -8) - $5_1 | 0; $2_1 = $4_1 >>> 0 < $3_1 >>> 0; $3_1 = $2_1 ? $4_1 : $3_1; $1_1 = $2_1 ? $0 : $1_1; $2_1 = $0; continue; } break; } $9_1 = HEAP322[$1_1 + 24 >> 2]; $4_1 = HEAP322[$1_1 + 12 >> 2]; if (($4_1 | 0) != ($1_1 | 0)) { $0 = HEAP322[$1_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $4_1; HEAP322[$4_1 + 8 >> 2] = $0; break label$2; } $2_1 = $1_1 + 20 | 0; $0 = HEAP322[$2_1 >> 2]; if (!$0) { $0 = HEAP322[$1_1 + 16 >> 2]; if (!$0) { break label$10; } $2_1 = $1_1 + 16 | 0; } while (1) { $8_1 = $2_1; $4_1 = $0; $2_1 = $0 + 20 | 0; $0 = HEAP322[$2_1 >> 2]; if ($0) { continue; } $2_1 = $4_1 + 16 | 0; $0 = HEAP322[$4_1 + 16 >> 2]; if ($0) { continue; } break; } HEAP322[$8_1 >> 2] = 0; break label$2; } $5_1 = -1; if ($0 >>> 0 > 4294967231) { break label$11; } $0 = $0 + 11 | 0; $5_1 = $0 & -8; $8_1 = HEAP322[8398]; if (!$8_1) { break label$11; } $2_1 = 0 - $5_1 | 0; $0 = $0 >>> 8 | 0; $7_1 = 0; label$29: { if (!$0) { break label$29; } $7_1 = 31; if ($5_1 >>> 0 > 16777215) { break label$29; } $3_1 = $0 + 1048320 >>> 16 & 8; $1_1 = $0 << $3_1; $0 = $1_1 + 520192 >>> 16 & 4; $6_1 = $1_1 << $0; $1_1 = $6_1 + 245760 >>> 16 & 2; $0 = ($6_1 << $1_1 >>> 15 | 0) - ($1_1 | ($0 | $3_1)) | 0; $7_1 = ($0 << 1 | $5_1 >>> $0 + 21 & 1) + 28 | 0; } $3_1 = HEAP322[($7_1 << 2) + 33892 >> 2]; label$30: { label$31: { label$32: { if (!$3_1) { $0 = 0; break label$32; } $1_1 = $5_1 << (($7_1 | 0) == 31 ? 0 : 25 - ($7_1 >>> 1 | 0) | 0); $0 = 0; while (1) { label$35: { $6_1 = (HEAP322[$3_1 + 4 >> 2] & -8) - $5_1 | 0; if ($6_1 >>> 0 >= $2_1 >>> 0) { break label$35; } $4_1 = $3_1; $2_1 = $6_1; if ($2_1) { break label$35; } $2_1 = 0; $0 = $3_1; break label$31; } $6_1 = HEAP322[$3_1 + 20 >> 2]; $3_1 = HEAP322[(($1_1 >>> 29 & 4) + $3_1 | 0) + 16 >> 2]; $0 = $6_1 ? ($6_1 | 0) == ($3_1 | 0) ? $0 : $6_1 : $0; $1_1 = $1_1 << (($3_1 | 0) != 0); if ($3_1) { continue; } break; } } if (!($0 | $4_1)) { $0 = 2 << $7_1; $0 = (0 - $0 | $0) & $8_1; if (!$0) { break label$11; } $0 = ($0 & 0 - $0) + -1 | 0; $1_1 = $0 >>> 12 & 16; $3_1 = $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 5 & 8; $3_1 = $3_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 2 & 4; $3_1 = $3_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 2; $3_1 = $3_1 | $1_1; $0 = $0 >>> $1_1 | 0; $1_1 = $0 >>> 1 & 1; $0 = HEAP322[(($3_1 | $1_1) + ($0 >>> $1_1 | 0) << 2) + 33892 >> 2]; } if (!$0) { break label$30; } } while (1) { $3_1 = (HEAP322[$0 + 4 >> 2] & -8) - $5_1 | 0; $1_1 = $3_1 >>> 0 < $2_1 >>> 0; $2_1 = $1_1 ? $3_1 : $2_1; $4_1 = $1_1 ? $0 : $4_1; $1_1 = HEAP322[$0 + 16 >> 2]; if ($1_1) { $0 = $1_1; } else { $0 = HEAP322[$0 + 20 >> 2]; } if ($0) { continue; } break; } } if (!$4_1 | $2_1 >>> 0 >= HEAP322[8399] - $5_1 >>> 0) { break label$11; } $7_1 = HEAP322[$4_1 + 24 >> 2]; $1_1 = HEAP322[$4_1 + 12 >> 2]; if (($4_1 | 0) != ($1_1 | 0)) { $0 = HEAP322[$4_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $1_1; HEAP322[$1_1 + 8 >> 2] = $0; break label$3; } $3_1 = $4_1 + 20 | 0; $0 = HEAP322[$3_1 >> 2]; if (!$0) { $0 = HEAP322[$4_1 + 16 >> 2]; if (!$0) { break label$9; } $3_1 = $4_1 + 16 | 0; } while (1) { $6_1 = $3_1; $1_1 = $0; $3_1 = $0 + 20 | 0; $0 = HEAP322[$3_1 >> 2]; if ($0) { continue; } $3_1 = $1_1 + 16 | 0; $0 = HEAP322[$1_1 + 16 >> 2]; if ($0) { continue; } break; } HEAP322[$6_1 >> 2] = 0; break label$3; } $1_1 = HEAP322[8399]; if ($1_1 >>> 0 >= $5_1 >>> 0) { $0 = HEAP322[8402]; $2_1 = $1_1 - $5_1 | 0; label$45: { if ($2_1 >>> 0 >= 16) { HEAP322[8399] = $2_1; $3_1 = $0 + $5_1 | 0; HEAP322[8402] = $3_1; HEAP322[$3_1 + 4 >> 2] = $2_1 | 1; HEAP322[$0 + $1_1 >> 2] = $2_1; HEAP322[$0 + 4 >> 2] = $5_1 | 3; break label$45; } HEAP322[8402] = 0; HEAP322[8399] = 0; HEAP322[$0 + 4 >> 2] = $1_1 | 3; $1_1 = $0 + $1_1 | 0; HEAP322[$1_1 + 4 >> 2] = HEAP322[$1_1 + 4 >> 2] | 1; } $0 = $0 + 8 | 0; break label$1; } $1_1 = HEAP322[8400]; if ($1_1 >>> 0 > $5_1 >>> 0) { $1_1 = $1_1 - $5_1 | 0; HEAP322[8400] = $1_1; $0 = HEAP322[8403]; $2_1 = $0 + $5_1 | 0; HEAP322[8403] = $2_1; HEAP322[$2_1 + 4 >> 2] = $1_1 | 1; HEAP322[$0 + 4 >> 2] = $5_1 | 3; $0 = $0 + 8 | 0; break label$1; } $0 = 0; $4_1 = $5_1 + 47 | 0; $3_1 = $4_1; if (HEAP322[8515]) { $2_1 = HEAP322[8517]; } else { HEAP322[8518] = -1; HEAP322[8519] = -1; HEAP322[8516] = 4096; HEAP322[8517] = 4096; HEAP322[8515] = $11_1 + 12 & -16 ^ 1431655768; HEAP322[8520] = 0; HEAP322[8508] = 0; $2_1 = 4096; } $6_1 = $3_1 + $2_1 | 0; $8_1 = 0 - $2_1 | 0; $2_1 = $6_1 & $8_1; if ($2_1 >>> 0 <= $5_1 >>> 0) { break label$1; } $3_1 = HEAP322[8507]; if ($3_1) { $7_1 = HEAP322[8505]; $9_1 = $7_1 + $2_1 | 0; if ($9_1 >>> 0 <= $7_1 >>> 0 | $9_1 >>> 0 > $3_1 >>> 0) { break label$1; } } if (HEAPU82[34032] & 4) { break label$6; } label$51: { label$52: { $3_1 = HEAP322[8403]; if ($3_1) { $0 = 34036; while (1) { $7_1 = HEAP322[$0 >> 2]; if ($7_1 + HEAP322[$0 + 4 >> 2] >>> 0 > $3_1 >>> 0 ? $7_1 >>> 0 <= $3_1 >>> 0 : 0) { break label$52; } $0 = HEAP322[$0 + 8 >> 2]; if ($0) { continue; } break; } } $1_1 = $82(0); if (($1_1 | 0) == -1) { break label$7; } $6_1 = $2_1; $0 = HEAP322[8516]; $3_1 = $0 + -1 | 0; if ($3_1 & $1_1) { $6_1 = ($2_1 - $1_1 | 0) + ($1_1 + $3_1 & 0 - $0) | 0; } if ($6_1 >>> 0 <= $5_1 >>> 0 | $6_1 >>> 0 > 2147483646) { break label$7; } $0 = HEAP322[8507]; if ($0) { $3_1 = HEAP322[8505]; $8_1 = $3_1 + $6_1 | 0; if ($8_1 >>> 0 <= $3_1 >>> 0 | $8_1 >>> 0 > $0 >>> 0) { break label$7; } } $0 = $82($6_1); if (($1_1 | 0) != ($0 | 0)) { break label$51; } break label$5; } $6_1 = $8_1 & $6_1 - $1_1; if ($6_1 >>> 0 > 2147483646) { break label$7; } $1_1 = $82($6_1); if (($1_1 | 0) == (HEAP322[$0 >> 2] + HEAP322[$0 + 4 >> 2] | 0)) { break label$8; } $0 = $1_1; } if (!(($0 | 0) == -1 | $5_1 + 48 >>> 0 <= $6_1 >>> 0)) { $1_1 = HEAP322[8517]; $1_1 = $1_1 + ($4_1 - $6_1 | 0) & 0 - $1_1; if ($1_1 >>> 0 > 2147483646) { $1_1 = $0; break label$5; } if (($82($1_1) | 0) != -1) { $6_1 = $1_1 + $6_1 | 0; $1_1 = $0; break label$5; } $82(0 - $6_1 | 0); break label$7; } $1_1 = $0; if (($0 | 0) != -1) { break label$5; } break label$7; } $4_1 = 0; break label$2; } $1_1 = 0; break label$3; } if (($1_1 | 0) != -1) { break label$5; } } HEAP322[8508] = HEAP322[8508] | 4; } if ($2_1 >>> 0 > 2147483646) { break label$4; } $1_1 = $82($2_1); $0 = $82(0); if ($1_1 >>> 0 >= $0 >>> 0 | ($1_1 | 0) == -1 | ($0 | 0) == -1) { break label$4; } $6_1 = $0 - $1_1 | 0; if ($6_1 >>> 0 <= $5_1 + 40 >>> 0) { break label$4; } } $0 = HEAP322[8505] + $6_1 | 0; HEAP322[8505] = $0; if ($0 >>> 0 > HEAPU322[8506]) { HEAP322[8506] = $0; } label$62: { label$63: { label$64: { $3_1 = HEAP322[8403]; if ($3_1) { $0 = 34036; while (1) { $2_1 = HEAP322[$0 >> 2]; $4_1 = HEAP322[$0 + 4 >> 2]; if (($2_1 + $4_1 | 0) == ($1_1 | 0)) { break label$64; } $0 = HEAP322[$0 + 8 >> 2]; if ($0) { continue; } break; } break label$63; } $0 = HEAP322[8401]; if (!($1_1 >>> 0 >= $0 >>> 0 ? $0 : 0)) { HEAP322[8401] = $1_1; } $0 = 0; HEAP322[8510] = $6_1; HEAP322[8509] = $1_1; HEAP322[8405] = -1; HEAP322[8406] = HEAP322[8515]; HEAP322[8512] = 0; while (1) { $2_1 = $0 << 3; $3_1 = $2_1 + 33628 | 0; HEAP322[$2_1 + 33636 >> 2] = $3_1; HEAP322[$2_1 + 33640 >> 2] = $3_1; $0 = $0 + 1 | 0; if (($0 | 0) != 32) { continue; } break; } $0 = $6_1 + -40 | 0; $2_1 = $1_1 + 8 & 7 ? -8 - $1_1 & 7 : 0; $3_1 = $0 - $2_1 | 0; HEAP322[8400] = $3_1; $2_1 = $1_1 + $2_1 | 0; HEAP322[8403] = $2_1; HEAP322[$2_1 + 4 >> 2] = $3_1 | 1; HEAP322[($0 + $1_1 | 0) + 4 >> 2] = 40; HEAP322[8404] = HEAP322[8519]; break label$62; } if (HEAPU82[$0 + 12 | 0] & 8 | $1_1 >>> 0 <= $3_1 >>> 0 | $2_1 >>> 0 > $3_1 >>> 0) { break label$63; } HEAP322[$0 + 4 >> 2] = $4_1 + $6_1; $0 = $3_1 + 8 & 7 ? -8 - $3_1 & 7 : 0; $1_1 = $0 + $3_1 | 0; HEAP322[8403] = $1_1; $2_1 = HEAP322[8400] + $6_1 | 0; $0 = $2_1 - $0 | 0; HEAP322[8400] = $0; HEAP322[$1_1 + 4 >> 2] = $0 | 1; HEAP322[($2_1 + $3_1 | 0) + 4 >> 2] = 40; HEAP322[8404] = HEAP322[8519]; break label$62; } $0 = HEAP322[8401]; if ($1_1 >>> 0 < $0 >>> 0) { HEAP322[8401] = $1_1; $0 = 0; } $2_1 = $1_1 + $6_1 | 0; $0 = 34036; label$70: { label$71: { label$72: { label$73: { label$74: { label$75: { while (1) { if (($2_1 | 0) != HEAP322[$0 >> 2]) { $0 = HEAP322[$0 + 8 >> 2]; if ($0) { continue; } break label$75; } break; } if (!(HEAPU82[$0 + 12 | 0] & 8)) { break label$74; } } $0 = 34036; while (1) { $2_1 = HEAP322[$0 >> 2]; if ($2_1 >>> 0 <= $3_1 >>> 0) { $4_1 = $2_1 + HEAP322[$0 + 4 >> 2] | 0; if ($4_1 >>> 0 > $3_1 >>> 0) { break label$73; } } $0 = HEAP322[$0 + 8 >> 2]; continue; } } HEAP322[$0 >> 2] = $1_1; HEAP322[$0 + 4 >> 2] = HEAP322[$0 + 4 >> 2] + $6_1; $7_1 = ($1_1 + 8 & 7 ? -8 - $1_1 & 7 : 0) + $1_1 | 0; HEAP322[$7_1 + 4 >> 2] = $5_1 | 3; $1_1 = $2_1 + ($2_1 + 8 & 7 ? -8 - $2_1 & 7 : 0) | 0; $0 = ($1_1 - $7_1 | 0) - $5_1 | 0; $4_1 = $5_1 + $7_1 | 0; if (($1_1 | 0) == ($3_1 | 0)) { HEAP322[8403] = $4_1; $0 = HEAP322[8400] + $0 | 0; HEAP322[8400] = $0; HEAP322[$4_1 + 4 >> 2] = $0 | 1; break label$71; } if (HEAP322[8402] == ($1_1 | 0)) { HEAP322[8402] = $4_1; $0 = HEAP322[8399] + $0 | 0; HEAP322[8399] = $0; HEAP322[$4_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $4_1 >> 2] = $0; break label$71; } $2_1 = HEAP322[$1_1 + 4 >> 2]; if (($2_1 & 3) == 1) { $9_1 = $2_1 & -8; label$83: { if ($2_1 >>> 0 <= 255) { $3_1 = HEAP322[$1_1 + 8 >> 2]; $5_1 = $2_1 >>> 3 | 0; $2_1 = HEAP322[$1_1 + 12 >> 2]; if (($2_1 | 0) == ($3_1 | 0)) { HEAP322[8397] = HEAP322[8397] & __wasm_rotl_i32($5_1); break label$83; } HEAP322[$3_1 + 12 >> 2] = $2_1; HEAP322[$2_1 + 8 >> 2] = $3_1; break label$83; } $8_1 = HEAP322[$1_1 + 24 >> 2]; $6_1 = HEAP322[$1_1 + 12 >> 2]; label$86: { if (($6_1 | 0) != ($1_1 | 0)) { $2_1 = HEAP322[$1_1 + 8 >> 2]; HEAP322[$2_1 + 12 >> 2] = $6_1; HEAP322[$6_1 + 8 >> 2] = $2_1; break label$86; } label$89: { $3_1 = $1_1 + 20 | 0; $5_1 = HEAP322[$3_1 >> 2]; if ($5_1) { break label$89; } $3_1 = $1_1 + 16 | 0; $5_1 = HEAP322[$3_1 >> 2]; if ($5_1) { break label$89; } $6_1 = 0; break label$86; } while (1) { $2_1 = $3_1; $6_1 = $5_1; $3_1 = $5_1 + 20 | 0; $5_1 = HEAP322[$3_1 >> 2]; if ($5_1) { continue; } $3_1 = $6_1 + 16 | 0; $5_1 = HEAP322[$6_1 + 16 >> 2]; if ($5_1) { continue; } break; } HEAP322[$2_1 >> 2] = 0; } if (!$8_1) { break label$83; } $2_1 = HEAP322[$1_1 + 28 >> 2]; $3_1 = ($2_1 << 2) + 33892 | 0; label$91: { if (HEAP322[$3_1 >> 2] == ($1_1 | 0)) { HEAP322[$3_1 >> 2] = $6_1; if ($6_1) { break label$91; } HEAP322[8398] = HEAP322[8398] & __wasm_rotl_i32($2_1); break label$83; } HEAP322[$8_1 + (HEAP322[$8_1 + 16 >> 2] == ($1_1 | 0) ? 16 : 20) >> 2] = $6_1; if (!$6_1) { break label$83; } } HEAP322[$6_1 + 24 >> 2] = $8_1; $2_1 = HEAP322[$1_1 + 16 >> 2]; if ($2_1) { HEAP322[$6_1 + 16 >> 2] = $2_1; HEAP322[$2_1 + 24 >> 2] = $6_1; } $2_1 = HEAP322[$1_1 + 20 >> 2]; if (!$2_1) { break label$83; } HEAP322[$6_1 + 20 >> 2] = $2_1; HEAP322[$2_1 + 24 >> 2] = $6_1; } $1_1 = $1_1 + $9_1 | 0; $0 = $0 + $9_1 | 0; } HEAP322[$1_1 + 4 >> 2] = HEAP322[$1_1 + 4 >> 2] & -2; HEAP322[$4_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $4_1 >> 2] = $0; if ($0 >>> 0 <= 255) { $1_1 = $0 >>> 3 | 0; $0 = ($1_1 << 3) + 33628 | 0; $2_1 = HEAP322[8397]; $1_1 = 1 << $1_1; label$95: { if (!($2_1 & $1_1)) { HEAP322[8397] = $1_1 | $2_1; $1_1 = $0; break label$95; } $1_1 = HEAP322[$0 + 8 >> 2]; } HEAP322[$0 + 8 >> 2] = $4_1; HEAP322[$1_1 + 12 >> 2] = $4_1; HEAP322[$4_1 + 12 >> 2] = $0; HEAP322[$4_1 + 8 >> 2] = $1_1; break label$71; } $6_1 = $4_1; $1_1 = $0 >>> 8 | 0; $2_1 = 0; label$97: { if (!$1_1) { break label$97; } $2_1 = 31; if ($0 >>> 0 > 16777215) { break label$97; } $3_1 = $1_1 + 1048320 >>> 16 & 8; $2_1 = $1_1 << $3_1; $1_1 = $2_1 + 520192 >>> 16 & 4; $5_1 = $2_1 << $1_1; $2_1 = $5_1 + 245760 >>> 16 & 2; $1_1 = ($5_1 << $2_1 >>> 15 | 0) - ($2_1 | ($1_1 | $3_1)) | 0; $2_1 = ($1_1 << 1 | $0 >>> $1_1 + 21 & 1) + 28 | 0; } $1_1 = $2_1; HEAP322[$6_1 + 28 >> 2] = $1_1; HEAP322[$4_1 + 16 >> 2] = 0; HEAP322[$4_1 + 20 >> 2] = 0; $2_1 = ($1_1 << 2) + 33892 | 0; $3_1 = HEAP322[8398]; $5_1 = 1 << $1_1; label$98: { if (!($3_1 & $5_1)) { HEAP322[8398] = $3_1 | $5_1; HEAP322[$2_1 >> 2] = $4_1; break label$98; } $3_1 = $0 << (($1_1 | 0) == 31 ? 0 : 25 - ($1_1 >>> 1 | 0) | 0); $1_1 = HEAP322[$2_1 >> 2]; while (1) { $2_1 = $1_1; if ((HEAP322[$1_1 + 4 >> 2] & -8) == ($0 | 0)) { break label$72; } $1_1 = $3_1 >>> 29 | 0; $3_1 = $3_1 << 1; $5_1 = ($2_1 + ($1_1 & 4) | 0) + 16 | 0; $1_1 = HEAP322[$5_1 >> 2]; if ($1_1) { continue; } break; } HEAP322[$5_1 >> 2] = $4_1; } HEAP322[$4_1 + 24 >> 2] = $2_1; HEAP322[$4_1 + 12 >> 2] = $4_1; HEAP322[$4_1 + 8 >> 2] = $4_1; break label$71; } $0 = $6_1 + -40 | 0; $2_1 = $1_1 + 8 & 7 ? -8 - $1_1 & 7 : 0; $8_1 = $0 - $2_1 | 0; HEAP322[8400] = $8_1; $2_1 = $1_1 + $2_1 | 0; HEAP322[8403] = $2_1; HEAP322[$2_1 + 4 >> 2] = $8_1 | 1; HEAP322[($0 + $1_1 | 0) + 4 >> 2] = 40; HEAP322[8404] = HEAP322[8519]; $0 = ($4_1 + ($4_1 + -39 & 7 ? 39 - $4_1 & 7 : 0) | 0) + -47 | 0; $2_1 = $0 >>> 0 < $3_1 + 16 >>> 0 ? $3_1 : $0; HEAP322[$2_1 + 4 >> 2] = 27; $0 = HEAP322[8512]; HEAP322[$2_1 + 16 >> 2] = HEAP322[8511]; HEAP322[$2_1 + 20 >> 2] = $0; $0 = HEAP322[8510]; HEAP322[$2_1 + 8 >> 2] = HEAP322[8509]; HEAP322[$2_1 + 12 >> 2] = $0; HEAP322[8511] = $2_1 + 8; HEAP322[8510] = $6_1; HEAP322[8509] = $1_1; HEAP322[8512] = 0; $0 = $2_1 + 24 | 0; while (1) { HEAP322[$0 + 4 >> 2] = 7; $1_1 = $0 + 8 | 0; $0 = $0 + 4 | 0; if ($4_1 >>> 0 > $1_1 >>> 0) { continue; } break; } if (($2_1 | 0) == ($3_1 | 0)) { break label$62; } HEAP322[$2_1 + 4 >> 2] = HEAP322[$2_1 + 4 >> 2] & -2; $6_1 = $2_1 - $3_1 | 0; HEAP322[$3_1 + 4 >> 2] = $6_1 | 1; HEAP322[$2_1 >> 2] = $6_1; if ($6_1 >>> 0 <= 255) { $1_1 = $6_1 >>> 3 | 0; $0 = ($1_1 << 3) + 33628 | 0; $2_1 = HEAP322[8397]; $1_1 = 1 << $1_1; label$103: { if (!($2_1 & $1_1)) { HEAP322[8397] = $1_1 | $2_1; $1_1 = $0; break label$103; } $1_1 = HEAP322[$0 + 8 >> 2]; } HEAP322[$0 + 8 >> 2] = $3_1; HEAP322[$1_1 + 12 >> 2] = $3_1; HEAP322[$3_1 + 12 >> 2] = $0; HEAP322[$3_1 + 8 >> 2] = $1_1; break label$62; } HEAP322[$3_1 + 16 >> 2] = 0; HEAP322[$3_1 + 20 >> 2] = 0; $7_1 = $3_1; $0 = $6_1 >>> 8 | 0; $1_1 = 0; label$105: { if (!$0) { break label$105; } $1_1 = 31; if ($6_1 >>> 0 > 16777215) { break label$105; } $2_1 = $0 + 1048320 >>> 16 & 8; $1_1 = $0 << $2_1; $0 = $1_1 + 520192 >>> 16 & 4; $4_1 = $1_1 << $0; $1_1 = $4_1 + 245760 >>> 16 & 2; $0 = ($4_1 << $1_1 >>> 15 | 0) - ($1_1 | ($0 | $2_1)) | 0; $1_1 = ($0 << 1 | $6_1 >>> $0 + 21 & 1) + 28 | 0; } $0 = $1_1; HEAP322[$7_1 + 28 >> 2] = $0; $1_1 = ($0 << 2) + 33892 | 0; $2_1 = HEAP322[8398]; $4_1 = 1 << $0; label$106: { if (!($2_1 & $4_1)) { HEAP322[8398] = $2_1 | $4_1; HEAP322[$1_1 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = $1_1; break label$106; } $0 = $6_1 << (($0 | 0) == 31 ? 0 : 25 - ($0 >>> 1 | 0) | 0); $1_1 = HEAP322[$1_1 >> 2]; while (1) { $2_1 = $1_1; if (($6_1 | 0) == (HEAP322[$1_1 + 4 >> 2] & -8)) { break label$70; } $1_1 = $0 >>> 29 | 0; $0 = $0 << 1; $4_1 = ($2_1 + ($1_1 & 4) | 0) + 16 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { continue; } break; } HEAP322[$4_1 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = $2_1; } HEAP322[$3_1 + 12 >> 2] = $3_1; HEAP322[$3_1 + 8 >> 2] = $3_1; break label$62; } $0 = HEAP322[$2_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $4_1; HEAP322[$2_1 + 8 >> 2] = $4_1; HEAP322[$4_1 + 24 >> 2] = 0; HEAP322[$4_1 + 12 >> 2] = $2_1; HEAP322[$4_1 + 8 >> 2] = $0; } $0 = $7_1 + 8 | 0; break label$1; } $0 = HEAP322[$2_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $3_1; HEAP322[$2_1 + 8 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = 0; HEAP322[$3_1 + 12 >> 2] = $2_1; HEAP322[$3_1 + 8 >> 2] = $0; } $0 = HEAP322[8400]; if ($0 >>> 0 <= $5_1 >>> 0) { break label$4; } $1_1 = $0 - $5_1 | 0; HEAP322[8400] = $1_1; $0 = HEAP322[8403]; $2_1 = $0 + $5_1 | 0; HEAP322[8403] = $2_1; HEAP322[$2_1 + 4 >> 2] = $1_1 | 1; HEAP322[$0 + 4 >> 2] = $5_1 | 3; $0 = $0 + 8 | 0; break label$1; } HEAP322[8396] = 48; $0 = 0; break label$1; } label$109: { if (!$7_1) { break label$109; } $0 = HEAP322[$4_1 + 28 >> 2]; $3_1 = ($0 << 2) + 33892 | 0; label$110: { if (HEAP322[$3_1 >> 2] == ($4_1 | 0)) { HEAP322[$3_1 >> 2] = $1_1; if ($1_1) { break label$110; } $8_1 = __wasm_rotl_i32($0) & $8_1; HEAP322[8398] = $8_1; break label$109; } HEAP322[$7_1 + (HEAP322[$7_1 + 16 >> 2] == ($4_1 | 0) ? 16 : 20) >> 2] = $1_1; if (!$1_1) { break label$109; } } HEAP322[$1_1 + 24 >> 2] = $7_1; $0 = HEAP322[$4_1 + 16 >> 2]; if ($0) { HEAP322[$1_1 + 16 >> 2] = $0; HEAP322[$0 + 24 >> 2] = $1_1; } $0 = HEAP322[$4_1 + 20 >> 2]; if (!$0) { break label$109; } HEAP322[$1_1 + 20 >> 2] = $0; HEAP322[$0 + 24 >> 2] = $1_1; } label$113: { if ($2_1 >>> 0 <= 15) { $0 = $2_1 + $5_1 | 0; HEAP322[$4_1 + 4 >> 2] = $0 | 3; $0 = $0 + $4_1 | 0; HEAP322[$0 + 4 >> 2] = HEAP322[$0 + 4 >> 2] | 1; break label$113; } HEAP322[$4_1 + 4 >> 2] = $5_1 | 3; $1_1 = $4_1 + $5_1 | 0; HEAP322[$1_1 + 4 >> 2] = $2_1 | 1; HEAP322[$1_1 + $2_1 >> 2] = $2_1; if ($2_1 >>> 0 <= 255) { $2_1 = $2_1 >>> 3 | 0; $0 = ($2_1 << 3) + 33628 | 0; $3_1 = HEAP322[8397]; $2_1 = 1 << $2_1; label$116: { if (!($3_1 & $2_1)) { HEAP322[8397] = $2_1 | $3_1; $2_1 = $0; break label$116; } $2_1 = HEAP322[$0 + 8 >> 2]; } HEAP322[$0 + 8 >> 2] = $1_1; HEAP322[$2_1 + 12 >> 2] = $1_1; HEAP322[$1_1 + 12 >> 2] = $0; HEAP322[$1_1 + 8 >> 2] = $2_1; break label$113; } $7_1 = $1_1; $0 = $2_1 >>> 8 | 0; $3_1 = 0; label$118: { if (!$0) { break label$118; } $3_1 = 31; if ($2_1 >>> 0 > 16777215) { break label$118; } $5_1 = $0 + 1048320 >>> 16 & 8; $3_1 = $0 << $5_1; $0 = $3_1 + 520192 >>> 16 & 4; $6_1 = $3_1 << $0; $3_1 = $6_1 + 245760 >>> 16 & 2; $0 = ($6_1 << $3_1 >>> 15 | 0) - ($3_1 | ($0 | $5_1)) | 0; $3_1 = ($0 << 1 | $2_1 >>> $0 + 21 & 1) + 28 | 0; } $0 = $3_1; HEAP322[$7_1 + 28 >> 2] = $0; HEAP322[$1_1 + 16 >> 2] = 0; HEAP322[$1_1 + 20 >> 2] = 0; $3_1 = ($0 << 2) + 33892 | 0; label$119: { $5_1 = 1 << $0; label$120: { if (!($5_1 & $8_1)) { HEAP322[8398] = $5_1 | $8_1; HEAP322[$3_1 >> 2] = $1_1; break label$120; } $0 = $2_1 << (($0 | 0) == 31 ? 0 : 25 - ($0 >>> 1 | 0) | 0); $5_1 = HEAP322[$3_1 >> 2]; while (1) { $3_1 = $5_1; if ((HEAP322[$3_1 + 4 >> 2] & -8) == ($2_1 | 0)) { break label$119; } $5_1 = $0 >>> 29 | 0; $0 = $0 << 1; $6_1 = ($3_1 + ($5_1 & 4) | 0) + 16 | 0; $5_1 = HEAP322[$6_1 >> 2]; if ($5_1) { continue; } break; } HEAP322[$6_1 >> 2] = $1_1; } HEAP322[$1_1 + 24 >> 2] = $3_1; HEAP322[$1_1 + 12 >> 2] = $1_1; HEAP322[$1_1 + 8 >> 2] = $1_1; break label$113; } $0 = HEAP322[$3_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $1_1; HEAP322[$3_1 + 8 >> 2] = $1_1; HEAP322[$1_1 + 24 >> 2] = 0; HEAP322[$1_1 + 12 >> 2] = $3_1; HEAP322[$1_1 + 8 >> 2] = $0; } $0 = $4_1 + 8 | 0; break label$1; } label$123: { if (!$9_1) { break label$123; } $0 = HEAP322[$1_1 + 28 >> 2]; $2_1 = ($0 << 2) + 33892 | 0; label$124: { if (HEAP322[$2_1 >> 2] == ($1_1 | 0)) { HEAP322[$2_1 >> 2] = $4_1; if ($4_1) { break label$124; } HEAP322[8398] = __wasm_rotl_i32($0) & $10_1; break label$123; } HEAP322[(HEAP322[$9_1 + 16 >> 2] == ($1_1 | 0) ? 16 : 20) + $9_1 >> 2] = $4_1; if (!$4_1) { break label$123; } } HEAP322[$4_1 + 24 >> 2] = $9_1; $0 = HEAP322[$1_1 + 16 >> 2]; if ($0) { HEAP322[$4_1 + 16 >> 2] = $0; HEAP322[$0 + 24 >> 2] = $4_1; } $0 = HEAP322[$1_1 + 20 >> 2]; if (!$0) { break label$123; } HEAP322[$4_1 + 20 >> 2] = $0; HEAP322[$0 + 24 >> 2] = $4_1; } label$127: { if ($3_1 >>> 0 <= 15) { $0 = $3_1 + $5_1 | 0; HEAP322[$1_1 + 4 >> 2] = $0 | 3; $0 = $0 + $1_1 | 0; HEAP322[$0 + 4 >> 2] = HEAP322[$0 + 4 >> 2] | 1; break label$127; } HEAP322[$1_1 + 4 >> 2] = $5_1 | 3; $5_1 = $1_1 + $5_1 | 0; HEAP322[$5_1 + 4 >> 2] = $3_1 | 1; HEAP322[$3_1 + $5_1 >> 2] = $3_1; if ($7_1) { $4_1 = $7_1 >>> 3 | 0; $0 = ($4_1 << 3) + 33628 | 0; $2_1 = HEAP322[8402]; $4_1 = 1 << $4_1; label$130: { if (!($4_1 & $6_1)) { HEAP322[8397] = $4_1 | $6_1; $6_1 = $0; break label$130; } $6_1 = HEAP322[$0 + 8 >> 2]; } HEAP322[$0 + 8 >> 2] = $2_1; HEAP322[$6_1 + 12 >> 2] = $2_1; HEAP322[$2_1 + 12 >> 2] = $0; HEAP322[$2_1 + 8 >> 2] = $6_1; } HEAP322[8402] = $5_1; HEAP322[8399] = $3_1; } $0 = $1_1 + 8 | 0; } global$0 = $11_1 + 16 | 0; return $0 | 0; } function $84($0) { $0 = $0 | 0; var $1_1 = 0, $2_1 = 0, $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0; label$1: { if (!$0) { break label$1; } $3_1 = $0 + -8 | 0; $2_1 = HEAP322[$0 + -4 >> 2]; $0 = $2_1 & -8; $5_1 = $3_1 + $0 | 0; label$2: { if ($2_1 & 1) { break label$2; } if (!($2_1 & 3)) { break label$1; } $2_1 = HEAP322[$3_1 >> 2]; $3_1 = $3_1 - $2_1 | 0; if ($3_1 >>> 0 < HEAPU322[8401]) { break label$1; } $0 = $0 + $2_1 | 0; if (HEAP322[8402] != ($3_1 | 0)) { if ($2_1 >>> 0 <= 255) { $4_1 = HEAP322[$3_1 + 8 >> 2]; $2_1 = $2_1 >>> 3 | 0; $1_1 = HEAP322[$3_1 + 12 >> 2]; if (($1_1 | 0) == ($4_1 | 0)) { HEAP322[8397] = HEAP322[8397] & __wasm_rotl_i32($2_1); break label$2; } HEAP322[$4_1 + 12 >> 2] = $1_1; HEAP322[$1_1 + 8 >> 2] = $4_1; break label$2; } $7_1 = HEAP322[$3_1 + 24 >> 2]; $2_1 = HEAP322[$3_1 + 12 >> 2]; label$6: { if (($2_1 | 0) != ($3_1 | 0)) { $1_1 = HEAP322[$3_1 + 8 >> 2]; HEAP322[$1_1 + 12 >> 2] = $2_1; HEAP322[$2_1 + 8 >> 2] = $1_1; break label$6; } label$9: { $4_1 = $3_1 + 20 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { break label$9; } $4_1 = $3_1 + 16 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { break label$9; } $2_1 = 0; break label$6; } while (1) { $6_1 = $4_1; $2_1 = $1_1; $4_1 = $2_1 + 20 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { continue; } $4_1 = $2_1 + 16 | 0; $1_1 = HEAP322[$2_1 + 16 >> 2]; if ($1_1) { continue; } break; } HEAP322[$6_1 >> 2] = 0; } if (!$7_1) { break label$2; } $4_1 = HEAP322[$3_1 + 28 >> 2]; $1_1 = ($4_1 << 2) + 33892 | 0; label$11: { if (HEAP322[$1_1 >> 2] == ($3_1 | 0)) { HEAP322[$1_1 >> 2] = $2_1; if ($2_1) { break label$11; } HEAP322[8398] = HEAP322[8398] & __wasm_rotl_i32($4_1); break label$2; } HEAP322[$7_1 + (HEAP322[$7_1 + 16 >> 2] == ($3_1 | 0) ? 16 : 20) >> 2] = $2_1; if (!$2_1) { break label$2; } } HEAP322[$2_1 + 24 >> 2] = $7_1; $1_1 = HEAP322[$3_1 + 16 >> 2]; if ($1_1) { HEAP322[$2_1 + 16 >> 2] = $1_1; HEAP322[$1_1 + 24 >> 2] = $2_1; } $1_1 = HEAP322[$3_1 + 20 >> 2]; if (!$1_1) { break label$2; } HEAP322[$2_1 + 20 >> 2] = $1_1; HEAP322[$1_1 + 24 >> 2] = $2_1; break label$2; } $2_1 = HEAP322[$5_1 + 4 >> 2]; if (($2_1 & 3) != 3) { break label$2; } HEAP322[8399] = $0; HEAP322[$5_1 + 4 >> 2] = $2_1 & -2; HEAP322[$3_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $3_1 >> 2] = $0; return; } if ($5_1 >>> 0 <= $3_1 >>> 0) { break label$1; } $2_1 = HEAP322[$5_1 + 4 >> 2]; if (!($2_1 & 1)) { break label$1; } label$14: { if (!($2_1 & 2)) { if (($5_1 | 0) == HEAP322[8403]) { HEAP322[8403] = $3_1; $0 = HEAP322[8400] + $0 | 0; HEAP322[8400] = $0; HEAP322[$3_1 + 4 >> 2] = $0 | 1; if (HEAP322[8402] != ($3_1 | 0)) { break label$1; } HEAP322[8399] = 0; HEAP322[8402] = 0; return; } if (($5_1 | 0) == HEAP322[8402]) { HEAP322[8402] = $3_1; $0 = HEAP322[8399] + $0 | 0; HEAP322[8399] = $0; HEAP322[$3_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $3_1 >> 2] = $0; return; } $0 = ($2_1 & -8) + $0 | 0; label$18: { if ($2_1 >>> 0 <= 255) { $1_1 = HEAP322[$5_1 + 8 >> 2]; $2_1 = $2_1 >>> 3 | 0; $4_1 = HEAP322[$5_1 + 12 >> 2]; if (($1_1 | 0) == ($4_1 | 0)) { HEAP322[8397] = HEAP322[8397] & __wasm_rotl_i32($2_1); break label$18; } HEAP322[$1_1 + 12 >> 2] = $4_1; HEAP322[$4_1 + 8 >> 2] = $1_1; break label$18; } $7_1 = HEAP322[$5_1 + 24 >> 2]; $2_1 = HEAP322[$5_1 + 12 >> 2]; label$23: { if (($5_1 | 0) != ($2_1 | 0)) { $1_1 = HEAP322[$5_1 + 8 >> 2]; HEAP322[$1_1 + 12 >> 2] = $2_1; HEAP322[$2_1 + 8 >> 2] = $1_1; break label$23; } label$26: { $4_1 = $5_1 + 20 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { break label$26; } $4_1 = $5_1 + 16 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { break label$26; } $2_1 = 0; break label$23; } while (1) { $6_1 = $4_1; $2_1 = $1_1; $4_1 = $2_1 + 20 | 0; $1_1 = HEAP322[$4_1 >> 2]; if ($1_1) { continue; } $4_1 = $2_1 + 16 | 0; $1_1 = HEAP322[$2_1 + 16 >> 2]; if ($1_1) { continue; } break; } HEAP322[$6_1 >> 2] = 0; } if (!$7_1) { break label$18; } $4_1 = HEAP322[$5_1 + 28 >> 2]; $1_1 = ($4_1 << 2) + 33892 | 0; label$28: { if (($5_1 | 0) == HEAP322[$1_1 >> 2]) { HEAP322[$1_1 >> 2] = $2_1; if ($2_1) { break label$28; } HEAP322[8398] = HEAP322[8398] & __wasm_rotl_i32($4_1); break label$18; } HEAP322[$7_1 + (($5_1 | 0) == HEAP322[$7_1 + 16 >> 2] ? 16 : 20) >> 2] = $2_1; if (!$2_1) { break label$18; } } HEAP322[$2_1 + 24 >> 2] = $7_1; $1_1 = HEAP322[$5_1 + 16 >> 2]; if ($1_1) { HEAP322[$2_1 + 16 >> 2] = $1_1; HEAP322[$1_1 + 24 >> 2] = $2_1; } $1_1 = HEAP322[$5_1 + 20 >> 2]; if (!$1_1) { break label$18; } HEAP322[$2_1 + 20 >> 2] = $1_1; HEAP322[$1_1 + 24 >> 2] = $2_1; } HEAP322[$3_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $3_1 >> 2] = $0; if (HEAP322[8402] != ($3_1 | 0)) { break label$14; } HEAP322[8399] = $0; return; } HEAP322[$5_1 + 4 >> 2] = $2_1 & -2; HEAP322[$3_1 + 4 >> 2] = $0 | 1; HEAP322[$0 + $3_1 >> 2] = $0; } if ($0 >>> 0 <= 255) { $0 = $0 >>> 3 | 0; $2_1 = ($0 << 3) + 33628 | 0; $1_1 = HEAP322[8397]; $0 = 1 << $0; label$32: { if (!($1_1 & $0)) { HEAP322[8397] = $0 | $1_1; $0 = $2_1; break label$32; } $0 = HEAP322[$2_1 + 8 >> 2]; } HEAP322[$2_1 + 8 >> 2] = $3_1; HEAP322[$0 + 12 >> 2] = $3_1; HEAP322[$3_1 + 12 >> 2] = $2_1; HEAP322[$3_1 + 8 >> 2] = $0; return; } HEAP322[$3_1 + 16 >> 2] = 0; HEAP322[$3_1 + 20 >> 2] = 0; $5_1 = $3_1; $4_1 = $0 >>> 8 | 0; $1_1 = 0; label$34: { if (!$4_1) { break label$34; } $1_1 = 31; if ($0 >>> 0 > 16777215) { break label$34; } $2_1 = $4_1; $4_1 = $4_1 + 1048320 >>> 16 & 8; $1_1 = $2_1 << $4_1; $7_1 = $1_1 + 520192 >>> 16 & 4; $1_1 = $1_1 << $7_1; $6_1 = $1_1 + 245760 >>> 16 & 2; $1_1 = ($1_1 << $6_1 >>> 15 | 0) - ($6_1 | ($4_1 | $7_1)) | 0; $1_1 = ($1_1 << 1 | $0 >>> $1_1 + 21 & 1) + 28 | 0; } HEAP322[$5_1 + 28 >> 2] = $1_1; $6_1 = ($1_1 << 2) + 33892 | 0; label$35: { label$36: { $4_1 = HEAP322[8398]; $2_1 = 1 << $1_1; label$37: { if (!($4_1 & $2_1)) { HEAP322[8398] = $2_1 | $4_1; HEAP322[$6_1 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = $6_1; break label$37; } $4_1 = $0 << (($1_1 | 0) == 31 ? 0 : 25 - ($1_1 >>> 1 | 0) | 0); $2_1 = HEAP322[$6_1 >> 2]; while (1) { $1_1 = $2_1; if ((HEAP322[$2_1 + 4 >> 2] & -8) == ($0 | 0)) { break label$36; } $2_1 = $4_1 >>> 29 | 0; $4_1 = $4_1 << 1; $6_1 = ($1_1 + ($2_1 & 4) | 0) + 16 | 0; $2_1 = HEAP322[$6_1 >> 2]; if ($2_1) { continue; } break; } HEAP322[$6_1 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = $1_1; } HEAP322[$3_1 + 12 >> 2] = $3_1; HEAP322[$3_1 + 8 >> 2] = $3_1; break label$35; } $0 = HEAP322[$1_1 + 8 >> 2]; HEAP322[$0 + 12 >> 2] = $3_1; HEAP322[$1_1 + 8 >> 2] = $3_1; HEAP322[$3_1 + 24 >> 2] = 0; HEAP322[$3_1 + 12 >> 2] = $1_1; HEAP322[$3_1 + 8 >> 2] = $0; } $0 = HEAP322[8405] + -1 | 0; HEAP322[8405] = $0; if ($0) { break label$1; } $3_1 = 34044; while (1) { $0 = HEAP322[$3_1 >> 2]; $3_1 = $0 + 8 | 0; if ($0) { continue; } break; } HEAP322[8405] = -1; } } function $85() { return global$0 | 0; } function $86($0) { $0 = $0 | 0; $0 = global$0 - $0 & -16; global$0 = $0; return $0 | 0; } function $87($0) { $0 = $0 | 0; global$0 = $0; } function $88($0) { $0 = $0 | 0; return abort2() | 0; } function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0, $1_1, $2_1, $3_1) { var $4_1 = 0, $5_1 = 0, $6_1 = 0, $7_1 = 0, $8_1 = 0, $9_1 = 0; $4_1 = $2_1 >>> 16 | 0; $5_1 = $0 >>> 16 | 0; $9_1 = Math_imul2($4_1, $5_1); $6_1 = $2_1 & 65535; $7_1 = $0 & 65535; $8_1 = Math_imul2($6_1, $7_1); $5_1 = ($8_1 >>> 16 | 0) + Math_imul2($5_1, $6_1) | 0; $4_1 = ($5_1 & 65535) + Math_imul2($4_1, $7_1) | 0; $0 = (Math_imul2($1_1, $2_1) + $9_1 | 0) + Math_imul2($0, $3_1) + ($5_1 >>> 16) + ($4_1 >>> 16) | 0; $1_1 = $8_1 & 65535 | $4_1 << 16; i64toi32_i32$HIGH_BITS = $0; return $1_1; } function __wasm_i64_mul($0, $1_1, $2_1, $3_1) { $0 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0, $1_1, $2_1, $3_1); return $0; } function __wasm_rotl_i32($0) { var $1_1 = 0; $1_1 = $0 & 31; $0 = 0 - $0 & 31; return (-1 >>> $1_1 & -2) << $1_1 | (-1 << $0 & -2) >>> $0; } function __wasm_rotl_i64($0, $1_1, $2_1) { var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; $6_1 = $2_1 & 63; $5_1 = $6_1; $3_1 = $5_1 & 31; if (32 <= $5_1 >>> 0) { $3_1 = -1 >>> $3_1 | 0; } else { $4_1 = -1 >>> $3_1 | 0; $3_1 = (1 << $3_1) - 1 << 32 - $3_1 | -1 >>> $3_1; } $5_1 = $3_1 & $0; $3_1 = $1_1 & $4_1; $4_1 = $6_1 & 31; if (32 <= $6_1 >>> 0) { $3_1 = $5_1 << $4_1; $6_1 = 0; } else { $3_1 = (1 << $4_1) - 1 & $5_1 >>> 32 - $4_1 | $3_1 << $4_1; $6_1 = $5_1 << $4_1; } $5_1 = $3_1; $4_1 = 0 - $2_1 & 63; $3_1 = $4_1; $2_1 = $3_1 & 31; if (32 <= $3_1 >>> 0) { $3_1 = -1 << $2_1; $2_1 = 0; } else { $3_1 = (1 << $2_1) - 1 & -1 >>> 32 - $2_1 | -1 << $2_1; $2_1 = -1 << $2_1; } $0 = $2_1 & $0; $3_1 = $1_1 & $3_1; $1_1 = $4_1 & 31; if (32 <= $4_1 >>> 0) { $2_1 = 0; $0 = $3_1 >>> $1_1 | 0; } else { $2_1 = $3_1 >>> $1_1 | 0; $0 = ((1 << $1_1) - 1 & $3_1) << 32 - $1_1 | $0 >>> $1_1; } $0 = $0 | $6_1; i64toi32_i32$HIGH_BITS = $2_1 | $5_1; return $0; } var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer2.byteLength / 65536 | 0; } return { __wasm_call_ctors: $1, curve25519_sign: $3, curve25519_verify: $4, curve25519_donna: $7, __errno_location: $81, malloc: $83, free: $84, stackSave: $85, stackAlloc: $86, stackRestore: $87, __growWasmMemory: $88 }; } for (var base64ReverseLookup = new Uint8Array( 123 /*'z'+1*/ ), i2 = 25; i2 >= 0; --i2) { base64ReverseLookup[48 + i2] = 52 + i2; base64ReverseLookup[65 + i2] = i2; base64ReverseLookup[97 + i2] = 26 + i2; } base64ReverseLookup[43] = 62; base64ReverseLookup[47] = 63; function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { var b1, b2, i3 = 0, j = offset, bLength = b64.length, end = offset + (bLength * 3 >> 2); if (b64[bLength - 2] == "=") --end; if (b64[bLength - 1] == "=") --end; for (; i3 < bLength; i3 += 4, j += 3) { b1 = base64ReverseLookup[b64.charCodeAt(i3 + 1)]; b2 = base64ReverseLookup[b64.charCodeAt(i3 + 2)]; uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i3)] << 2 | b1 >> 4; if (j + 1 < end) uint8Array[j + 1] = b1 << 4 | b2 >> 2; if (j + 2 < end) uint8Array[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i3 + 3)]; } } var bufferView = new Uint8Array(wasmMemory2.buffer); base64DecodeToExistingUint8Array(bufferView, 1056, "tnhZ/4Vy0wC9bhX/DwpqACnAAQCY6Hn/vDyg/5lxzv8At+L+tA1I/wAAAAAAAAAAsKAO/tPJhv+eGI8Af2k1AGAMvQCn1/v/n0yA/mpl4f8e/AQAkgyu"); base64DecodeToExistingUint8Array(bufferView, 1152, "WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"); base64DecodeToExistingUint8Array(bufferView, 1200, "CMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGw="); base64DecodeToExistingUint8Array(bufferView, 1904, "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"); return asmFunc({ Int8Array, Int16Array, Int32Array, Uint8Array, Uint16Array, Uint32Array, Float32Array, Float64Array, NaN: NaN, Infinity: Infinity, Math }, asmLibraryArg2, wasmMemory2.buffer); })(asmLibraryArg, wasmMemory, wasmTable); return { exports: exports2 }; }, instantiate: ( /** @suppress{checkTypes} */ function(binary, info) { return { then: function(ok) { ok({ instance: new WebAssembly2.Instance(new WebAssembly2.Module(binary)) }); } }; } ), RuntimeError: Error }; wasmBinary = []; if (typeof WebAssembly2 !== "object") { err("no native wasm support detected"); } function setValue(ptr, value, type, noSafe) { type = type || "i8"; if (type.charAt(type.length - 1) === "*") type = "i32"; switch (type) { case "i1": HEAP8[ptr >> 0] = value; break; case "i8": HEAP8[ptr >> 0] = value; break; case "i16": HEAP16[ptr >> 1] = value; break; case "i32": HEAP32[ptr >> 2] = value; break; case "i64": ; tempI64 = [ value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1]; break; case "float": HEAPF32[ptr >> 2] = value; break; case "double": HEAPF64[ptr >> 3] = value; break; default: abort("invalid type for setValue: " + type); } } function getValue(ptr, type, noSafe) { type = type || "i8"; if (type.charAt(type.length - 1) === "*") type = "i32"; switch (type) { case "i1": return HEAP8[ptr >> 0]; case "i8": return HEAP8[ptr >> 0]; case "i16": return HEAP16[ptr >> 1]; case "i32": return HEAP32[ptr >> 2]; case "i64": return HEAP32[ptr >> 2]; case "float": return HEAPF32[ptr >> 2]; case "double": return HEAPF64[ptr >> 3]; default: abort("invalid type for getValue: " + type); } return null; } var wasmMemory; var wasmTable = new WebAssembly2.Table({ initial: 1, maximum: 1 + 0, element: "anyfunc" }); var ABORT = false; var EXITSTATUS = 0; function assert(condition, text) { if (!condition) { abort("Assertion failed: " + text); } } function getCFunc(ident) { var func = Module2["_" + ident]; assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); return func; } function ccall(ident, returnType, argTypes, args, opts) { var toC = { string: function(str) { var ret2 = 0; if (str !== null && str !== void 0 && str !== 0) { var len = (str.length << 2) + 1; ret2 = stackAlloc(len); stringToUTF8(str, ret2, len); } return ret2; }, array: function(arr) { var ret2 = stackAlloc(arr.length); writeArrayToMemory(arr, ret2); return ret2; } }; function convertReturnValue(ret2) { if (returnType === "string") return UTF8ToString(ret2); if (returnType === "boolean") return Boolean(ret2); return ret2; } var func = getCFunc(ident); var cArgs = []; var stack = 0; if (args) { for (var i2 = 0; i2 < args.length; i2++) { var converter = toC[argTypes[i2]]; if (converter) { if (stack === 0) stack = stackSave(); cArgs[i2] = converter(args[i2]); } else { cArgs[i2] = args[i2]; } } } var ret = func.apply(null, cArgs); ret = convertReturnValue(ret); if (stack !== 0) stackRestore(stack); return ret; } function cwrap(ident, returnType, argTypes, opts) { argTypes = argTypes || []; var numericArgs = argTypes.every(function(type) { return type === "number"; }); var numericRet = returnType !== "string"; if (numericRet && numericArgs && !opts) { return getCFunc(ident); } return function() { return ccall(ident, returnType, argTypes, arguments, opts); }; } var ALLOC_NORMAL = 0; var ALLOC_STACK = 1; var ALLOC_DYNAMIC = 2; var ALLOC_NONE = 3; function allocate(slab, types, allocator, ptr) { var zeroinit, size; if (typeof slab === "number") { zeroinit = true; size = slab; } else { zeroinit = false; size = slab.length; } var singleType = typeof types === "string" ? types : null; var ret; if (allocator == ALLOC_NONE) { ret = ptr; } else { ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); } if (zeroinit) { var stop; ptr = ret; assert((ret & 3) == 0); stop = ret + (size & ~3); for (; ptr < stop; ptr += 4) { HEAP32[ptr >> 2] = 0; } stop = ret + size; while (ptr < stop) { HEAP8[ptr++ >> 0] = 0; } return ret; } if (singleType === "i8") { if (slab.subarray || slab.slice) { HEAPU8.set( /** @type {!Uint8Array} */ slab, ret ); } else { HEAPU8.set(new Uint8Array(slab), ret); } return ret; } var i2 = 0, type, typeSize, previousType; while (i2 < size) { var curr = slab[i2]; type = singleType || types[i2]; if (type === 0) { i2++; continue; } if (type == "i64") type = "i32"; setValue(ret + i2, curr, type); if (previousType !== type) { typeSize = getNativeTypeSize(type); previousType = type; } i2 += typeSize; } return ret; } function getMemory(size) { if (!runtimeInitialized) return dynamicAlloc(size); return _malloc(size); } var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0; function UTF8ArrayToString(heap, idx, maxBytesToRead) { var endIdx = idx + maxBytesToRead; var endPtr = idx; while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { return UTF8Decoder.decode(heap.subarray(idx, endPtr)); } else { var str = ""; while (idx < endPtr) { var u0 = heap[idx++]; if (!(u0 & 128)) { str += String.fromCharCode(u0); continue; } var u1 = heap[idx++] & 63; if ((u0 & 224) == 192) { str += String.fromCharCode((u0 & 31) << 6 | u1); continue; } var u2 = heap[idx++] & 63; if ((u0 & 240) == 224) { u0 = (u0 & 15) << 12 | u1 << 6 | u2; } else { u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; } if (u0 < 65536) { str += String.fromCharCode(u0); } else { var ch = u0 - 65536; str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); } } } return str; } function UTF8ToString(ptr, maxBytesToRead) { return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; } function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { if (!(maxBytesToWrite > 0)) return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i2 = 0; i2 < str.length; ++i2) { var u = str.charCodeAt(i2); if (u >= 55296 && u <= 57343) { var u1 = str.charCodeAt(++i2); u = 65536 + ((u & 1023) << 10) | u1 & 1023; } if (u <= 127) { if (outIdx >= endIdx) break; heap[outIdx++] = u; } else if (u <= 2047) { if (outIdx + 1 >= endIdx) break; heap[outIdx++] = 192 | u >> 6; heap[outIdx++] = 128 | u & 63; } else if (u <= 65535) { if (outIdx + 2 >= endIdx) break; heap[outIdx++] = 224 | u >> 12; heap[outIdx++] = 128 | u >> 6 & 63; heap[outIdx++] = 128 | u & 63; } else { if (outIdx + 3 >= endIdx) break; heap[outIdx++] = 240 | u >> 18; heap[outIdx++] = 128 | u >> 12 & 63; heap[outIdx++] = 128 | u >> 6 & 63; heap[outIdx++] = 128 | u & 63; } } heap[outIdx] = 0; return outIdx - startIdx; } function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); } function lengthBytesUTF8(str) { var len = 0; for (var i2 = 0; i2 < str.length; ++i2) { var u = str.charCodeAt(i2); if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i2) & 1023; if (u <= 127) ++len; else if (u <= 2047) len += 2; else if (u <= 65535) len += 3; else len += 4; } return len; } function AsciiToString(ptr) { var str = ""; while (1) { var ch = HEAPU8[ptr++ >> 0]; if (!ch) return str; str += String.fromCharCode(ch); } } function stringToAscii(str, outPtr) { return writeAsciiToMemory(str, outPtr, false); } var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : void 0; function UTF16ToString(ptr, maxBytesToRead) { var endPtr = ptr; var idx = endPtr >> 1; var maxIdx = idx + maxBytesToRead / 2; while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; endPtr = idx << 1; if (endPtr - ptr > 32 && UTF16Decoder) { return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); } else { var i2 = 0; var str = ""; while (1) { var codeUnit = HEAP16[ptr + i2 * 2 >> 1]; if (codeUnit == 0 || i2 == maxBytesToRead / 2) return str; ++i2; str += String.fromCharCode(codeUnit); } } } function stringToUTF16(str, outPtr, maxBytesToWrite) { if (maxBytesToWrite === void 0) { maxBytesToWrite = 2147483647; } if (maxBytesToWrite < 2) return 0; maxBytesToWrite -= 2; var startPtr = outPtr; var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; for (var i2 = 0; i2 < numCharsToWrite; ++i2) { var codeUnit = str.charCodeAt(i2); HEAP16[outPtr >> 1] = codeUnit; outPtr += 2; } HEAP16[outPtr >> 1] = 0; return outPtr - startPtr; } function lengthBytesUTF16(str) { return str.length * 2; } function UTF32ToString(ptr, maxBytesToRead) { var i2 = 0; var str = ""; while (!(i2 >= maxBytesToRead / 4)) { var utf32 = HEAP32[ptr + i2 * 4 >> 2]; if (utf32 == 0) break; ++i2; if (utf32 >= 65536) { var ch = utf32 - 65536; str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); } else { str += String.fromCharCode(utf32); } } return str; } function stringToUTF32(str, outPtr, maxBytesToWrite) { if (maxBytesToWrite === void 0) { maxBytesToWrite = 2147483647; } if (maxBytesToWrite < 4) return 0; var startPtr = outPtr; var endPtr = startPtr + maxBytesToWrite - 4; for (var i2 = 0; i2 < str.length; ++i2) { var codeUnit = str.charCodeAt(i2); if (codeUnit >= 55296 && codeUnit <= 57343) { var trailSurrogate = str.charCodeAt(++i2); codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023; } HEAP32[outPtr >> 2] = codeUnit; outPtr += 4; if (outPtr + 4 > endPtr) break; } HEAP32[outPtr >> 2] = 0; return outPtr - startPtr; } function lengthBytesUTF32(str) { var len = 0; for (var i2 = 0; i2 < str.length; ++i2) { var codeUnit = str.charCodeAt(i2); if (codeUnit >= 55296 && codeUnit <= 57343) ++i2; len += 4; } return len; } function allocateUTF8(str) { var size = lengthBytesUTF8(str) + 1; var ret = _malloc(size); if (ret) stringToUTF8Array(str, HEAP8, ret, size); return ret; } function allocateUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1; var ret = stackAlloc(size); stringToUTF8Array(str, HEAP8, ret, size); return ret; } function writeStringToMemory(string, buffer2, dontAddNull) { warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"); var lastChar, end; if (dontAddNull) { end = buffer2 + lengthBytesUTF8(string); lastChar = HEAP8[end]; } stringToUTF8(string, buffer2, Infinity); if (dontAddNull) HEAP8[end] = lastChar; } function writeArrayToMemory(array, buffer2) { HEAP8.set(array, buffer2); } function writeAsciiToMemory(str, buffer2, dontAddNull) { for (var i2 = 0; i2 < str.length; ++i2) { HEAP8[buffer2++ >> 0] = str.charCodeAt(i2); } if (!dontAddNull) HEAP8[buffer2 >> 0] = 0; } var PAGE_SIZE = 16384; var WASM_PAGE_SIZE = 65536; var ASMJS_PAGE_SIZE = 16777216; function alignUp(x, multiple) { if (x % multiple > 0) { x += multiple - x % multiple; } return x; } var HEAP, buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBufferAndViews(buf) { buffer = buf; Module2["HEAP8"] = HEAP8 = new Int8Array(buf); Module2["HEAP16"] = HEAP16 = new Int16Array(buf); Module2["HEAP32"] = HEAP32 = new Int32Array(buf); Module2["HEAPU8"] = HEAPU8 = new Uint8Array(buf); Module2["HEAPU16"] = HEAPU16 = new Uint16Array(buf); Module2["HEAPU32"] = HEAPU32 = new Uint32Array(buf); Module2["HEAPF32"] = HEAPF32 = new Float32Array(buf); Module2["HEAPF64"] = HEAPF64 = new Float64Array(buf); } var STATIC_BASE = 1024, STACK_BASE = 5277136, STACKTOP = STACK_BASE, STACK_MAX = 34256, DYNAMIC_BASE = 5277136, DYNAMICTOP_PTR = 34096; var TOTAL_STACK = 5242880; var INITIAL_INITIAL_MEMORY = Module2["INITIAL_MEMORY"] || 16777216; if (Module2["wasmMemory"]) { wasmMemory = Module2["wasmMemory"]; } else { wasmMemory = new WebAssembly2.Memory({ initial: INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE, maximum: INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE }); } if (wasmMemory) { buffer = wasmMemory.buffer; } INITIAL_INITIAL_MEMORY = buffer.byteLength; updateGlobalBufferAndViews(buffer); HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; function callRuntimeCallbacks(callbacks) { while (callbacks.length > 0) { var callback = callbacks.shift(); if (typeof callback == "function") { callback(Module2); continue; } var func = callback.func; if (typeof func === "number") { if (callback.arg === void 0) { Module2["dynCall_v"](func); } else { Module2["dynCall_vi"](func, callback.arg); } } else { func(callback.arg === void 0 ? null : callback.arg); } } } var __ATPRERUN__ = []; var __ATINIT__ = []; var __ATMAIN__ = []; var __ATEXIT__ = []; var __ATPOSTRUN__ = []; var runtimeInitialized = false; var runtimeExited = false; function preRun() { if (Module2["preRun"]) { if (typeof Module2["preRun"] == "function") Module2["preRun"] = [Module2["preRun"]]; while (Module2["preRun"].length) { addOnPreRun(Module2["preRun"].shift()); } } callRuntimeCallbacks(__ATPRERUN__); } function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks(__ATINIT__); } function preMain() { callRuntimeCallbacks(__ATMAIN__); } function exitRuntime() { runtimeExited = true; } function postRun() { if (Module2["postRun"]) { if (typeof Module2["postRun"] == "function") Module2["postRun"] = [Module2["postRun"]]; while (Module2["postRun"].length) { addOnPostRun(Module2["postRun"].shift()); } } callRuntimeCallbacks(__ATPOSTRUN__); } function addOnPreRun(cb) { __ATPRERUN__.unshift(cb); } function addOnInit(cb) { __ATINIT__.unshift(cb); } function addOnPreMain(cb) { __ATMAIN__.unshift(cb); } function addOnExit(cb) { } function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb); } function unSign(value, bits, ignore) { if (value >= 0) { return value; } return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value; } function reSign(value, bits, ignore) { if (value <= 0) { return value; } var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1); if (value >= half && (bits <= 32 || value > half)) { value = -2 * half + value; } return value; } var Math_abs = Math.abs; var Math_cos = Math.cos; var Math_sin = Math.sin; var Math_tan = Math.tan; var Math_acos = Math.acos; var Math_asin = Math.asin; var Math_atan = Math.atan; var Math_atan2 = Math.atan2; var Math_exp = Math.exp; var Math_log = Math.log; var Math_sqrt = Math.sqrt; var Math_ceil = Math.ceil; var Math_floor = Math.floor; var Math_pow = Math.pow; var Math_imul = Math.imul; var Math_fround = Math.fround; var Math_round = Math.round; var Math_min = Math.min; var Math_max = Math.max; var Math_clz32 = Math.clz32; var Math_trunc = Math.trunc; var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function getUniqueRunDependency(id) { return id; } function addRunDependency(id) { runDependencies++; if (Module2["monitorRunDependencies"]) { Module2["monitorRunDependencies"](runDependencies); } } function removeRunDependency(id) { runDependencies--; if (Module2["monitorRunDependencies"]) { Module2["monitorRunDependencies"](runDependencies); } if (runDependencies == 0) { if (runDependencyWatcher !== null) { clearInterval(runDependencyWatcher); runDependencyWatcher = null; } if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback(); } } } Module2["preloadedImages"] = {}; Module2["preloadedAudios"] = {}; function abort(what) { if (Module2["onAbort"]) { Module2["onAbort"](what); } what += ""; out(what); err(what); ABORT = true; EXITSTATUS = 1; what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; throw new WebAssembly2.RuntimeError(what); } var memoryInitializer = null; function hasPrefix(str, prefix) { return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; } var dataURIPrefix = "data:application/octet-stream;base64,"; function isDataURI(filename) { return hasPrefix(filename, dataURIPrefix); } var fileURIPrefix = "file://"; function isFileURI(filename) { return hasPrefix(filename, fileURIPrefix); } var wasmBinaryFile = "curveasm.wasm"; if (!isDataURI(wasmBinaryFile)) { wasmBinaryFile = locateFile(wasmBinaryFile); } function getBinary() { try { if (wasmBinary) { return new Uint8Array(wasmBinary); } var binary = tryParseAsDataURI(wasmBinaryFile); if (binary) { return binary; } if (readBinary) { return readBinary(wasmBinaryFile); } else { throw "both async and sync fetching of the wasm failed"; } } catch (err2) { abort(err2); } } function getBinaryPromise() { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function" && // Let's not use fetch to get objects over file:// as it's most likely Cordova which doesn't support fetch for file:// !isFileURI(wasmBinaryFile)) { return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) { if (!response["ok"]) { throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; } return response["arrayBuffer"](); }).catch(function() { return getBinary(); }); } return new Promise(function(resolve, reject) { resolve(getBinary()); }); } function createWasm() { var info = { env: asmLibraryArg, wasi_snapshot_preview1: asmLibraryArg }; function receiveInstance(instance, module2) { var exports3 = instance.exports; Module2["asm"] = exports3; removeRunDependency("wasm-instantiate"); } addRunDependency("wasm-instantiate"); function receiveInstantiatedSource(output) { receiveInstance(output["instance"]); } function instantiateArrayBuffer(receiver) { return getBinaryPromise().then(function(binary) { return WebAssembly2.instantiate(binary, info); }).then(receiver, function(reason) { err("failed to asynchronously prepare wasm: " + reason); abort(reason); }); } function instantiateAsync() { if (!wasmBinary && typeof WebAssembly2.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. !isFileURI(wasmBinaryFile) && typeof fetch === "function") { fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) { var result = WebAssembly2.instantiateStreaming(response, info); return result.then(receiveInstantiatedSource, function(reason) { err("wasm streaming compile failed: " + reason); err("falling back to ArrayBuffer instantiation"); instantiateArrayBuffer(receiveInstantiatedSource); }); }); } else { return instantiateArrayBuffer(receiveInstantiatedSource); } } if (Module2["instantiateWasm"]) { try { var exports2 = Module2["instantiateWasm"](info, receiveInstance); return exports2; } catch (e) { err("Module.instantiateWasm callback failed with error: " + e); return false; } } instantiateAsync(); return {}; } var tempDouble; var tempI64; var ASM_CONSTS = {}; __ATINIT__.push({ func: function() { ___wasm_call_ctors(); } }); function demangle(func) { return func; } function demangleAll(text) { var regex = /\b_Z[\w\d_]+/g; return text.replace(regex, function(x) { var y = demangle(x); return x === y ? x : y + " [" + x + "]"; }); } function jsStackTrace() { var err2 = new Error(); if (!err2.stack) { try { throw new Error(); } catch (e) { err2 = e; } if (!err2.stack) { return "(no stack trace available)"; } } return err2.stack.toString(); } function stackTrace() { var js = jsStackTrace(); if (Module2["extraStackTrace"]) js += "\n" + Module2["extraStackTrace"](); return demangleAll(js); } function _emscripten_get_sbrk_ptr() { return 34096; } function _emscripten_memcpy_big(dest, src, num) { HEAPU8.copyWithin(dest, src, src + num); } function _emscripten_get_heap_size() { return HEAPU8.length; } function abortOnCannotGrowMemory(requestedSize) { abort("OOM"); } function _emscripten_resize_heap(requestedSize) { requestedSize = requestedSize >>> 0; abortOnCannotGrowMemory(requestedSize); } var ASSERTIONS = false; function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; var u8array = new Array(len); var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); if (dontAddNull) u8array.length = numBytesWritten; return u8array; } function intArrayToString(array) { var ret = []; for (var i2 = 0; i2 < array.length; i2++) { var chr = array[i2]; if (chr > 255) { if (ASSERTIONS) { assert(false, "Character code " + chr + " (" + String.fromCharCode(chr) + ") at offset " + i2 + " not in 0x00-0xFF."); } chr &= 255; } ret.push(String.fromCharCode(chr)); } return ret.join(""); } var decodeBase64 = typeof atob === "function" ? atob : function(input) { var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i2 = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = keyStr.indexOf(input.charAt(i2++)); enc2 = keyStr.indexOf(input.charAt(i2++)); enc3 = keyStr.indexOf(input.charAt(i2++)); enc4 = keyStr.indexOf(input.charAt(i2++)); chr1 = enc1 << 2 | enc2 >> 4; chr2 = (enc2 & 15) << 4 | enc3 >> 2; chr3 = (enc3 & 3) << 6 | enc4; output = output + String.fromCharCode(chr1); if (enc3 !== 64) { output = output + String.fromCharCode(chr2); } if (enc4 !== 64) { output = output + String.fromCharCode(chr3); } } while (i2 < input.length); return output; }; function intArrayFromBase64(s) { if (typeof ENVIRONMENT_IS_NODE === "boolean" && ENVIRONMENT_IS_NODE) { var buf; try { buf = import_buffer.Buffer.from(s, "base64"); } catch (_) { buf = new import_buffer.Buffer(s, "base64"); } return new Uint8Array(buf["buffer"], buf["byteOffset"], buf["byteLength"]); } try { var decoded = decodeBase64(s); var bytes = new Uint8Array(decoded.length); for (var i2 = 0; i2 < decoded.length; ++i2) { bytes[i2] = decoded.charCodeAt(i2); } return bytes; } catch (_) { throw new Error("Converting base64 string to bytes failed."); } } function tryParseAsDataURI(filename) { if (!isDataURI(filename)) { return; } return intArrayFromBase64(filename.slice(dataURIPrefix.length)); } var asmGlobalArg = {}; var asmLibraryArg = { emscripten_get_sbrk_ptr: _emscripten_get_sbrk_ptr, emscripten_memcpy_big: _emscripten_memcpy_big, emscripten_resize_heap: _emscripten_resize_heap, getTempRet0, memory: wasmMemory, setTempRet0, table: wasmTable }; var asm = createWasm(); Module2["asm"] = asm; var ___wasm_call_ctors = Module2["___wasm_call_ctors"] = function() { return (___wasm_call_ctors = Module2["___wasm_call_ctors"] = Module2["asm"]["__wasm_call_ctors"]).apply(null, arguments); }; var _curve25519_sign = Module2["_curve25519_sign"] = function() { return (_curve25519_sign = Module2["_curve25519_sign"] = Module2["asm"]["curve25519_sign"]).apply(null, arguments); }; var _curve25519_verify = Module2["_curve25519_verify"] = function() { return (_curve25519_verify = Module2["_curve25519_verify"] = Module2["asm"]["curve25519_verify"]).apply(null, arguments); }; var _curve25519_donna = Module2["_curve25519_donna"] = function() { return (_curve25519_donna = Module2["_curve25519_donna"] = Module2["asm"]["curve25519_donna"]).apply(null, arguments); }; var ___errno_location = Module2["___errno_location"] = function() { return (___errno_location = Module2["___errno_location"] = Module2["asm"]["__errno_location"]).apply(null, arguments); }; var _malloc = Module2["_malloc"] = function() { return (_malloc = Module2["_malloc"] = Module2["asm"]["malloc"]).apply(null, arguments); }; var _free = Module2["_free"] = function() { return (_free = Module2["_free"] = Module2["asm"]["free"]).apply(null, arguments); }; var stackSave = Module2["stackSave"] = function() { return (stackSave = Module2["stackSave"] = Module2["asm"]["stackSave"]).apply(null, arguments); }; var stackAlloc = Module2["stackAlloc"] = function() { return (stackAlloc = Module2["stackAlloc"] = Module2["asm"]["stackAlloc"]).apply(null, arguments); }; var stackRestore = Module2["stackRestore"] = function() { return (stackRestore = Module2["stackRestore"] = Module2["asm"]["stackRestore"]).apply(null, arguments); }; var __growWasmMemory = Module2["__growWasmMemory"] = function() { return (__growWasmMemory = Module2["__growWasmMemory"] = Module2["asm"]["__growWasmMemory"]).apply(null, arguments); }; Module2["asm"] = asm; var calledRun; function ExitStatus(status) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + status + ")"; this.status = status; } var calledMain = false; dependenciesFulfilled = function runCaller() { if (!calledRun) run(); if (!calledRun) dependenciesFulfilled = runCaller; }; function run(args) { args = args || arguments_; if (runDependencies > 0) { return; } preRun(); if (runDependencies > 0) return; function doRun() { if (calledRun) return; calledRun = true; Module2["calledRun"] = true; if (ABORT) return; initRuntime(); preMain(); readyPromiseResolve(Module2); if (Module2["onRuntimeInitialized"]) Module2["onRuntimeInitialized"](); postRun(); } if (Module2["setStatus"]) { Module2["setStatus"]("Running..."); setTimeout(function() { setTimeout(function() { Module2["setStatus"](""); }, 1); doRun(); }, 1); } else { doRun(); } } Module2["run"] = run; function exit(status, implicit) { if (implicit && noExitRuntime && status === 0) { return; } if (noExitRuntime) { } else { ABORT = true; EXITSTATUS = status; exitRuntime(); if (Module2["onExit"]) Module2["onExit"](status); } quit_(status, new ExitStatus(status)); } if (Module2["preInit"]) { if (typeof Module2["preInit"] == "function") Module2["preInit"] = [Module2["preInit"]]; while (Module2["preInit"].length > 0) { Module2["preInit"].pop()(); } } noExitRuntime = true; run(); return Module2.ready; }; })(); if (typeof exports === "object" && typeof module === "object") module.exports = Module; else if (typeof define === "function" && define["amd"]) define([], function() { return Module; }); else if (typeof exports === "object") exports["Module"] = Module; } }); // node_modules/@privacyresearch/curve25519-typescript/lib/curve-wrapper.js var require_curve_wrapper = __commonJS({ "node_modules/@privacyresearch/curve25519-typescript/lib/curve-wrapper.js"(exports) { "use strict"; init_inject_buffer(); var __awaiter = exports && exports.__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()); }); }; var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncCurve25519Wrapper = exports.Curve25519Wrapper = void 0; var curveasm_1 = __importDefault(require_curveasm()); var instancePromise = (0, curveasm_1.default)(); var Curve25519Wrapper = class _Curve25519Wrapper { constructor(module2) { this._module = module2; this.basepoint = new Uint8Array(32).fill(0); this.basepoint[0] = 9; } static create() { return __awaiter(this, void 0, void 0, function* () { const instance = yield instancePromise; return new _Curve25519Wrapper(instance); }); } _allocate(bytes) { const address = this._module._malloc(bytes.length); this._module.HEAPU8.set(bytes, address); return address; } _readBytes(address, length, array) { array.set(this._module.HEAPU8.subarray(address, address + length)); } keyPair(privKey) { const priv = new Uint8Array(privKey); priv[0] &= 248; priv[31] &= 127; priv[31] |= 64; const publicKey_ptr = this._module._malloc(32); const privateKey_ptr = this._allocate(priv); const basepoint_ptr = this._allocate(this.basepoint); const err = this._module._curve25519_donna(publicKey_ptr, privateKey_ptr, basepoint_ptr); if (err !== 0) { throw new Error(`Error performing curve scalar multiplication: ${err}`); } const res = new Uint8Array(32); this._readBytes(publicKey_ptr, 32, res); this._module._free(publicKey_ptr); this._module._free(privateKey_ptr); this._module._free(basepoint_ptr); return { pubKey: res.buffer, privKey: priv.buffer }; } sharedSecret(pubKey, privKey) { const sharedKey_ptr = this._module._malloc(32); const privateKey_ptr = this._allocate(new Uint8Array(privKey)); const basepoint_ptr = this._allocate(new Uint8Array(pubKey)); const err = this._module._curve25519_donna(sharedKey_ptr, privateKey_ptr, basepoint_ptr); if (err !== 0) { throw new Error(`Error performing curve scalar multiplication: ${err}`); } const res = new Uint8Array(32); this._readBytes(sharedKey_ptr, 32, res); this._module._free(sharedKey_ptr); this._module._free(privateKey_ptr); this._module._free(basepoint_ptr); return res.buffer; } sign(privKey, message) { const signature_ptr = this._module._malloc(64); const privateKey_ptr = this._allocate(new Uint8Array(privKey)); const message_ptr = this._allocate(new Uint8Array(message)); this._module._curve25519_sign(signature_ptr, privateKey_ptr, message_ptr, message.byteLength); const res = new Uint8Array(64); this._readBytes(signature_ptr, 64, res); this._module._free(signature_ptr); this._module._free(privateKey_ptr); this._module._free(message_ptr); return res.buffer; } verify(pubKey, message, sig) { const publicKey_ptr = this._allocate(new Uint8Array(pubKey)); const signature_ptr = this._allocate(new Uint8Array(sig)); const message_ptr = this._allocate(new Uint8Array(message)); const res = this._module._curve25519_verify(signature_ptr, publicKey_ptr, message_ptr, message.byteLength); this._module._free(publicKey_ptr); this._module._free(signature_ptr); this._module._free(message_ptr); return res !== 0; } /** * Syntactic sugar for verify with explicit semantics. The fact that verify returns true when * a signature is invalid could be confusing. The meaning of this function should be clear. * * @param pubKey * @param message * @param sig */ signatureIsValid(pubKey, message, sig) { return !this.verify(pubKey, message, sig); } }; exports.Curve25519Wrapper = Curve25519Wrapper; var AsyncCurve25519Wrapper = class { constructor() { this.curvePromise = Curve25519Wrapper.create(); } keyPair(privKey) { return __awaiter(this, void 0, void 0, function* () { return (yield this.curvePromise).keyPair(privKey); }); } sharedSecret(pubKey, privKey) { return __awaiter(this, void 0, void 0, function* () { return (yield this.curvePromise).sharedSecret(pubKey, privKey); }); } sign(privKey, message) { return __awaiter(this, void 0, void 0, function* () { return (yield this.curvePromise).sign(privKey, message); }); } verify(pubKey, message, sig) { return __awaiter(this, void 0, void 0, function* () { return (yield this.curvePromise).verify(pubKey, message, sig); }); } }; exports.AsyncCurve25519Wrapper = AsyncCurve25519Wrapper; } }); // node_modules/@privacyresearch/curve25519-typescript/lib/types.js var require_types = __commonJS({ "node_modules/@privacyresearch/curve25519-typescript/lib/types.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); } }); // node_modules/@privacyresearch/curve25519-typescript/lib/index.js var require_lib = __commonJS({ "node_modules/@privacyresearch/curve25519-typescript/lib/index.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_curve_wrapper(), exports); __exportStar(require_types(), exports); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/helpers.js var require_helpers = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/helpers.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.uint8ArrayToArrayBuffer = exports.isEqual = exports.binaryStringToArrayBuffer = exports.uint8ArrayToString = exports.arrayBufferToString = void 0; function arrayBufferToString(b) { return uint8ArrayToString(new Uint8Array(b)); } exports.arrayBufferToString = arrayBufferToString; function uint8ArrayToString(arr) { const end = arr.length; let begin = 0; if (begin === end) return ""; let chars = []; const parts = []; while (begin < end) { chars.push(arr[begin++]); if (chars.length >= 1024) { parts.push(String.fromCharCode(...chars)); chars = []; } } return parts.join("") + String.fromCharCode(...chars); } exports.uint8ArrayToString = uint8ArrayToString; function binaryStringToArrayBuffer(str) { let i2 = 0; const k = str.length; let charCode; const bb = []; while (i2 < k) { charCode = str.charCodeAt(i2); if (charCode > 255) throw RangeError("illegal char code: " + charCode); bb[i2++] = charCode; } return Uint8Array.from(bb).buffer; } exports.binaryStringToArrayBuffer = binaryStringToArrayBuffer; function isEqual(a, b) { if (a === void 0 || b === void 0) { return false; } const a1 = arrayBufferToString(a); const b1 = arrayBufferToString(b); const maxLength = Math.max(a1.length, b1.length); if (maxLength < 5) { throw new Error("a/b compare too short"); } return a1.substring(0, Math.min(maxLength, a1.length)) == b1.substring(0, Math.min(maxLength, b1.length)); } exports.isEqual = isEqual; function uint8ArrayToArrayBuffer(arr) { return arr.buffer.slice(arr.byteOffset, arr.byteLength + arr.byteOffset); } exports.uint8ArrayToArrayBuffer = uint8ArrayToArrayBuffer; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/curve.js var require_curve = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/curve.js"(exports) { "use strict"; init_inject_buffer(); var __awaiter = exports && exports.__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.AsyncCurve = exports.Curve = void 0; var curve25519_typescript_1 = require_lib(); var helpers_1 = require_helpers(); var Curve = class { constructor(curve25519) { this._curve25519 = curve25519; this.async = new AsyncCurve(); } set curve(c) { this._curve25519 = c; } createKeyPair(privKey) { validatePrivKey(privKey); const raw_keys = this._curve25519.keyPair(privKey); return processKeys(raw_keys); } ECDHE(pubKey, privKey) { pubKey = validatePubKeyFormat(pubKey); validatePrivKey(privKey); if (pubKey === void 0 || pubKey.byteLength != 32) { throw new Error("Invalid public key"); } return this._curve25519.sharedSecret(pubKey, privKey); } Ed25519Sign(privKey, message) { validatePrivKey(privKey); if (message === void 0) { throw new Error("Invalid message"); } return this._curve25519.sign(privKey, message); } Ed25519Verify(pubKey, msg, sig) { pubKey = validatePubKeyFormat(pubKey); if (pubKey === void 0 || pubKey.byteLength != 32) { throw new Error("Invalid public key"); } if (msg === void 0) { throw new Error("Invalid message"); } if (sig === void 0 || sig.byteLength != 64) { throw new Error("Invalid signature"); } return this._curve25519.verify(pubKey, msg, sig); } }; exports.Curve = Curve; var AsyncCurve = class { constructor() { this._curve25519 = new curve25519_typescript_1.AsyncCurve25519Wrapper(); } set curve(c) { this._curve25519 = c; } createKeyPair(privKey) { return __awaiter(this, void 0, void 0, function* () { validatePrivKey(privKey); const raw_keys = yield this._curve25519.keyPair(privKey); return processKeys(raw_keys); }); } ECDHE(pubKey, privKey) { pubKey = validatePubKeyFormat(pubKey); validatePrivKey(privKey); if (pubKey === void 0 || pubKey.byteLength != 32) { throw new Error("Invalid public key"); } return this._curve25519.sharedSecret(pubKey, privKey); } Ed25519Sign(privKey, message) { validatePrivKey(privKey); if (message === void 0) { throw new Error("Invalid message"); } return this._curve25519.sign(privKey, message); } Ed25519Verify(pubKey, msg, sig) { return __awaiter(this, void 0, void 0, function* () { pubKey = validatePubKeyFormat(pubKey); if (pubKey === void 0 || pubKey.byteLength != 32) { throw new Error("Invalid public key"); } if (msg === void 0) { throw new Error("Invalid message"); } if (sig === void 0 || sig.byteLength != 64) { throw new Error("Invalid signature"); } const verifyResult = yield this._curve25519.verify(pubKey, msg, sig); if (verifyResult) { throw new Error("Invalid signature"); } return verifyResult; }); } }; exports.AsyncCurve = AsyncCurve; function validatePrivKey(privKey) { if (privKey === void 0 || !(privKey instanceof ArrayBuffer) || privKey.byteLength != 32) { throw new Error("Invalid private key"); } } function validatePubKeyFormat(pubKey) { if (pubKey === void 0 || (pubKey.byteLength != 33 || new Uint8Array(pubKey)[0] != 5) && pubKey.byteLength != 32) { console.warn(`Invalid public key`, { pubKey }); throw new Error(`Invalid public key: ${pubKey} ${pubKey === null || pubKey === void 0 ? void 0 : pubKey.byteLength}`); } if (pubKey.byteLength == 33) { return pubKey.slice(1); } else { console.error("WARNING: Expected pubkey of length 33, please report the ST and client that generated the pubkey"); return pubKey; } } function processKeys(raw_keys) { const origPub = new Uint8Array(raw_keys.pubKey); const pub = new Uint8Array(33); pub.set(origPub, 1); pub[0] = 5; return { pubKey: (0, helpers_1.uint8ArrayToArrayBuffer)(pub), privKey: raw_keys.privKey }; } } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/msrcrypto.js var require_msrcrypto = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/msrcrypto.js"(exports, module) { "use strict"; init_inject_buffer(); var msrCryptoVersion = "1.6.1"; (function(root, factory) { if (typeof define === "function" && define.amd) { define([], function() { return root.msrCrypto = factory(root); }); } else if (typeof exports === "object") { module.exports = factory(root); } else { root.msrCrypto = factory(root); } })(exports, function(global2) { global2 = global2 || {}; var msrCrypto = function() { var operations = {}; operations.register = function(operationType, algorithmName, functionToCall) { if (!operations[operationType]) { operations[operationType] = {}; } var op = operations[operationType]; if (!op[algorithmName]) { op[algorithmName] = functionToCall; } }; operations.exists = function(operationType, algorithmName) { if (!operations[operationType]) { return false; } return operations[operationType][algorithmName] ? true : false; }; var scriptUrl = /* @__PURE__ */ (function() { return null; })(); var fprngEntropyProvided = false; var webWorkerSupport = typeof Worker !== "undefined"; var runningInWorkerInstance = typeof importScripts === "function" && self instanceof WorkerGlobalScope; var workerInitialized = false; var typedArraySupport = typeof ArrayBuffer !== "undefined"; var setterSupport = (function() { try { Object.defineProperty({}, "oncomplete", {}); return true; } catch (ex) { return false; } })(); var asyncMode = false; var createProperty = function(parentObject, propertyName, initialValue, getterFunction, setterFunction) { if (!setterSupport) { parentObject[propertyName] = initialValue; return; } var setGet = {}; getterFunction && (setGet.get = getterFunction); setterFunction && (setGet.set = setterFunction); Object.defineProperty(parentObject, propertyName, setGet); }; var msrcryptoHashFunctions = {}; var msrcryptoUtilities = /* @__PURE__ */ (function() { var encodingChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function consoleLog(text) { if ("console" in self && "log" in console) { console.log(text); } } function toBase64(data, base64Url) { var dataType = getObjectType(data); if (dataType !== "Array" && dataType !== "Uint8Array" && dataType !== "ArrayBuffer") { throw new Error("invalid input"); } var output = ""; var input = toArray(data); if (!base64Url) { base64Url = false; } var char1, char2, char3, enc1, enc2, enc3, enc4; var i2; for (i2 = 0; i2 < input.length; i2 += 3) { char1 = input[i2]; char2 = input[i2 + 1]; char3 = input[i2 + 2]; enc1 = char1 >> 2; enc2 = (char1 & 3) << 4 | char2 >> 4; enc3 = (char2 & 15) << 2 | char3 >> 6; enc4 = char3 & 63; if (isNaN(char2)) { enc3 = enc4 = 64; } else if (isNaN(char3)) { enc4 = 64; } output = output + encodingChars.charAt(enc1) + encodingChars.charAt(enc2) + encodingChars.charAt(enc3) + encodingChars.charAt(enc4); } if (base64Url) { return output.replace(/\+/g, "-").replace(/\//g, "_").replace(/\=/g, ""); } return output; } function base64ToBytes(encodedString) { encodedString = encodedString.replace(/-/g, "+").replace(/_/g, "/"); while (encodedString.length % 4 !== 0) { encodedString += "="; } var output = []; var char1, char2, char3; var enc1, enc2, enc3, enc4; var i2; encodedString = encodedString.replace(/[^A-Za-z0-9\+\/\=]/g, ""); for (i2 = 0; i2 < encodedString.length; i2 += 4) { enc1 = encodingChars.indexOf(encodedString.charAt(i2)); enc2 = encodingChars.indexOf(encodedString.charAt(i2 + 1)); enc3 = encodingChars.indexOf(encodedString.charAt(i2 + 2)); enc4 = encodingChars.indexOf(encodedString.charAt(i2 + 3)); char1 = enc1 << 2 | enc2 >> 4; char2 = (enc2 & 15) << 4 | enc3 >> 2; char3 = (enc3 & 3) << 6 | enc4; output.push(char1); if (enc3 !== 64) { output.push(char2); } if (enc4 !== 64) { output.push(char3); } } return output; } function getObjectType(object) { return Object.prototype.toString.call(object).slice(8, -1); } function bytesToHexString2(bytes, separate) { var result = ""; if (typeof separate === "undefined") { separate = false; } for (var i2 = 0; i2 < bytes.length; i2++) { if (separate && i2 % 4 === 0 && i2 !== 0) { result += "-"; } var hexval = bytes[i2].toString(16).toUpperCase(); if (hexval.length === 1) { result += "0"; } result += hexval; } return result; } function bytesToInt32(bytes, index) { index = index || 0; return bytes[index] << 24 | bytes[index + 1] << 16 | bytes[index + 2] << 8 | bytes[index + 3]; } function hexToBytesArray(hexString) { hexString = hexString.replace(/\-/g, ""); var result = []; while (hexString.length >= 2) { result.push(parseInt(hexString.substring(0, 2), 16)); hexString = hexString.substring(2, hexString.length); } return result; } function clone(object) { var newObject = {}; for (var propertyName in object) { if (object.hasOwnProperty(propertyName)) { newObject[propertyName] = object[propertyName]; } } return newObject; } function unpackData(base64String, arraySize, toUint32s) { var bytes = base64ToBytes(base64String), data = [], i2; if (isNaN(arraySize)) { return bytes; } else { for (i2 = 0; i2 < bytes.length; i2 += arraySize) { data.push(bytes.slice(i2, i2 + arraySize)); } } if (toUint32s) { for (i2 = 0; i2 < data.length; i2++) { data[i2] = (data[i2][0] << 24) + (data[i2][1] << 16) + (data[i2][2] << 8) + data[i2][3]; } } return data; } function int32ToBytes(int32) { return [int32 >>> 24 & 255, int32 >>> 16 & 255, int32 >>> 8 & 255, int32 & 255]; } function int32ArrayToBytes(int32Array) { var result = []; for (var i2 = 0; i2 < int32Array.length; i2++) { result = result.concat(int32ToBytes(int32Array[i2])); } return result; } function xorVectors(a, b, res) { var length = Math.min(a.length, b.length), res = res || new Array(length); for (var i2 = 0; i2 < length; i2 += 1) { res[i2] = a[i2] ^ b[i2]; } return res; } function getVector(length, fillValue) { if (isNaN(fillValue)) { fillValue = 0; } var res = new Array(length); for (var i2 = 0; i2 < length; i2 += 1) { res[i2] = fillValue; } return res; } function toArray(typedArray) { if (!typedArray) { return []; } if (typedArray.pop) { return typedArray; } if (getObjectType(typedArray) === "ArrayBuffer") { typedArray = new Uint8Array(typedArray); } else if (typedArray.BYTES_PER_ELEMENT > 1) { typedArray = new Uint8Array(typedArray.buffer); } if (typedArray.length === 1) { return [typedArray[0]]; } if (typedArray.length < 65536) { return Array.apply(null, typedArray); } var returnArray = new Array(typedArray.length); for (var i2 = 0; i2 < typedArray.length; i2++) { returnArray[i2] = typedArray[i2]; } return returnArray; } function padEnd(array, value, finalLength) { while (array.length < finalLength) { array.push(value); } return array; } function padFront(array, value, finalLength) { while (array.length < finalLength) { array.unshift(value); } return array; } function arraysEqual(array1, array2) { var result = true; if (array1.length !== array2.length) { result = false; } for (var i2 = 0; i2 < array1.length; i2++) { if (array1[i2] !== array2[i2]) { result = false; } } return result; } function verifyByteArray(array) { if (getObjectType(array) !== "Array") { return false; } var element; for (var i2 = 0; i2 < array.length; i2++) { element = array[i2]; if (isNaN(element) || element < 0 || element > 255) { return false; } } return true; } function checkParam(param, type, errorMessage) { if (!param) { throw new Error(errorMessage); } if (type && getObjectType(param) !== type) { throw new Error(errorMessage); } return true; } function stringToBytes(text) { var encodedBytes = []; for (var i2 = 0, j = 0; i2 < text.length; i2++) { var charCode = text.charCodeAt(i2); if (charCode < 128) { encodedBytes[j++] = charCode; } else if (charCode < 2048) { encodedBytes[j++] = charCode >>> 6 | 192; encodedBytes[j++] = charCode & 63 | 128; } else if (charCode < 55296 || charCode > 57343) { encodedBytes[j++] = charCode >>> 12 | 224; encodedBytes[j++] = charCode >>> 6 & 63 | 128; encodedBytes[j++] = charCode & 63 | 128; } else { charCode = (charCode - 55296) * 1024 + (text.charCodeAt(++i2) - 56320) + 65536; encodedBytes[j++] = charCode >>> 18 | 240; encodedBytes[j++] = charCode >>> 12 & 63 | 128; encodedBytes[j++] = charCode >>> 6 & 63 | 128; encodedBytes[j++] = charCode & 63 | 128; } } return encodedBytes; } function bytesToString(textBytes) { var result = "", charCode; textBytes = toArray(textBytes); for (var i2 = 0; i2 < textBytes.length; ) { var encodedChar = textBytes[i2++]; if (encodedChar < 128) { charCode = encodedChar; } else if (encodedChar < 224) { charCode = (encodedChar << 6) + textBytes[i2++] - 12416; } else if (encodedChar < 240) { charCode = (encodedChar << 12) + (textBytes[i2++] << 6) + textBytes[i2++] - 925824; } else { charCode = (encodedChar << 18) + (textBytes[i2++] << 12) + (textBytes[i2++] << 6) + textBytes[i2++] - 63447168; } if (charCode > 65535) { var surrogateHigh = Math.floor((charCode - 65536) / 1024) + 55296; var surrogateLow = (charCode - 65536) % 1024 + 56320; result += String.fromCharCode(surrogateHigh, surrogateLow); continue; } result += String.fromCharCode(charCode); } return result; } return { consoleLog, toBase64, fromBase64: base64ToBytes, checkParam, getObjectType, bytesToHexString: bytesToHexString2, bytesToInt32, stringToBytes, bytesToString, unpackData, hexToBytesArray, int32ToBytes, int32ArrayToBytes, toArray, arraysEqual, clone, xorVectors, padEnd, padFront, getVector, verifyByteArray }; })(); var asn1 = /* @__PURE__ */ (function() { var asn1Types = { 0: "CUSTOM", 1: "BOOLEAN", 2: "INTEGER", 3: "BIT STRING", 4: "OCTET STRING", 5: "NULL", 6: "OBJECT IDENTIFIER", 16: "SEQUENCE", 17: "SET", 19: "PRINTABLE STRING", 23: "UTCTime" }; var asn1Classes = { 0: "UNIVERSAL", 1: "APPLICATION", 2: "Context-Defined", 3: "PRIVATE" }; function parse(bytes, force) { force = !!force; var type = asn1Types[bytes[0] & 31], dataLen = bytes[1], i2 = 0, constructed = !!(bytes[0] & 32), remainder, child, header; if (dataLen & 128) { for (i2 = 0, dataLen = 0; i2 < (bytes[1] & 127); i2++) { dataLen = (dataLen << 8) + bytes[2 + i2]; } } header = 2 + i2; if (type === void 0 || dataLen > bytes.length) { return null; } var obj = constructed ? [] : {}; obj.type = type; obj.header = header; obj.data = bytes.slice(0, dataLen + header); if (constructed || force) { if (obj.type === "BIT STRING" && bytes[header] === 0) { i2++; } remainder = bytes.slice(header, obj.data.length); while (remainder.length > 0) { child = parse(remainder); if (child === null) { break; } obj.push(child); remainder = remainder.slice(child.data.length); } } return obj; } function encode(asn1tree) { throw new Error("not implemented"); } function toString(objTree, indent) { var output = new Array(indent + 1).join(" ") + objTree.type + " (" + objTree.length + ") " + bytesToHexString(objTree.data).substring(0, 16) + "\n"; if (!objTree.children) { return output; } for (var i2 = 0; i2 < objTree.children.length; i2++) { output += toString(objTree.children[i2], indent + 4) + ""; } return output; } return { parse, encode, toString: function(objTree) { return toString(objTree, 0); } }; })(); var msrcryptoWorker = /* @__PURE__ */ (function() { function returnResult(result) { if (workerInitialized && runningInWorkerInstance) { self.postMessage(result); } return result; } var workerId, operationType, operationSubType; return { jsCryptoRunner: function(e) { workerId = e.data.workerid; operationType = e.data.operationType; operationSubType = e.data.operationSubType; var operation = e.data.operationType, result, func = operations[operation][e.data.algorithm.name], p = e.data; if (!operations.exists(operation, e.data.algorithm.name)) { throw new Error("unregistered algorithm."); } if (p.operationSubType) { result = returnResult({ type: p.operationSubType, result: func(p) }); } else { result = returnResult(func(p)); } return result; }, returnResult }; })(); if (runningInWorkerInstance) { self.onmessage = function(e) { if (!workerInitialized && e.data.prngSeed) { var entropy = e.data.prngSeed; msrcryptoPseudoRandom.init(entropy); workerInitialized = true; return msrcryptoWorker.returnResult({ initialized: true }); } if (workerInitialized === true) { msrcryptoWorker.jsCryptoRunner(e); } }; } var msrcryptoJwk = /* @__PURE__ */ (function() { var utils2 = msrcryptoUtilities; function stringToArray(stringData) { var result = []; for (var i2 = 0; i2 < stringData.length; i2++) { result[i2] = stringData.charCodeAt(i2); } if (result[result.length - 1] === 0) { result.pop(); } return result; } function getKeyType(keyHandle) { var algType = keyHandle.algorithm.name.slice(0, 3).toUpperCase(); if (algType === "RSA") { return "RSA"; } if (algType === "ECD") { return "EC"; } return "oct"; } function hashSize(algorithm) { return algorithm.hash.name.substring(algorithm.hash.name.indexOf("-") + 1); } var algorithmMap = { HMAC: function(algorithm) { return "HS" + hashSize(algorithm); }, "AES-CBC": function(algorithm) { return "A" + algorithm.length.toString() + "CBC"; }, "AES-GCM": function(algorithm) { return "A" + algorithm.length.toString() + "GCM"; }, "RSAES-PKCS1-V1_5": function(algorithm) { return "RSA1_5"; }, "RSASSA-PKCS1-V1_5": function(algorithm) { return "RS" + hashSize(algorithm); }, "RSA-OAEP": function(algorithm) { if (algorithm.hash.name.toUpperCase() === "SHA-1") { return "RSA-OAEP"; } return "RSA-OAEP-" + hashSize(algorithm); }, "RSA-PSS": function(algorithm) { return "PS" + hashSize(algorithm); }, ECDSA: function(algorithm) { return "EC-" + algorithm.namedCurve.substring(algorithm.namedCurve.indexOf("-") + 1); } }; function keyToJwk(keyHandle, keyData) { var key = {}; key.kty = getKeyType(keyHandle); key.ext = keyHandle.extractable; if (algorithmMap[keyHandle.algorithm.name.toUpperCase()]) { key.alg = algorithmMap[keyHandle.algorithm.name.toUpperCase()](keyHandle.algorithm); } key.key_ops = keyHandle.usages; if (keyData.pop) { key.k = utils2.toBase64(keyData, true); } else { for (var property in keyData) { if (keyData[property].pop && property !== "key_ops") { key[property] = utils2.toBase64(keyData[property], true); } } } if (keyHandle.algorithm.namedCurve) { key.crv = keyHandle.algorithm.namedCurve; } return key; } function findUsage(usage, usages) { for (var i2 = 0; i2 < usages.length; i2++) { if (usage.toUpperCase() === usages[i2].toUpperCase()) { return true; } } return false; } function keyToJwkOld(keyHandle, keyData) { var key = {}; key.kty = getKeyType(keyHandle); key.extractable = keyHandle.extractable; if (keyData.pop) { key.k = utils2.toBase64(keyData, true); } else { for (var property in keyData) { if (keyData[property].pop) { key[property] = utils2.toBase64(keyData[property], true); } } } if (keyHandle.algorithm.namedCurve) { key.crv = keyHandle.algorithm.namedCurve; } var stringData = JSON.stringify(key, null, " "); return stringToArray(stringData); } function jwkToKey(keyData, algorithm, propsToArray) { var jsonKeyObject = JSON.parse(JSON.stringify(keyData)); for (var i2 = 0; i2 < propsToArray.length; i2 += 1) { var propValue = jsonKeyObject[propsToArray[i2]]; if (propValue) { jsonKeyObject[propsToArray[i2]] = utils2.fromBase64(propValue); } } return jsonKeyObject; } return { keyToJwkOld, keyToJwk, jwkToKey }; })(); function msrcryptoMath() { var DIGIT_BITS = 24; var DIGIT_NUM_BYTES = Math.floor(DIGIT_BITS / 8); var DIGIT_MASK = (1 << DIGIT_BITS) - 1; var DIGIT_BASE = 1 << DIGIT_BITS; var DIGIT_MAX = DIGIT_MASK; var DIG_INV = 1 / DIGIT_BASE; var DIGIT_MAX_ADDS = 31; var DIGIT_SCALER = [1, 256]; for (var ds = 2; ds <= DIGIT_NUM_BYTES; ds++) { DIGIT_SCALER[ds] = DIGIT_SCALER[ds - 1] * 256; } var Zero = [0]; var One = [1]; function createArray(parameter) { var i2, array = null; if (!arguments.length || typeof arguments[0] === "number") { array = new Array(parameter); for (i2 = 0; i2 < parameter; i2 += 1) { array[i2] = 0; } } else if (typeof arguments[0] === "object") { array = new Array(parameter.length); for (i2 = 0; i2 < parameter.length; i2 += 1) { array[i2] = parameter[i2]; } } return array; } function stringToDigits(numberStr, radix) { numberStr = numberStr.replace(/^\s+|\s+$/g, ""); var num = [0]; var buffer = [0]; radix = radix || 10; for (var i2 = 0; i2 < numberStr.length; i2 += 1) { var char = parseInt(numberStr[i2], radix); if (isNaN(char)) { throw new Error("Failed to convert string to integer in radix " + radix.toString()); } multiply(num, radix, buffer); add(buffer, [char], num); normalizeDigitArray(num); } return num; } function digitsToString(digits, radix) { radix = radix || 10; if (DIGIT_BASE <= radix) { throw new Error("DIGIT_BASE is smaller than RADIX; cannot convert."); } var wordLength = digits.length; var quotient = []; var remainder = []; var temp1 = []; var temp2 = []; var divisor = []; var a = []; var i2; var sb = ""; var pad = "0"; divisor[0] = radix; while (Math.floor(DIGIT_BASE / divisor[0]) >= radix) { divisor[0] = divisor[0] * radix; pad = pad.concat("0"); } for (i2 = 0; i2 < wordLength; i2 += 1) { a[i2] = digits[i2]; } do { var allZeros = true; for (i2 = 0; i2 < a.length; i2 += 1) { if (a[i2] !== 0) { allZeros = false; break; } } if (allZeros) { break; } divRem(a, divisor, quotient, remainder, temp1, temp2); normalizeDigitArray(quotient, a.length, true); var newDigits = remainder[0].toString(radix); sb = pad.substring(0, pad.length - newDigits.length) + newDigits + sb; var swap = a; a = quotient; quotient = swap; } while (true); while (sb.length !== 0 && sb[0] === "0") { sb = sb.substring(1, sb.length); } if (sb.length === 0) { sb = "0"; } return sb; } function computeBitArray(bytes) { var out = createArray(bytes.length * 8); var bitLength = 0; var i2 = bytes.length - 1; while (i2 >= 0) { var j = 0; while (j < 8) { var mask = 1 << j; var bit = (bytes[i2] & mask) === mask ? 1 : 0; var thisBitIndex = 8 * (bytes.length - i2 - 1) + j; if (bit === 1) { bitLength = thisBitIndex + 1; } out[thisBitIndex] = bit; j += 1; } i2--; } return out.slice(0, bitLength); } function bitScanForward(digit) { var index = 0; for (var i2 = 0; i2 < DIGIT_BITS; i2++) { index = Math.max(index, -(digit >>> i2 & 1) & i2); } return index; } function highestSetBit(bytes) { var i2 = 0; var bitLength = 0; while (i2 < bytes.length) { if (bitLength === 0) { var j = 7; while (j >= 0 && bitLength === 0) { var mask = 1 << j; if ((bytes[i2] & mask) === mask) { bitLength = j + 1; } j--; } } else { bitLength += 8; } i2 += 1; } return bitLength; } function fixedWindowRecode(digits, windowSize, t) { digits = digits.slice(); var recodedDigits = [], windowSizeBits = Math.pow(2, windowSize), windowSizeMinus1Bits = Math.pow(2, windowSize - 1); for (var i2 = 0; i2 < t; i2++) { recodedDigits[i2] = digits[0] % windowSizeBits - windowSizeMinus1Bits; digits[0] = digits[0] - recodedDigits[i2]; cryptoMath.shiftRight(digits, digits, windowSize - 1); } recodedDigits[i2] = digits[0]; return recodedDigits; } function fixedWindowRecode2(digits, windowSize) { var digLen = digits.length, bits = new Array(digLen * DIGIT_BITS), i2 = 0, j = 0, k = 0, r = 0, dig, result = new Array(Math.ceil(digLen * DIGIT_BITS / windowSize)); for (k = 0, result[0] = 0; i2 < digLen; i2++) { for (j = 0, dig = digits[i2]; j < DIGIT_BITS; j++, dig >>>= 1) { if (k === windowSize) { result[++r] = 0; k = 0; } result[r] += (dig & 1) << k++; } } return result; } function fetchBits(digits, startBit, count) { var startDigit = Math.floor(startBit / cryptoMath.DIGIT_BITS); var endDigit = startDigit + 1; var shiftRight2 = startBit % cryptoMath.DIGIT_BITS; var shiftLeft2 = cryptoMath.DIGIT_BITS - shiftRight2; var bits = digits[startDigit] >>> shiftRight2 | digits[endDigit] << shiftLeft2; return bits & cryptoMath.DIGIT_MASK >>> cryptoMath.DIGIT_BITS - count; } function fetchBits2(digits, startBit, count) { var startDigit = Math.floor(startBit / DIGIT_BITS), shiftRight2 = startBit % DIGIT_BITS; return digits[startDigit] >>> shiftRight2 | digits[startDigit + 1] << DIGIT_BITS - shiftRight2 & DIGIT_MASK >>> DIGIT_BITS - count; } function copyArray(source, sourceIndex, destination, destIndex, length) { while (length-- > 0) { destination[destIndex + length] = source[sourceIndex + length]; } } function isZero(array) { var i2, result = 0; for (i2 = 0; i2 < array.length; i2 += 1) { result = result | array[i2]; } return !result; } function isEven(array) { return (array[0] & 1) === 0; } function sequenceEqual(left, right) { var equal = left.length === right.length; for (var i2 = 0; i2 < Math.min(left.length, right.length); i2 += 1) { if (left[i2] !== right[i2]) { equal = false; } } return equal; } function bytesToDigits(bytes) { var arrayLength = Math.floor((bytes.length + DIGIT_NUM_BYTES - 1) / DIGIT_NUM_BYTES); var array = new Array(arrayLength); array[0] = 0; var digit = 0, index = 0, scIndex = 0; for (var i2 = bytes.length - 1; i2 >= 0; i2--) { digit = digit + DIGIT_SCALER[scIndex++] * (bytes[i2] & 255); if (DIGIT_SCALER[scIndex] === DIGIT_BASE) { scIndex = 0; array[index++] = digit; digit = 0; } } if (digit !== 0) { array[index] = digit; } while (array[--arrayLength] == null) { array[arrayLength] = 0; } return array; } function digitsToBytes(digits, trim, minTrimLength) { var i2, j, byte1; var bytes = [0]; if (typeof trim === "undefined") { trim = true; } for (i2 = 0; i2 < digits.length; i2 += 1) { byte1 = digits[i2]; for (j = 0; j < DIGIT_NUM_BYTES; j += 1) { bytes[i2 * DIGIT_NUM_BYTES + j] = byte1 & 255; byte1 = Math.floor(byte1 / 256); } } bytes.reverse(); if (minTrimLength === void 0) { minTrimLength = 1; } if (trim) { while (bytes.length > minTrimLength && bytes[0] === 0) { bytes.shift(); } } return bytes; } function intToDigits(value, numDigits) { if (typeof numDigits === "undefined") { if (value <= 1) { numDigits = 1; } else { var numBits = Math.log(value) / Math.LN2; numDigits = Math.ceil(numBits / DIGIT_BITS); } } var digitRepresentation = []; while (value > 0) { digitRepresentation.push(value % DIGIT_BASE); value = Math.floor(value / DIGIT_BASE); } while (digitRepresentation.length < numDigits) { digitRepresentation.push(0); } return digitRepresentation; } function mswIndex(digits) { for (var i2 = digits.length - 1; i2 >= 0; i2--) { if (digits[i2] !== void 0 && digits[i2] !== 0) { return i2; } } return digits[0] === 0 ? -1 : 0; } function compareDigits(left, right) { var result = 0, val, i2; for (i2 = 0; i2 < Math.max(left.length, right.length); i2++) { val = ~~left[i2] - ~~right[i2]; result = val + (result & -!val); } return result; } function normalizeDigitArray(digits, length, pad) { var i2 = mswIndex(digits); digits.length = length || i2 + 1; if (pad) { while (++i2 < digits.length) { digits[i2] = 0; } } if (digits.length <= 0) { digits[0] = 0; digits.length = 1; } return digits; } function shiftRight(source, destination, bits, length) { if (bits === void 0) { bits = 1; } else if (bits >= DIGIT_BITS || bits < 0) { throw new Error("Invalid bit count for shiftRight"); } if (length === void 0) { length = source.length; } var n = length - 1; var leftShiftBitCount = DIGIT_BITS - bits; for (var i2 = 0; i2 < n; i2++) { destination[i2] = (source[i2 + 1] << leftShiftBitCount | source[i2] >>> bits) & DIGIT_MASK; } destination[n] = source[n] >>> bits; } function shiftLeft(source, destination, bits, length) { if (bits === void 0) { bits = 1; } else if (bits >= DIGIT_BITS || bits < 0) { throw new Error("bit count must be smaller than DIGIT_BITS and positive in shiftLeft"); } if (length === void 0) { length = source.length; } var rightShiftBitCount = DIGIT_BITS - bits; destination[length] = source[length - 1] >>> DIGIT_BITS - bits || destination[length]; for (var i2 = length - 1; i2 > 0; i2--) { destination[i2] = (source[i2] << bits | source[i2 - 1] >>> rightShiftBitCount) & DIGIT_MASK; } destination[0] = source[0] << bits & DIGIT_MASK; } function add(addend1, addend2, sum) { var shortArray = addend1; var longArray = addend2; if (addend2.length < addend1.length) { shortArray = addend2; longArray = addend1; } var s = shortArray.length; var carry = 0; var i2; for (i2 = 0; i2 < s; i2 += 1) { carry += shortArray[i2] + longArray[i2]; sum[i2] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } for (i2 = s; i2 < longArray.length; i2 += 1) { carry += longArray[i2]; sum[i2] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } sum.length = longArray.length; if (carry !== 0) { sum[i2] = carry & DIGIT_MASK; } return carry; } function subtract(minuend, subtrahend, difference) { var s = subtrahend.length; if (minuend.length < subtrahend.length) { s = mswIndex(subtrahend) + 1; if (minuend.length < s) { throw new Error("Subtrahend is longer than minuend, not supported."); } } var i2, carry = 0; for (i2 = 0; i2 < s; i2 += 1) { carry += minuend[i2] - subtrahend[i2]; difference[i2] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } while (i2 < minuend.length) { carry += minuend[i2]; difference[i2++] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } return carry; } function multiply(a, b, p) { b = typeof b === "number" ? [b] : b; var i2, j, k, l, c, t1, t2, alen = a.length, blen = b.length, bi; for (i2 = 0; i2 < alen + blen; i2 += 1) { p[i2] = 0; } i2 = 0; l = 0; var maxRounds = 31; var ks = 0; while (i2 < blen) { l = Math.min(l + maxRounds, blen); for (; i2 < l; i2++) { bi = b[i2]; for (j = 0; j < alen; j++) { p[i2 + j] += a[j] * bi; } } c = 0; for (k = ks; k < i2 + alen; k++) { t1 = p[k] + c; t2 = t1 & DIGIT_MASK; p[k] = t2; c = (t1 - t2) * DIG_INV; } p[k] = c; ks += maxRounds; } p.length = alen + blen; return p; } function divRem(dividend, divisor, quotient, remainder, temp1, temp2) { var m = mswIndex(dividend) + 1; var n = mswIndex(divisor) + 1; var qhat, rhat, carry, p, t, i2, j; if (m < n) { copyArray(dividend, 0, remainder, 0, dividend.length); remainder.length = dividend.length; normalizeDigitArray(remainder); quotient[0] = 0; quotient.length = 1; return; } else if (n === 0 || n === 1 && divisor[n - 1] === 0) { throw new Error("Division by zero."); } else if (n === 1) { t = divisor[0]; rhat = 0; for (j = m - 1; j >= 0; j--) { p = rhat * DIGIT_BASE + dividend[j]; quotient[j] = p / t & DIGIT_MASK; rhat = p - quotient[j] * t & DIGIT_MASK; } quotient.length = m; normalizeDigitArray(quotient); remainder[0] = rhat; remainder.length = 1; return; } var s = DIGIT_BITS - 1 - bitScanForward(divisor[n - 1]); var vn = temp1 || []; vn.length = n; shiftLeft(divisor, vn, s, n); var un = temp2 || []; un.length = m; shiftLeft(dividend, un, s, m); un[m] = un[m] || 0; quotient.length = m - n + 1; remainder.length = n; for (j = m - n; j >= 0; j--) { qhat = Math.floor((un[j + n] * DIGIT_BASE + un[j + n - 1]) / vn[n - 1]); rhat = un[j + n] * DIGIT_BASE + un[j + n - 1] - qhat * vn[n - 1]; while (true) { if (qhat >= DIGIT_BASE || qhat * vn[n - 2] > rhat * DIGIT_BASE + un[j + n - 2]) { qhat = qhat - 1; rhat = rhat + vn[n - 1]; if (rhat < DIGIT_BASE) { continue; } } break; } carry = 0; for (i2 = 0; i2 < n; i2++) { p = qhat * vn[i2]; t = un[i2 + j] - carry - (p & DIGIT_MASK); un[i2 + j] = t & DIGIT_MASK; carry = Math.floor(p / DIGIT_BASE) - Math.floor(t / DIGIT_BASE); } t = un[j + n] - carry; un[j + n] = t & DIGIT_MASK; quotient[j] = qhat & DIGIT_MASK; if (t < 0) { quotient[j] = quotient[j] - 1; carry = 0; for (i2 = 0; i2 < n; i2++) { t = un[i2 + j] + vn[i2] + carry; un[i2 + j] = t & DIGIT_MASK; carry = t >> DIGIT_BITS; } un[j + n] = un[j + n] + carry & DIGIT_MASK; } } for (i2 = 0; i2 < n; i2++) { remainder[i2] = (un[i2] >>> s | un[i2 + 1] << DIGIT_BITS - s) & DIGIT_MASK; } normalizeDigitArray(quotient); normalizeDigitArray(remainder); } function reduce(number, modulus, remainder, temp1, temp2) { var quotient = []; divRem(number, modulus, quotient, remainder, temp1, temp2); return remainder; } function modMul(multiplicand, multiplier, modulus, product, temp1, temp2) { var quotient = []; multiply(multiplicand, multiplier, quotient); divRem(quotient, modulus, quotient, product, temp1, temp2); return product; } function eea(a, b, upp, vpp, rpp) { var rp; if (isZero(a)) { copyArray(b, 0, rpp, 0, b.length); rpp.length = b.length; return 0; } else if (isZero(b)) { copyArray(a, 0, rpp, 0, a.length); rpp.length = a.length; return 0; } else if (compareDigits(a, b) < 0) { rp = a.slice(0); copyArray(b, 0, rpp, 0, b.length); rpp.length = b.length; } else { rp = b.slice(0); copyArray(a, 0, rpp, 0, a.length); rpp.length = a.length; } normalizeDigitArray(rpp); normalizeDigitArray(rp); var q = new Array(rpp.length); var r = new Array(rpp.length); var v = new Array(rpp.length); var vppPresent = vpp !== void 0; var vp; if (vppPresent) { vp = new Array(rpp.length); vp[0] = 1; vp.length = 1; vpp[0] = 0; vpp.length = 1; } var up; var u = new Array(rpp.length); var uppPresent = upp !== void 0; if (uppPresent) { up = new Array(rpp.length); up[0] = 0; up.length = 1; upp[0] = 1; upp.length = 1; } var k = -1; var upp_out = upp; var vpp_out = vpp; var rpp_out = rpp; var save; while (!isZero(rp)) { divRem(rpp, rp, q, r, u, v); if (uppPresent) { multiply(q, up, u); add(u, upp, u); normalizeDigitArray(u); save = upp; upp = up; up = u; u = save; } if (vppPresent) { multiply(q, vp, v); add(v, vpp, v); normalizeDigitArray(v); save = vpp; vpp = vp; vp = v; v = save; } save = rpp; rpp = rp; rp = r; r = save; k++; } if (uppPresent) { copyArray(upp, 0, upp_out, 0, upp.length); upp_out.length = upp.length; } if (vppPresent) { copyArray(vpp, 0, vpp_out, 0, vpp.length); vpp_out.length = vpp.length; } copyArray(rpp, 0, rpp_out, 0, rpp.length); rpp_out.length = rpp.length; return k; } function gcd(a, b, output) { var aa = a; var bb = b; if (compareDigits(a, b) > 0) { aa = b; bb = a; } eea(aa, bb, void 0, void 0, output); return normalizeDigitArray(output); } function modInv(a, n, aInv, pad) { var upp = new Array(n.length); var vpp = new Array(n.length); var rpp = new Array(n.length); var k = eea(a, n, vpp, upp, rpp); aInv = aInv || []; if (compareDigits(rpp, One) !== 0) { aInv[0] = NaN; aInv.length = 1; } else { if ((k & 1) === 1) { subtract(n, upp, aInv); } else { copyArray(upp, 0, aInv, 0, upp.length); aInv.length = upp.length; } if (pad) { normalizeDigitArray(aInv, n.length, true); } else { normalizeDigitArray(aInv); } } return aInv; } function modInvCT(a, n, aInv, pad) { var nMinus2 = []; aInv = aInv || []; subtract(n, [2], nMinus2); modExp(a, nMinus2, n, aInv); normalizeDigitArray(aInv); return aInv; } function modExp(base, exponent, modulus, result) { result = result || []; if (compareDigits(exponent, Zero) === 0) { result[0] = 1; } else if (compareDigits(exponent, One) === 0) { copyArray(base, 0, result, 0, base.length); result.length = base.length; } else { var montmul = new MontgomeryMultiplier(modulus); normalizeDigitArray(base, montmul.s, true); montmul.modExp(base, exponent, result); result.length = modulus.length; } return result; } function MontgomeryMultiplier(modulus, context) { function computeM0Prime(m02) { var m0Pr = 1; var a = 2; var b = 3; var c = b & m02; for (var i2 = 2; i2 <= DIGIT_BITS; i2 += 1) { if (a < c) { m0Pr += a; } a = a << 1; b = b << 1 | 1; c = m02 * m0Pr & b; } var result = (~m0Pr & DIGIT_MASK) + 1; return result; } function montgomeryReduction(t, m2, result) { var m02 = m2[0]; var mPrime2 = computeM0Prime(m02); var n = m2.length; var A = t.slice(0); var ui = []; var uimbi = []; var uim = []; var bi = [1]; for (var i2 = 0; i2 < n; i2++) { ui = A[i2] * mPrime2 % DIGIT_BASE; multiply(m2, [ui], uim); multiply(uim, bi, uimbi); add(A, uimbi, A); bi.unshift(0); } A = A.slice(n); for (i2 = 0; i2 < A.length; i2++) { result[i2] = A[i2]; } } function montgomeryMultiply(multiplicand, multiplier, result, ctx) { ctx = ctx || this; var m2 = ctx.m, s2 = m2.length, mPrime2 = ctx.mPrime, m02 = ctx.m0, rightI, r0, q, i2 = 0, j, jm1, t1, t2, carry, rounds = 0; var temp = createArray(s2 + 2); while (i2 < s2) { rounds = Math.min(s2, rounds + 16); for (; i2 < rounds; ) { rightI = ~~multiplier[i2]; r0 = temp[0] + multiplicand[0] * rightI; q = (r0 & DIGIT_MASK) * mPrime2 & DIGIT_MASK; temp[1] += (m02 * q + r0) * DIG_INV | 0; for (j = 1, jm1 = 0; j < s2; jm1 = j, j += 1) { temp[jm1] = temp[j] + m2[j] * q + multiplicand[j] * rightI; } temp[jm1] = temp[j]; temp[j] = 0; i2++; } carry = 0; for (j = 0; j < s2; j++) { t1 = temp[j] + carry; t2 = t1 & DIGIT_MASK; temp[j] = t2; carry = (t1 - t2) * DIG_INV; } temp[j] = carry; } for (i2 = 0; i2 < s2; i2 += 1) { result[i2] = temp[i2]; } result.length = s2; var needSubtract = +(cryptoMath.compareDigits(temp, m2) > 0); cryptoMath.subtract(result, m2, ctx.temp2); ctSetArray(needSubtract, result, ctx.temp2); return; } function convertToMontgomeryForm(digits) { if (digits.length < this.s) { digits.length = this.s; for (var i2 = 0; i2 < this.s; i2++) { digits[i2] = isNaN(digits[i2]) ? 0 : digits[i2]; } } var result = createArray(digits.length); this.montgomeryMultiply(digits, this.rSquaredModm, result); for (i2 = 0; i2 < this.s; i2 += 1) { digits[i2] = result[i2]; } } function convertToStandardForm(digits) { this.montgomeryMultiply(digits, this.one, this.temp1); for (var i2 = 0; i2 < this.s; i2 += 1) { digits[i2] = this.temp1[i2]; } } function optimalWindowSize(length) { var i2 = 2, t1, t0, bits = length * DIGIT_BITS; t0 = 4 + Math.ceil(bits / 2) * 3 + 1; do { i2++; t1 = t0; t0 = Math.pow(2, i2) + Math.ceil(bits / i2) * (i2 + 1) + 1; } while (t0 < t1); return i2 - 1; } function modExp2(base, exponent, result, skipSideChannel) { skipSideChannel = !!skipSideChannel; var windowBits = optimalWindowSize(exponent.length); var i2, j, expBits = fixedWindowRecode2(exponent, windowBits).reverse(), partialResult = this.rModM.slice(0), baseTableLen = Math.pow(2, windowBits), bt = baseTable; bt.length = baseTableLen; bt[0] = this.rModM; for (i2 = 1; i2 < baseTableLen; i2++) { bt[i2] = []; multiply(bt[i2 - 1], base, bt[i2]); this.reduce(bt[i2]); } var tableVal = []; var exp; for (i2 = 0; i2 < expBits.length; i2++) { for (j = 0; j < windowBits; j++) { this.montgomeryMultiply(partialResult, partialResult, partialResult); } exp = expBits[i2]; skipSideChannel ? tableVal = bt[exp] : getTableEntry(bt, exp, tableVal); this.montgomeryMultiply(partialResult, tableVal, partialResult); } this.montgomeryMultiply(partialResult, this.one, result); return result; } function getTableEntry(bt, exp, tableVal) { var z, t, mask, tableEntry, k; for (z = 0; z < bt[0].length; z++) { tableVal[z] = 0; } for (t = 0; t < bt.length; t++) { tableEntry = bt[t]; mask = -(exp === t); for (k = 0; k < tableEntry.length; k++) { tableVal[k] = tableVal[k] | tableEntry[k] & mask; } } } function ctSetArray(condition, a, b) { var bMask = -condition; var aMask = ~bMask; for (var i2 = 0; i2 < a.length; i2++) { a[i2] = a[i2] & aMask | b[i2] & bMask; } } function reduce2(x, result) { var k = this.m.length, q1, q2, q3, r1, r2, i2, needSubtract, temp = []; result = result || x; q1 = x.slice(k - 1); q2 = []; multiply(q1, this.mu, q2); q3 = q2.slice(k + 1); r1 = x.slice(0, k + 1); r2 = []; multiply(q3, m, r2); r2 = r2.slice(0, k + 1); r1[k + 1] = compareDigits(r1, r2) >>> 31; for (i2 = 0; i2 < result.length; i2++) { result[i2] = 0; } subtract(r1, r2, result); needSubtract = +(compareDigits(result, m) > 0); cryptoMath.subtract(result, m, temp); ctSetArray(needSubtract, result, temp); normalizeDigitArray(result); return; } function computeContext(modulus2) { var s2 = modulus2.length; var m02 = modulus2[0]; var ctx = { m: modulus2, mPrime: computeM0Prime(m02), m0: m02, temp1: createArray(2 * s2 + 1), temp2: createArray(2 * s2 + 1) }; var R = createArray(modulus2.length * 2); R[R.length] = 1; ctx.mu = []; divRem(R, modulus2, ctx.mu, []); var quotient = createArray(2 * s2 + 1); var rRemainder = createArray(s2 + 1); var temp12 = createArray(2 * s2 + 1); var temp22 = createArray(2 * s2 + 1); var rDigits = rRemainder; rDigits[s2] = 1; divRem(rDigits, modulus2, quotient, rRemainder, temp12, temp22); ctx.rModM = normalizeDigitArray(rRemainder, s2, true); var rSquaredModm2 = createArray(2 * s2 + 1); var rSquaredDigits = rSquaredModm2; rSquaredDigits[s2 * 2] = 1; divRem(rSquaredDigits, modulus2, quotient, rSquaredModm2, temp12, temp22); ctx.rSquaredModm = normalizeDigitArray(rSquaredModm2, s2, true); ctx.rCubedModm = createArray(s2); montgomeryMultiply(rSquaredModm2, rSquaredModm2, ctx.rCubedModm, ctx); return ctx; } context = context || computeContext(modulus); var m = context.m; var mu = context.mu; var m0 = context.m0; var s = m.length; var zeros = createArray(s + 1); var one = zeros.slice(0, s); one[0] = 1; var mPrime = context.mPrime; var rModM = context.rModM; var rSquaredModm = context.rSquaredModm; var rCubedModm = context.rCubedModm; var temp1 = createArray(2 * s + 1); var temp2 = createArray(2 * s + 1); var baseTable = new Array(4); baseTable[0] = rModM; baseTable[1] = new Array(s); baseTable[2] = new Array(s); baseTable[3] = new Array(s); return { m, m0, mPrime, mu, rSquaredModm, s, rModM, rCubedModm, one, temp1, temp2, convertToMontgomeryForm, convertToStandardForm, montgomeryMultiply, modExp: modExp2, reduce: reduce2, ctx: context }; } function IntegerGroup(modulusBytes) { var m_modulus = bytesToDigits(modulusBytes); var m_digitWidth = m_modulus.length; var m_zero = intToDigits(0, m_digitWidth); var m_one = intToDigits(1, m_digitWidth); var temp0 = createArray(m_digitWidth); var temp1 = createArray(m_digitWidth); var montmul = new MontgomeryMultiplier(m_modulus); function createElementFromBytes(bytes) { var digits = bytesToDigits(bytes); if (cryptoMath.compareDigits(digits, this.m_modulus) >= 0) { throw new Error("The number provided is not an element of this group"); } normalizeDigitArray(digits, this.m_digitWidth, true); return integerGroupElement(digits, this); } function createElementFromInteger(integer) { var digits = intToDigits(integer, this.m_digitWidth); return integerGroupElement(digits, this); } function createElementFromDigits(digits) { cryptoMath.normalizeDigitArray(digits, this.m_digitWidth, true); return integerGroupElement(digits, this); } function equals(otherGroup) { return compareDigits(this.m_modulus, otherGroup.m_modulus) === 0; } function add2(addend1, addend2, sum) { var i2; var s = this.m_digitWidth; var result = sum.m_digits; cryptoMath.add(addend1.m_digits, addend2.m_digits, result); var mask = (compareDigits(result, this.m_modulus) >>> 31) - 1 & DIGIT_MASK; var carry = 0; for (i2 = 0; i2 < s; i2 += 1) { carry = result[i2] - (this.m_modulus[i2] & mask) + carry; result[i2] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } result.length = s; } function subtract2(leftElement, rightElement, outputElement) { var i2, s = this.m_digitWidth; var result = outputElement.m_digits; var carry = cryptoMath.subtract(leftElement.m_digits, rightElement.m_digits, outputElement.m_digits); if (carry === -1) { carry = 0; for (i2 = 0; i2 < s; i2 += 1) { carry += result[i2] + this.m_modulus[i2]; result[i2] = carry & DIGIT_MASK; carry = carry >> DIGIT_BITS; } } } function inverse(element, outputElement) { cryptoMath.modInv(element.m_digits, this.m_modulus, outputElement.m_digits); } function multiply2(multiplicand, multiplier, product) { return cryptoMath.modMul( multiplicand.m_digits, multiplier.m_digits, this.m_modulus, product.m_digits, temp0, temp1 ); } function modexp(valueElement, exponent, outputElement) { outputElement = outputElement || integerGroupElement([], this); if (compareDigits(exponent, m_zero) === 0) { outputElement.m_digits = intToDigits(1, this.m_digitWidth); } else if (compareDigits(exponent, m_one) === 0) { for (var i2 = 0; i2 < valueElement.m_digits.length; i2++) { outputElement.m_digits[i2] = valueElement.m_digits[i2]; } outputElement.m_digits.length = valueElement.m_digits.length; } else { this.montmul.modExp(valueElement.m_digits, exponent, outputElement.m_digits); outputElement.m_digits.length = this.montmul.s; } return outputElement; } function integerGroupElement(digits, group) { return { m_digits: digits, m_group: group, equals: function(element) { return compareDigits(this.m_digits, element.m_digits) === 0 && this.m_group.equals(this.m_group, element.m_group); } }; } return { m_modulus, m_digitWidth, montmul, createElementFromInteger, createElementFromBytes, createElementFromDigits, equals, add: add2, subtract: subtract2, multiply: multiply2, inverse, modexp }; } return { DIGIT_BITS, DIGIT_NUM_BYTES, DIGIT_MASK, DIGIT_BASE, DIGIT_MAX, Zero, One, normalizeDigitArray, bytesToDigits, stringToDigits, digitsToString, intToDigits, digitsToBytes, isZero, isEven, shiftRight, shiftLeft, compareDigits, bitLength: highestSetBit, fixedWindowRecode, IntegerGroup, add, subtract, multiply, divRem, reduce, modInv, modInvCT, modExp, modMul, MontgomeryMultiplier, gcd, sequenceEqual, swapEndianness: function(bytes) { return bytes.reverse(); }, computeBitArray }; } var cryptoMath = cryptoMath || msrcryptoMath(); function MsrcryptoECC() { var btd = cryptoMath.bytesToDigits; function createArray(parameter) { var i2, array = null; if (!arguments.length || typeof arguments[0] === "number") { array = []; for (i2 = 0; i2 < parameter; i2 += 1) { array[i2] = 0; } } else if (typeof arguments[0] === "object") { array = []; for (i2 = 0; i2 < parameter.length; i2 += 1) { array[i2] = parameter[i2]; } } return array; } var EllipticCurveFp = function(p1, a1, b1, order, gx, gy) { var fieldStorageBitLength = p1.length; var generator = EllipticCurvePointFp(this, false, gx, gy, null, false); return { p: p1, a: a1, b: b1, order, generator, allocatePointStorage: function() { return EllipticCurvePointFp( this, false, cryptoMath.intToDigits(0, fieldStorageBitLength), cryptoMath.intToDigits(0, fieldStorageBitLength) ); }, createPointAtInfinity: function() { return EllipticCurvePointFp( this, true, cryptoMath.intToDigits(0, fieldStorageBitLength), cryptoMath.intToDigits(0, fieldStorageBitLength) ); } }; }; var createWeierstrassCurve = function(curveData) { var newCurve = new EllipticCurveFp( btd(curveData.p), btd(curveData.a), btd(curveData.b), btd(curveData.order), btd(curveData.gx), btd(curveData.gy) ); newCurve.type = curveData.type; newCurve.name = curveData.name; newCurve.generator.curve = newCurve; return newCurve; }; var createTedCurve = function(curveData) { var newCurve = new EllipticCurveFp( btd(curveData.p), btd(curveData.a), btd(curveData.d), btd(curveData.order), btd(curveData.gx), btd(curveData.gy) ); newCurve.type = curveData.type; if (newCurve.type === 1) { newCurve.d = newCurve.b.slice(); delete newCurve.b; } newCurve.rbits = curveData.info[2]; newCurve.name = curveData.name; newCurve.generator.curve = newCurve; return newCurve; }; var EllipticCurvePointFp = function(curve, isInfinity, x, y, z, isInMontgomeryForm) { var returnObj; if (typeof z === "undefined") { z = null; } if (typeof isInMontgomeryForm === "undefined") { isInMontgomeryForm = false; } function equals(ellipticCurvePointFp) { if (!ellipticCurvePointFp) { return false; } if (returnObj.isInfinity && ellipticCurvePointFp.isInfinity) { return true; } if (returnObj.z === null && ellipticCurvePointFp.z !== null) { return false; } if (returnObj.z !== null && ellipticCurvePointFp.z === null) { return false; } if (returnObj.z === null) { return cryptoMath.compareDigits(returnObj.x, ellipticCurvePointFp.x) === 0 && cryptoMath.compareDigits(returnObj.y, ellipticCurvePointFp.y) === 0 && returnObj.isInMontgomeryForm === ellipticCurvePointFp.isInMontgomeryForm; } return cryptoMath.compareDigits(returnObj.x, ellipticCurvePointFp.x) === 0 && cryptoMath.compareDigits(returnObj.y, ellipticCurvePointFp.y) === 0 && cryptoMath.compareDigits(returnObj.z, ellipticCurvePointFp.z) === 0 && returnObj.isInMontgomeryForm === ellipticCurvePointFp.isInMontgomeryForm; } function copyTo(source, destination) { destination.curve = source.curve; destination.x = source.x.slice(); destination.y = source.y.slice(); if (source.z !== null) { destination.z = source.z.slice(); } else { destination.z = null; } setterSupport || (destination.isAffine = source.isAffine); destination.isInMontgomeryForm = source.isInMontgomeryForm; destination.isInfinity = source.isInfinity; if (!destination.equals(source)) { throw new Error("Instances should be equal."); } } function clone() { var clonePoint = EllipticCurvePointFp( returnObj.curve, returnObj.isInfinity, createArray(returnObj.x), createArray(returnObj.y), returnObj.z ? createArray(returnObj.z) : null, returnObj.isInMontgomeryForm ); returnObj.ta && (clonePoint.ta = createArray(returnObj.ta)); returnObj.tb && (clonePoint.tb = createArray(returnObj.tb)); return clonePoint; } returnObj = { equals: function(ellipticCurvePointFp) { return equals(ellipticCurvePointFp); }, copy: function(destination) { copyTo(this, destination); return; }, clone: function() { return clone(); } }; createProperty( returnObj, "curve", curve, function() { return curve; }, function(val) { curve = val; } ); createProperty( returnObj, "x", x, function() { return x; }, function(val) { x = val; } ); createProperty( returnObj, "y", y, function() { return y; }, function(val) { y = val; } ); createProperty( returnObj, "z", z, function() { return z; }, function(val) { z = val; } ); createProperty( returnObj, "isInMontgomeryForm", isInMontgomeryForm, function() { return isInMontgomeryForm; }, function(val) { isInMontgomeryForm = val; } ); createProperty( returnObj, "isInfinity", isInfinity, function() { return isInfinity; }, function(val) { isInfinity = val; } ); createProperty(returnObj, "isAffine", z === null, function() { return z === null; }); return returnObj; }; var EllipticCurveOperatorFp = function(curve) { var m_curve = curve; var tedCurve = curve.type === 1; var fieldElementWidth = curve.p.length; var montgomeryMultiplier = cryptoMath.MontgomeryMultiplier(curve.p); var montgomerizedA = curve.a.slice(); montgomeryMultiplier.convertToMontgomeryForm(montgomerizedA); var aequalsZero = cryptoMath.isZero(curve.a); var one = cryptoMath.One; var onemontgomery = createArray(fieldElementWidth); onemontgomery[0] = 1; montgomeryMultiplier.convertToMontgomeryForm(onemontgomery); var group = cryptoMath.IntegerGroup(cryptoMath.digitsToBytes(montgomeryMultiplier.m), true); var temp0 = createArray(fieldElementWidth); var temp1 = createArray(fieldElementWidth); var temp2 = createArray(fieldElementWidth); var temp3 = createArray(fieldElementWidth); var temp4 = createArray(fieldElementWidth); var temp5 = createArray(fieldElementWidth); var temp6 = createArray(fieldElementWidth); var temp7 = createArray(fieldElementWidth); var swap0 = createArray(fieldElementWidth); var conversionTemp0 = createArray(fieldElementWidth); var conversionTemp1 = createArray(fieldElementWidth); var conversionTemp2 = createArray(fieldElementWidth); function modSub(left, right, result) { var resultElement = group.createElementFromInteger(0); resultElement.m_digits = result; group.subtract(group.createElementFromDigits(left), group.createElementFromDigits(right), resultElement); } function modAdd(left, right, result) { var resultElement = group.createElementFromInteger(0); resultElement.m_digits = result; group.add(group.createElementFromDigits(left), group.createElementFromDigits(right), resultElement); } function modInv(number, result) { cryptoMath.modInv(number, m_curve.p, result); } function modDivByTwo(dividend, result) { var s = dividend.length; var modulus = curve.p; if ((dividend[0] & 1) === 1) { var carry = 0; for (var i2 = 0; i2 < s; i2 += 1) { carry += dividend[i2] + modulus[i2]; result[i2] = carry & cryptoMath.DIGIT_MASK; carry = carry >>> cryptoMath.DIGIT_BITS; } carry = carry << cryptoMath.DIGIT_BITS - 1; cryptoMath.shiftRight(result, result); result[s - 1] |= carry; } else { cryptoMath.shiftRight(dividend, result); } } function montgomeryMultiply(left, right, result) { montgomeryMultiplier.montgomeryMultiply(left, right, result); } function montgomerySquare(left, result) { montgomeryMultiplier.montgomeryMultiply(left, left, result); } function correctInversion(digits) { var results = createArray(digits.length); montgomeryMultiply(digits, montgomeryMultiplier.rCubedModm, results); for (var i2 = 0; i2 < results.length; i2 += 1) { digits[i2] = results[i2]; } } function doubleAequalsNeg3(point, outputPoint) { if (point.isInfinity) { outputPoint.isInfinity = true; return; } montgomerySquare(point.z, temp1); montgomeryMultiply(point.z, point.y, temp4); modAdd(point.x, temp1, temp2); modSub(point.x, temp1, temp1); outputPoint.z = temp4.slice(); montgomeryMultiply(temp1, temp2, temp3); modDivByTwo(temp3, temp2); modAdd(temp3, temp2, temp1); montgomerySquare(point.y, temp2); montgomerySquare(temp1, temp4); montgomeryMultiply(point.x, temp2, temp3); modSub(temp4, temp3, temp4); modSub(temp4, temp3, outputPoint.x); modSub(temp3, outputPoint.x, temp4); montgomerySquare(temp2, temp3); montgomeryMultiply(temp1, temp4, temp2); modSub(temp2, temp3, outputPoint.y); outputPoint.isInfinity = false; outputPoint.isInMontgomeryForm = true; } function doubleAequals0(point, outputPoint) { if (point.isInfinity) { outputPoint.isInfinity = true; return; } montgomerySquare(point.y, temp3); montgomerySquare(point.x, temp4); modAdd(temp4, temp4, temp0); modAdd(temp0, temp4, temp4); montgomeryMultiply(point.x, temp3, temp5); montgomerySquare(temp3, temp0); modDivByTwo(temp4, temp1); montgomerySquare(temp1, temp3); montgomeryMultiply(point.y, point.z, swap0); for (var i2 = 0; i2 < swap0.length; i2 += 1) { outputPoint.z[i2] = swap0[i2]; } modSub(temp3, temp5, outputPoint.x); modSub(outputPoint.x, temp5, outputPoint.x); modSub(temp5, outputPoint.x, temp4); montgomeryMultiply(temp1, temp4, temp2); modSub(temp2, temp0, outputPoint.y); outputPoint.isInfinity = false; outputPoint.isInMontgomeryForm = true; } function generatePrecomputationTable(w, generatorPoint) { var validationPoint = generatorPoint.clone(); convertToStandardForm(validationPoint); if (!validatePoint(validationPoint)) { throw new Error("Invalid Parameter"); } var pointJac = generatorPoint.clone(); convertToJacobianForm(pointJac); var tablePos = [generatorPoint.clone()]; var qJac = pointJac.clone(); var px2 = pointJac.clone(); double(pointJac, px2); convertToAffineForm(px2); var qAff; for (var i2 = 1; i2 < Math.pow(2, w - 2); i2++) { mixedAdd(qJac, px2, qJac); qAff = qJac.clone(); convertToAffineForm(qAff); tablePos[i2] = qAff; } return tablePos; } function double(point, outputPoint) { if (typeof point === "undefined") { throw new Error("point undefined"); } if (typeof outputPoint === "undefined") { throw new Error("outputPoint undefined"); } if (point.isAffine) { throw new Error("Given point was in Affine form. Use convertToJacobian() first."); } if (!point.isInMontgomeryForm) { throw new Error("Given point must be in Montgomery form. Use montgomeryize() first."); } if (aequalsZero) { doubleAequals0(point, outputPoint); } else { doubleAequalsNeg3(point, outputPoint); } } function mixedDoubleAdd(jacobianPoint, affinePoint, outputPoint) { if (jacobianPoint.isInfinity) { affinePoint.copy(outputPoint); this.convertToJacobianForm(outputPoint); return; } if (affinePoint.isInfinity) { jacobianPoint.copy(outputPoint); return; } montgomerySquare(jacobianPoint.z, temp5); montgomeryMultiply(jacobianPoint.z, temp5, temp6); montgomeryMultiply(affinePoint.x, temp5, temp4); montgomeryMultiply(affinePoint.y, temp6, temp5); modSub(temp4, jacobianPoint.x, temp1); modSub(temp5, jacobianPoint.y, temp2); if (cryptoMath.isZero(temp1)) { if (cryptoMath.isZero(temp2)) { double(jacobianPoint, outputPoint); mixedAdd(outputPoint, affinePoint, outputPoint); return; } else { outputPoint.x = jacobianPoint.x.slice(0); outputPoint.y = jacobianPoint.y.slice(0); outputPoint.z = jacobianPoint.z.slice(0); return; } } montgomerySquare(temp2, temp4); montgomerySquare(temp1, temp6); montgomeryMultiply(temp6, jacobianPoint.x, temp5); montgomeryMultiply(temp1, temp6, temp0); modSub(temp4, temp5, temp3); modSub(temp3, temp5, temp3); montgomeryMultiply(jacobianPoint.z, temp1, temp4); modSub(temp3, temp5, temp3); montgomeryMultiply(temp0, jacobianPoint.y, temp6); modSub(temp3, temp0, temp3); if (cryptoMath.isZero(temp3)) { for (i = 0; i < outputPoint.x.length; i++) { outputPoint.x[i] = 0; outputPoint.y[i] = 0; outputPoint.z[i] = 0; } outputPoint.y[0] = 1; return; } modAdd(temp6, temp6, temp1); montgomeryMultiply(temp4, temp3, outputPoint.z); montgomeryMultiply(temp2, temp3, temp4); montgomerySquare(temp3, temp0); modAdd(temp1, temp4, temp1); montgomeryMultiply(temp0, temp5, temp4); montgomerySquare(temp1, temp7); montgomeryMultiply(temp0, temp3, temp5); modSub(temp7, temp4, outputPoint.x); modSub(outputPoint.x, temp4, outputPoint.x); modSub(outputPoint.x, temp5, outputPoint.x); modSub(outputPoint.x, temp4, temp3); montgomeryMultiply(temp5, temp6, temp0); montgomeryMultiply(temp1, temp3, temp4); modSub(temp4, temp0, outputPoint.y); outputPoint.isInfinity = false; outputPoint.isInMontgomeryForm = true; } function mixedAdd(jacobianPoint, affinePoint, outputPoint) { if (jacobianPoint === null) { throw new Error("jacobianPoint"); } if (affinePoint === null) { throw new Error("affinePoint"); } if (outputPoint === null) { throw new Error("outputPoint"); } if (jacobianPoint.curve !== affinePoint.curve || jacobianPoint.curve !== outputPoint.curve) { throw new Error("All points must be from the same curve object."); } if (jacobianPoint.isAffine) { throw new Error( "Given jacobianPoint was in Affine form. Use ConvertToJacobian() before calling DoubleJacobianAddAffinePoints()." ); } if (!affinePoint.isAffine) { throw new Error( "Given affinePoint was in Jacobian form. Use ConvertToAffine() before calling DoubleJacobianAddAffinePoints()." ); } if (outputPoint.isAffine) { throw new Error( "Given jacobianPoint was in Jacobian form. Use ConvertToJacobian() before calling DoubleJacobianAddAffinePoints()." ); } if (!jacobianPoint.isInMontgomeryForm) { throw new Error("Jacobian point must be in Montgomery form"); } if (!affinePoint.isInMontgomeryForm) { throw new Error("Affine point must be in Montgomery form"); } if (jacobianPoint.isInfinity) { affinePoint.copy(outputPoint); this.convertToJacobianForm(outputPoint); return; } if (affinePoint.isInfinity) { jacobianPoint.copy(outputPoint); return; } montgomerySquare(jacobianPoint.z, temp1); montgomeryMultiply(temp1, jacobianPoint.z, temp2); montgomeryMultiply(temp1, affinePoint.x, temp3); montgomeryMultiply(temp2, affinePoint.y, temp4); modSub(temp3, jacobianPoint.x, temp1); modSub(temp4, jacobianPoint.y, temp2); var i2; for (i2 = 0; i2 < temp1.length; i2 += 1) { if (temp1[i2] !== 0) { montgomeryMultiply(jacobianPoint.z, temp1, temp0); for (var j = 0; j < fieldElementWidth; j += 1) { outputPoint.z[j] = temp0[j]; } montgomerySquare(temp1, temp3); montgomeryMultiply(temp3, temp1, temp4); montgomeryMultiply(temp3, jacobianPoint.x, temp5); modAdd(temp5, temp5, temp1); montgomerySquare(temp2, outputPoint.x); modSub(outputPoint.x, temp1, outputPoint.x); modSub(outputPoint.x, temp4, outputPoint.x); modSub(temp5, outputPoint.x, temp3); montgomeryMultiply(temp2, temp3, temp5); montgomeryMultiply(jacobianPoint.y, temp4, temp6); modSub(temp5, temp6, outputPoint.y); outputPoint.isInfinity = false; outputPoint.isInMontgomeryForm = true; return; } } for (i2 = 0; i2 < temp2.length; i2 += 1) { if (temp2[i2] !== 0) { outputPoint.isInfinity = true; outputPoint.isInMontgomeryForm = true; return; } } affinePoint.copy(outputPoint); this.convertToJacobianForm(outputPoint); this.double(outputPoint, outputPoint); outputPoint.isInMontgomeryForm = true; } function scalarMultiply(k, point, outputPoint, multiplyBy4) { if (point.isInfinity || cryptoMath.isZero(k)) { outputPoint.isInfinity = true; return; } if (cryptoMath.compareDigits(k, curve.order) >= 0) { throw new Error("The scalar k must be in the range 1 <= k < order."); } k = k.slice(); if (point.curve.type === 1) { var pointIsEP = typeof point.ta !== "undefined"; if (!pointIsEP) { convertToExtendedProjective(point); } scalarMultiplyTed(k, point, outputPoint, multiplyBy4); if (!pointIsEP) { normalizeTed(point); } } else { var pointIsMF = point.isInMontgomeryForm, outputIsMF = outputPoint.isInMontgomeryForm, outputIsAffine = outputPoint.isAffine; if (!pointIsMF) { convertToMontgomeryForm(point); } if (!outputIsMF) { convertToMontgomeryForm(outputPoint); } scalarMultiplyW(k, point, outputPoint); if (outputIsAffine) { convertToAffineForm(outputPoint); } if (!pointIsMF) { convertToStandardForm(point); } if (!outputIsMF) { convertToStandardForm(outputPoint); } } return; } function scalarMultiplyW(k, point, outputPoint) { var validationPoint = point.clone(); convertToStandardForm(validationPoint); if (!validatePoint(validationPoint)) { throw new Error("Invalid Parameters."); } var odd = k[0] & 1, tempk = []; modSub(point.curve.order, k, tempk); for (i2 = 0; i2 < k.length; i2++) { k[i2] = odd - 1 & (k[i2] ^ tempk[i2]) ^ k[i2]; } var w = fieldElementWidth <= 8 ? 5 : 6; var m = point.curve.p.length * cryptoMath.DIGIT_BITS; var t = Math.ceil(m / (w - 1)); var kDigits = cryptoMath.fixedWindowRecode(k, w, t); var Tm = generatePrecomputationTable(w, point); var position = Math.floor(Math.abs(kDigits[t]) - 1) / 2; var Q = Tm[position].clone(); convertToJacobianForm(Q); for (var i2 = t - 1; i2 >= 0; i2--) { for (var j = 0; j < w - 2; j++) { double(Q, Q); } position = Math.floor((Math.abs(kDigits[i2]) - 1) / 2); var L = tableLookupW(Tm, position); modSub(L.curve.p, L.y, tempk); var mask = -(kDigits[i2] >>> 31); for (var n = 0; n < L.y.length; n++) { L.y[n] = L.y[n] & ~mask | tempk[n] & mask; } mixedDoubleAdd(Q, L, Q); } modSub(point.curve.p, Q.y, tempk); for (i2 = 0; i2 < Q.y.length; i2++) { Q.y[i2] = odd - 1 & (Q.y[i2] ^ tempk[i2]) ^ Q.y[i2]; } Q.copy(outputPoint); return; } function tableLookupW(table, index) { var mask, L; for (var i2 = 0; i2 < table.length; i2++) { mask = +(i2 === index); L = [L, table[i2].clone()][mask]; } return L; } function tableLookupW0(table, index) { var pos = (index + 1) % table.length; for (var i2 = 0; i2 < table.length; i2++) { var L = table[pos].clone(); pos = (pos + 1) % table.length; } return L; } function negate(point, outputPoint) { if (point !== outputPoint) { point.copy(outputPoint); } modSub(point.curve.p, point.y, outputPoint.y); } function convertToMontgomeryForm(point) { if (point.isInMontgomeryForm) { throw new Error("The given point is already in Montgomery form."); } if (!point.isInfinity) { montgomeryMultiplier.convertToMontgomeryForm(point.x); montgomeryMultiplier.convertToMontgomeryForm(point.y); if (point.z !== null) { montgomeryMultiplier.convertToMontgomeryForm(point.z); } if (typeof point.ta !== "undefined") { montgomeryMultiplier.convertToMontgomeryForm(point.ta); montgomeryMultiplier.convertToMontgomeryForm(point.tb); } } point.isInMontgomeryForm = true; } function convertToStandardForm(point) { if (!point.isInMontgomeryForm) { throw new Error("The given point is not in montgomery form."); } if (!point.isInfinity) { montgomeryMultiplier.convertToStandardForm(point.x); montgomeryMultiplier.convertToStandardForm(point.y); if (point.z !== null) { montgomeryMultiplier.convertToStandardForm(point.z); } if (typeof point.ta !== "undefined") { montgomeryMultiplier.convertToStandardForm(point.ta); montgomeryMultiplier.convertToStandardForm(point.tb); } } point.isInMontgomeryForm = false; } function convertToAffineForm(point) { if (point.isInfinity) { point.z = null; setterSupport || (point.isAffine = true); return; } cryptoMath.modInv(point.z, curve.p, conversionTemp2, true); if (point.isInMontgomeryForm) { montgomeryMultiply(conversionTemp2, montgomeryMultiplier.rCubedModm, conversionTemp1); var swap = conversionTemp2; conversionTemp2 = conversionTemp1; conversionTemp1 = swap; } montgomerySquare(conversionTemp2, conversionTemp0); montgomeryMultiply(point.x, conversionTemp0, conversionTemp1); for (var i2 = 0; i2 < fieldElementWidth; i2 += 1) { point.x[i2] = conversionTemp1[i2]; } montgomeryMultiply(point.y, conversionTemp0, conversionTemp1); montgomeryMultiply(conversionTemp1, conversionTemp2, point.y); point.z = null; delete point.ta; delete point.tb; setterSupport || (point.isAffine = true); } function convertToJacobianForm(point) { if (!point.isAffine) { throw new Error("The given point is not in Affine form."); } setterSupport || (point.isAffine = false); var clonedDigits, i2, zOne = point.isInMontgomeryForm ? onemontgomery : one; clonedDigits = createArray(zOne.length); for (i2 = 0; i2 < zOne.length; i2 += 1) { clonedDigits[i2] = zOne[i2]; } point.z = clonedDigits; return; } function validatePoint(point) { if (point.isInfinity) { return false; } cryptoMath.modMul(point.y, point.y, point.curve.p, temp1); cryptoMath.modMul(point.x, point.x, point.curve.p, temp2); cryptoMath.modMul(point.x, temp2, point.curve.p, temp3); modAdd(temp3, point.curve.b, temp2); cryptoMath.modMul(point.x, point.curve.a, point.curve.p, temp3); modAdd(temp2, temp3, temp2); modSub(temp1, temp2, temp1); if (cryptoMath.isZero(temp1) === false) { return false; } return true; } function validatePointTed(point) { if (point.ta) { point = point.clone(); normalizeTed(point); } cryptoMath.modMul(point.y, point.y, point.curve.p, temp3); cryptoMath.modMul(point.x, point.x, point.curve.p, temp2); cryptoMath.add(temp2, temp3, temp1); cryptoMath.reduce(temp4, point.curve.p, temp4); cryptoMath.modMul(temp2, temp3, point.curve.p, temp4); cryptoMath.modMul(point.curve.d, temp4, point.curve.p, temp3); cryptoMath.add(temp3, [1], temp2); cryptoMath.reduce(temp2, point.curve.p, temp2); cryptoMath.subtract(temp1, temp2, temp1); if (cryptoMath.isZero(temp1) === false) { cryptoMath.reduce(temp1, point.curve.p, temp1); if (cryptoMath.isZero(temp1) === false) { return false; } } return true; } function generatePrecomputationTableTed(npoints, point) { var Q = point.clone(), P2 = Q.clone(), T = []; T[0] = convert_R1_to_R2(point); doubleTed(Q, Q); P2 = convert_R1_to_R2(Q); Q = point.clone(); for (var i2 = 1; i2 < npoints; i2++) { addTedExtended(P2, Q, Q); T[i2] = convert_R1_to_R2(Q); } return T; } function convertToExtendedProjective(affinePoint) { affinePoint.ta = affinePoint.x.slice(); affinePoint.tb = affinePoint.y.slice(); affinePoint.z = [1]; } function scalarMultiplyTed(k, point, outputPoint, multiplyBy4) { if (!validatePointTed(point)) { throw new Error("Invalid Parameter"); } var rbits = point.curve.rbits; multiplyBy4 = typeof multiplyBy4 === "undefined" ? true : multiplyBy4; var w = fieldElementWidth <= 8 ? 5 : 6; var t = Math.floor((rbits + (w - 2)) / (w - 1)); var i2, j; k = k.slice(); var T = point.clone(); convertToExtendedProjective(T); if (multiplyBy4) { doubleTed(T, T); doubleTed(T, T); } var precomputationTable = generatePrecomputationTableTed(1 << w - 2, T); var odd = k[0] & 1, tempk = [], kisNeg; modSub(point.curve.order, k, tempk); for (i2 = 0; i2 < k.length; i2++) { k[i2] = odd - 1 & (k[i2] ^ tempk[i2]) ^ k[i2]; } var kDigits = cryptoMath.fixedWindowRecode(k, w, t); var position = Math.floor(Math.abs(kDigits[t]) - 1) / 2; var R = precomputationTable[position]; T.x = R.x.slice(); T.y = R.y.slice(); T.z = R.z.slice(); for (i2 = t - 1; i2 >= 0; i2--) { for (j = 0; j < w - 1; j++) { doubleTed(T, T); } position = Math.floor((Math.abs(kDigits[i2]) - 1) / 2); var L = tableLookupTed(precomputationTable, position); var mask = -(kDigits[i2] >>> 31); modSub(point.curve.p, L.x, tempk); for (var m = 0; m < L.x.length; m++) { L.x[m] = L.x[m] & ~mask | tempk[m] & mask; } modSub(point.curve.p, L.td, tempk); for (m = 0; m < L.td.length; m++) { L.td[m] = L.td[m] & ~mask | tempk[m] & mask; } addTedExtended(L, T, T); } modSub(point.curve.p, T.x, tempk); for (i2 = 0; i2 < T.x.length; i2++) { T.x[i2] = odd - 1 & (T.x[i2] ^ tempk[i2]) ^ T.x[i2]; } normalizeTed(T); outputPoint.x = T.x.slice(); outputPoint.y = T.y.slice(); return; } function tableLookupTed(table, index) { var pos = (index + 1) % table.length; for (var i2 = 0; i2 < table.length; i2++) { var L = { x: table[pos].x.slice(), y: table[pos].y.slice(), z: table[pos].z.slice(), td: table[pos].td.slice() }; pos = (pos + 1) % table.length; } return L; } function normalizeTed(point) { cryptoMath.modInv(point.z, curve.p, conversionTemp2, true); cryptoMath.modMul(point.x, conversionTemp2, curve.p, point.x); cryptoMath.modMul(point.y, conversionTemp2, curve.p, point.y); delete point.ta; delete point.tb; point.z = null; return; } function doubleTed(point, outputPoint) { if (typeof point.ta === "undefined") { throw new Error("Point should be in Extended Projective form."); } cryptoMath.modMul(point.x, point.x, point.curve.p, temp0); cryptoMath.modMul(point.y, point.y, point.curve.p, temp1); cryptoMath.modMul(point.z, point.z, point.curve.p, point.ta); modSub(temp1, temp0, outputPoint.tb); modAdd(temp0, temp1, temp0); modAdd(point.ta, point.ta, point.ta); modAdd(point.y, point.y, point.y); modSub(point.ta, temp0, temp1); cryptoMath.modMul(point.x, point.y, point.curve.p, outputPoint.ta); cryptoMath.modMul(temp0, outputPoint.tb, point.curve.p, outputPoint.y); cryptoMath.modMul(temp1, outputPoint.ta, point.curve.p, outputPoint.x); cryptoMath.modMul(temp0, temp1, point.curve.p, outputPoint.z); return; } function addTed(point1, point2, outputPoint) { var cm = cryptoMath; if (typeof point1.ta === "undefined") { throw new Error("Point1 should be in Extended Projective form."); } if (typeof point2.ta === "undefined") { throw new Error("Point2 should be in Extended Projective form."); } var qq = convert_R1_to_R2(point1); addTedExtended(qq, point2, outputPoint); return; } function convert_R1_to_R2(point) { var curve2 = point.curve, modulus = curve2.p, qq = { x: point.x.slice(), y: point.y.slice(), z: point.z.slice(), td: [], curve: point.curve }; cryptoMath.modMul(point.ta, point.tb, modulus, conversionTemp0); cryptoMath.modMul(conversionTemp0, curve2.d, modulus, qq.td); return qq; } function addTedExtended(qq, point2, outputPoint) { var cm = cryptoMath; var modulus = point2.curve.p; temp1 = []; temp2 = []; temp3 = []; cm.modMul(point2.z, qq.z, modulus, temp3); cm.modMul(point2.ta, point2.tb, modulus, temp1); modAdd(point2.x, point2.y, point2.ta); cm.modMul(temp1, qq.td, modulus, temp2); modAdd(qq.x, qq.y, point2.tb); modSub(temp3, temp2, temp1); modAdd(temp3, temp2, temp3); cm.modMul(point2.ta, point2.tb, modulus, temp2); cm.modMul(point2.x, qq.x, modulus, point2.z); cm.modMul(point2.y, qq.y, modulus, point2.x); modSub(temp2, point2.z, temp2); modSub(point2.x, point2.z, outputPoint.ta); modSub(temp2, point2.x, outputPoint.tb); cm.modMul(outputPoint.ta, temp3, modulus, outputPoint.y); cm.modMul(outputPoint.tb, temp1, modulus, outputPoint.x); cm.modMul(temp3, temp1, modulus, outputPoint.z); return; } function convertTedToWeierstrass(tedPoint, wPoint) { var a = tedPoint.curve.a.slice(), d = tedPoint.curve.d.slice(), p = tedPoint.curve.p, modMul = cryptoMath.modMul, modInv2 = cryptoMath.modInv; temp1 = [5]; modMul(a, temp1, p, temp2); modSub(temp2, d, temp2); modMul(d, temp1, p, temp3); modSub(a, temp3, temp1); modMul(tedPoint.y, temp1, p, temp3); modAdd(temp3, temp2, temp2); temp1 = [1]; modSub(temp1, tedPoint.y, temp3); temp1 = [12]; modMul(temp1, temp3, p, temp4); modInv2(temp4, p, temp4, true); modMul(tedPoint.x, temp3, p, temp1); modAdd(temp1, temp1, temp3); modAdd(temp3, temp3, temp3); modInv2(temp3, p, temp3, true); modMul(temp4, temp2, p, wPoint.x); temp1 = [1]; modAdd(tedPoint.y, temp1, temp1); modSub(a, d, temp2); modMul(temp1, temp2, p, temp4); modMul(temp4, temp3, p, wPoint.y); return; } function convertWeierstrassToTed(wPoint, tedPoint) { var a = tedPoint.curve.a.slice(), d = tedPoint.curve.d.slice(), p = tedPoint.curve.p, modMul = cryptoMath.modMul, modInv2 = cryptoMath.modInv; modAdd(wPoint.x, wPoint.x, temp1); modAdd(wPoint.x, temp1, temp1); modAdd(temp1, temp1, temp1); modSub(temp1, a, temp2); modSub(temp2, d, temp2); modAdd(wPoint.y, wPoint.y, temp3); modAdd(wPoint.y, temp3, temp3); modAdd(temp3, temp3, temp3); modInv2(temp3, p, temp3, true); modMul(temp2, temp3, p, tedPoint.x); modAdd(temp1, temp1, temp1); modAdd(temp1, d, temp2); modAdd(temp1, a, temp1); modAdd(a, a, temp3); modSub(temp2, temp3, temp2); modSub(temp2, temp3, temp2); modSub(temp2, a, temp2); modAdd(d, d, temp3); modSub(temp1, temp3, temp1); modSub(temp1, temp3, temp1); modSub(temp1, d, temp1); modInv2(temp1, p, temp1, true); modMul(temp1, temp2, p, tedPoint.y); return; } var methods = { convertToMontgomeryForm, convertToStandardForm, convertToAffineForm, convertToJacobianForm, generatePrecomputationTable: function(w, generatorPoint) { return generatePrecomputationTable(w, generatorPoint); } }; if (tedCurve) { methods.double = doubleTed; methods.add = addTed; methods.scalarMultiply = scalarMultiply; methods.normalize = normalizeTed; methods.convertToExtendedProjective = convertToExtendedProjective; methods.convertTedToWeierstrass = convertTedToWeierstrass; methods.convertWeierstrassToTed = convertWeierstrassToTed; methods.validatePoint = validatePointTed; methods.generatePrecomputationTable = function(w, generatorPoint) { return generatePrecomputationTableTed(w, generatorPoint); }; } else { methods.double = double; methods.mixedDoubleAdd = mixedDoubleAdd; methods.mixedAdd = mixedAdd; methods.scalarMultiply = scalarMultiply; methods.negate = negate; methods.validatePoint = validatePoint; } return methods; }; var sec1EncodingFp = function() { return { encodePoint: function(point) { if (!point) { throw new Error("point"); } if (!point.isAffine) { throw new Error("Point must be in affine form."); } if (point.isInMontgomeryForm) { throw new Error("Point must not be in Montgomery form."); } if (point.isInfinity) { return createArray(1); } else { var xOctetString = cryptoMath.digitsToBytes(point.x); var yOctetString = cryptoMath.digitsToBytes(point.y); var pOctetString = cryptoMath.digitsToBytes(point.curve.p); var mlen = pOctetString.length; if (mlen < xOctetString.length || mlen < yOctetString.length) { throw new Error("Point coordinate(s) are bigger than the field order."); } var output = createArray(2 * mlen + 1); output[0] = 4; var offset = mlen - xOctetString.length; for (var i2 = 0; i2 < xOctetString.length; i2++) { output[i2 + 1 + offset] = xOctetString[i2]; } offset = mlen - yOctetString.length; for (i2 = 0; i2 < yOctetString.length; i2++) { output[mlen + i2 + 1 + offset] = yOctetString[i2]; } return output; } }, decodePoint: function(encoded, curve) { if (encoded.length < 1) { throw new Error("Byte array must have non-zero length"); } var pOctetString = cryptoMath.digitsToBytes(curve.p); var mlen = pOctetString.length; if (encoded[0] === 0 && encoded.length === 1) { return curve.createPointAtInfinity(); } else if (encoded[0] === 4 && encoded.length === 1 + 2 * mlen) { var xbytes = createArray(mlen); var ybytes = createArray(mlen); for (var i2 = 0; i2 < mlen; i2++) { xbytes[i2] = encoded[i2 + 1]; ybytes[i2] = encoded[mlen + i2 + 1]; } var x = cryptoMath.bytesToDigits(xbytes); var y = cryptoMath.bytesToDigits(ybytes); return EllipticCurvePointFp(curve, false, x, y); } else { throw new Error("Unsupported encoding format"); } } }; }; var ModularSquareRootSolver = function(modulus) { var p = modulus; var specialK = []; if (typeof modulus === "undefined") { throw new Error("modulus"); } if (cryptoMath.isEven(modulus)) { throw new Error("Only odd moduli are supported"); } var mul = cryptoMath.MontgomeryMultiplier(p); if (p[0] % 4 === 3) { cryptoMath.add(p, cryptoMath.One, specialK); cryptoMath.shiftRight(specialK, specialK, 2); } else { specialK = null; } var temp0 = new Array(p.length); var temp1 = new Array(p.length); function squareRootNistCurves(a) { var beta = cryptoMath.intToDigits(0, 16); mul.modExp(a, specialK, beta); var aPrime = [0]; cryptoMath.modMul(beta, beta, mul.m, aPrime); if (cryptoMath.compareDigits(a, aPrime) !== 0) { return null; } return beta; } var publicMethods2 = { squareRoot: function(a) { if (specialK !== null) { return squareRootNistCurves(a); } else { throw new Error("GeneralCase not supported."); } }, jacobiSymbol: function(a) { var modEightMask = 7, modFourMask = 3, aPrime, pPrime; aPrime = a.slice(); pPrime = p.slice(); cryptoMath.reduce(aPrime, pPrime, aPrime, temp0, temp1); var t = 1; while (!cryptoMath.isZero(aPrime)) { while (cryptoMath.isEven(aPrime)) { cryptoMath.shiftRight(aPrime, aPrime); var pMod8 = pPrime[0] & modEightMask; if (pMod8 === 3 || pMod8 === 5) { t = -t; } } var tmp = aPrime; aPrime = pPrime; pPrime = tmp; var aMod4 = aPrime[0] & modFourMask; var pMod4 = pPrime[0] & modFourMask; if (aMod4 === 3 && pMod4 === 3) { t = -t; } cryptoMath.reduce(aPrime, pPrime, aPrime, temp0, temp1); } if (cryptoMath.compareDigits(pPrime, cryptoMath.One) === 0) { return t; } else { return 0; } } }; return publicMethods2; }; var curvesInternal = {}; var createCurve = function(curveName) { var curveData = curvesInternal[curveName.toUpperCase()]; if (!curveData) { throw new Error(curveName + " Unsupported curve."); } if (curveData.type === 0) { return createWeierstrassCurve(curveData); } if (curveData.type === 1) { return createTedCurve(curveData); } throw new Error(curveName + " Unsupported curve type."); }; var validateEccPoint = function(curveName, x, y, z) { var curve = createCurve(curveName); var point = new EllipticCurvePointFp(curve, false, btd(x), btd(y), z && btd(z), false); var opp = new EllipticCurveOperatorFp(curve); return opp.validatePoint(point); }; return { createCurve, curves: curvesInternal, sec1EncodingFp, validatePoint: validateEccPoint, EllipticCurvePointFp, EllipticCurveOperatorFp, ModularSquareRootSolver }; } var cryptoECC = cryptoECC || MsrcryptoECC(); var curve_P256 = { name: "P-256", type: 0, p: [ 255, 255, 255, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], a: [ 255, 255, 255, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252 ], b: [ 90, 198, 53, 216, 170, 58, 147, 231, 179, 235, 189, 85, 118, 152, 134, 188, 101, 29, 6, 176, 204, 83, 176, 246, 59, 206, 60, 62, 39, 210, 96, 75 ], order: [ 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 188, 230, 250, 173, 167, 23, 158, 132, 243, 185, 202, 194, 252, 99, 37, 81 ], gx: [ 107, 23, 209, 242, 225, 44, 66, 71, 248, 188, 230, 229, 99, 164, 64, 242, 119, 3, 125, 129, 45, 235, 51, 160, 244, 161, 57, 69, 216, 152, 194, 150 ], gy: [ 79, 227, 66, 226, 254, 26, 127, 155, 142, 231, 235, 74, 124, 15, 158, 22, 43, 206, 51, 87, 107, 49, 94, 206, 203, 182, 64, 104, 55, 191, 81, 245 ], cf: 1 }; var curve_P384 = { name: "P-384", type: 0, p: [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255 ], a: [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 252 ], b: [ 179, 49, 47, 167, 226, 62, 231, 228, 152, 142, 5, 107, 227, 248, 45, 25, 24, 29, 156, 110, 254, 129, 65, 18, 3, 20, 8, 143, 80, 19, 135, 90, 198, 86, 57, 141, 138, 46, 209, 157, 42, 133, 200, 237, 211, 236, 42, 239 ], order: [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 99, 77, 129, 244, 55, 45, 223, 88, 26, 13, 178, 72, 176, 167, 122, 236, 236, 25, 106, 204, 197, 41, 115 ], gx: [ 170, 135, 202, 34, 190, 139, 5, 55, 142, 177, 199, 30, 243, 32, 173, 116, 110, 29, 59, 98, 139, 167, 155, 152, 89, 247, 65, 224, 130, 84, 42, 56, 85, 2, 242, 93, 191, 85, 41, 108, 58, 84, 94, 56, 114, 118, 10, 183 ], gy: [ 54, 23, 222, 74, 150, 38, 44, 111, 93, 158, 152, 191, 146, 146, 220, 41, 248, 244, 29, 189, 40, 154, 20, 124, 233, 218, 49, 19, 181, 240, 184, 192, 10, 96, 177, 206, 29, 126, 129, 157, 122, 67, 29, 124, 144, 234, 14, 95 ], cf: 1 }; var curve_P521 = { name: "P-521", type: 0, p: [ 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ], a: [ 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252 ], b: [ 0, 81, 149, 62, 185, 97, 142, 28, 154, 31, 146, 154, 33, 160, 182, 133, 64, 238, 162, 218, 114, 91, 153, 179, 21, 243, 184, 180, 137, 145, 142, 241, 9, 225, 86, 25, 57, 81, 236, 126, 147, 123, 22, 82, 192, 189, 59, 177, 191, 7, 53, 115, 223, 136, 61, 44, 52, 241, 239, 69, 31, 212, 107, 80, 63, 0 ], order: [ 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 81, 134, 135, 131, 191, 47, 150, 107, 127, 204, 1, 72, 247, 9, 165, 208, 59, 181, 201, 184, 137, 156, 71, 174, 187, 111, 183, 30, 145, 56, 100, 9 ], gx: [ 0, 198, 133, 142, 6, 183, 4, 4, 233, 205, 158, 62, 203, 102, 35, 149, 180, 66, 156, 100, 129, 57, 5, 63, 181, 33, 248, 40, 175, 96, 107, 77, 61, 186, 161, 75, 94, 119, 239, 231, 89, 40, 254, 29, 193, 39, 162, 255, 168, 222, 51, 72, 179, 193, 133, 106, 66, 155, 249, 126, 126, 49, 194, 229, 189, 102 ], gy: [ 1, 24, 57, 41, 106, 120, 154, 59, 192, 4, 92, 138, 95, 180, 44, 125, 27, 217, 152, 245, 68, 73, 87, 155, 68, 104, 23, 175, 189, 23, 39, 62, 102, 44, 151, 238, 114, 153, 94, 244, 38, 64, 197, 80, 185, 1, 63, 173, 7, 97, 53, 60, 112, 134, 162, 114, 194, 64, 136, 190, 148, 118, 159, 209, 102, 80 ], cf: 1 }; if (typeof cryptoECC !== "undefined") { cryptoECC.curves["P-256"] = curve_P256; cryptoECC.curves["P-384"] = curve_P384; cryptoECC.curves["P-521"] = curve_P521; } var curve_BN254 = { name: "BN-254", type: 0, p: [ 37, 35, 100, 130, 64, 0, 0, 1, 186, 52, 77, 128, 0, 0, 0, 8, 97, 33, 0, 0, 0, 0, 0, 19, 167, 0, 0, 0, 0, 0, 0, 19 ], a: [0], b: [2], order: [ 37, 35, 100, 130, 64, 0, 0, 1, 186, 52, 77, 128, 0, 0, 0, 7, 255, 159, 128, 0, 0, 0, 0, 16, 161, 0, 0, 0, 0, 0, 0, 13 ], gx: [ 37, 35, 100, 130, 64, 0, 0, 1, 186, 52, 77, 128, 0, 0, 0, 8, 97, 33, 0, 0, 0, 0, 0, 19, 167, 0, 0, 0, 0, 0, 0, 18 ], gy: [1], cf: 1 }; if (typeof cryptoECC !== "undefined") { cryptoECC.curves["BN-254"] = curve_BN254; } var curve_numsp256d1 = { info: ["numsp256d1", 256, 256, 256], type: 0, p: [ 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [ 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), b: [129, 85, 2].reverse(), order: [ 37, 168, 81, 71, 41, 32, 171, 32, 96, 92, 38, 234, 117, 130, 60, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), gx: [ 177, 172, 26, 178, 30, 238, 82, 188, 58, 199, 212, 3, 9, 155, 87, 131, 9, 203, 66, 79, 160, 149, 122, 41, 97, 219, 170, 90, 182, 214, 158, 188 ].reverse(), gy: [ 159, 222, 132, 33, 203, 185, 181, 128, 187, 15, 49, 21, 209, 195, 85, 201, 53, 224, 4, 126, 247, 139, 68, 115, 166, 182, 153, 51, 241, 192, 143, 208 ].reverse(), cf: 1 }; var curve_numsp256t1 = { info: ["numsp256t1", 256, 255, 256], name: "numsp256t1", type: 1, p: [ 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [1], d: [ 85, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), order: [ 245, 74, 221, 238, 144, 177, 71, 26, 155, 67, 89, 47, 165, 90, 149, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64 ].reverse(), gx: [ 218, 19, 237, 46, 144, 192, 222, 160, 134, 53, 8, 227, 14, 138, 57, 12, 214, 155, 32, 105, 95, 61, 30, 205, 125, 35, 234, 106, 251, 20, 117, 138 ].reverse(), gy: [ 230, 137, 138, 121, 231, 22, 166, 47, 211, 110, 133, 16, 216, 97, 95, 113, 16, 128, 75, 166, 217, 101, 150, 206, 199, 37, 217, 217, 159, 62, 213, 68 ].reverse(), cf: 4 }; var curve_numsp384d1 = { info: ["numsp384d1", 384, 384, 384], name: "numsp384d1", type: 0, p: [ 195, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [ 192, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), b: [ 187, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), order: [ 185, 97, 14, 123, 246, 129, 77, 96, 122, 226, 55, 76, 61, 157, 218, 190, 129, 104, 93, 235, 30, 175, 30, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), gx: [ 42, 21, 152, 32, 4, 186, 156, 235, 123, 196, 97, 15, 16, 237, 46, 82, 66, 199, 108, 42, 27, 41, 189, 243, 244, 249, 129, 251, 205, 193, 37, 2, 166, 241, 5, 65, 34, 202, 128, 72, 28, 24, 111, 177, 240, 86, 121, 117 ].reverse(), gy: [ 22, 7, 24, 102, 236, 184, 116, 92, 38, 173, 244, 191, 219, 180, 214, 188, 126, 131, 26, 18, 125, 131, 32, 185, 156, 115, 127, 248, 119, 105, 4, 176, 126, 207, 132, 5, 48, 61, 227, 215, 56, 142, 155, 225, 104, 227, 222, 172 ].reverse(), cf: 1 }; var curve_numsp384t1 = { info: ["numsp384t1", 384, 382, 384], name: "numsp384t1", type: 1, p: [ 195, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [1], d: [ 159, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), order: [ 125, 137, 163, 230, 196, 220, 185, 32, 121, 200, 53, 171, 90, 85, 228, 97, 207, 225, 107, 180, 28, 26, 71, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63 ].reverse(), gx: [ 222, 107, 32, 108, 228, 64, 213, 80, 19, 148, 69, 101, 177, 146, 242, 111, 64, 99, 49, 243, 168, 255, 99, 87, 0, 76, 190, 229, 70, 244, 11, 179, 181, 93, 229, 154, 18, 162, 182, 192, 108, 38, 169, 69, 251, 17, 177, 97 ].reverse(), gy: [ 146, 147, 114, 240, 225, 3, 141, 157, 220, 72, 236, 70, 249, 176, 114, 0, 75, 150, 69, 246, 247, 152, 15, 131, 86, 95, 66, 241, 116, 130, 173, 22, 215, 13, 177, 35, 164, 177, 56, 135, 176, 238, 166, 185, 103, 62, 152, 130 ].reverse(), cf: 4 }; var curve_numsp512d1 = { info: ["numsp512d1", 512, 512, 512], name: "numsp512d1", type: 0, p: [ 199, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [ 196, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), b: [155, 217, 1].reverse(), order: [ 93, 85, 51, 4, 57, 63, 21, 206, 67, 210, 124, 96, 54, 139, 86, 59, 198, 189, 208, 151, 237, 88, 194, 79, 27, 131, 231, 148, 251, 164, 60, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), gx: [ 87, 174, 171, 140, 149, 135, 130, 220, 226, 93, 111, 125, 19, 96, 93, 29, 131, 21, 86, 37, 134, 66, 121, 147, 158, 53, 107, 7, 81, 161, 33, 80, 249, 217, 6, 83, 194, 224, 6, 69, 133, 246, 1, 181, 59, 216, 202, 152, 82, 59, 61, 160, 2, 112, 43, 218, 147, 10, 29, 20, 71, 52, 192, 58 ].reverse(), gy: [ 166, 39, 53, 56, 96, 135, 160, 35, 233, 15, 253, 76, 30, 92, 43, 207, 2, 86, 90, 178, 64, 168, 33, 193, 233, 237, 14, 139, 218, 21, 132, 162, 20, 79, 209, 123, 12, 38, 75, 143, 140, 187, 188, 171, 222, 219, 151, 75, 0, 177, 235, 99, 220, 238, 14, 206, 179, 86, 173, 41, 202, 84, 58, 148 ].reverse(), cf: 4 }; var curve_numsp512t1 = { info: ["numsp512t1", 512, 510, 512], name: "numsp512t1", type: 1, p: [ 199, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), a: [1].reverse(), d: [ 239, 203, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ].reverse(), order: [ 109, 212, 238, 27, 245, 140, 70, 103, 255, 236, 239, 109, 120, 5, 70, 42, 245, 134, 182, 112, 201, 216, 63, 158, 186, 145, 207, 47, 109, 99, 240, 180, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63 ].reverse(), gx: [ 254, 87, 236, 153, 41, 171, 185, 197, 21, 240, 196, 124, 66, 37, 229, 15, 173, 4, 137, 86, 146, 201, 189, 120, 15, 115, 70, 238, 78, 193, 33, 70, 71, 129, 59, 39, 190, 126, 161, 39, 130, 163, 196, 77, 159, 231, 209, 47, 51, 197, 211, 136, 120, 203, 24, 122, 156, 182, 141, 18, 109, 49, 142, 223 ].reverse(), gy: [ 225, 245, 226, 193, 192, 222, 109, 50, 31, 208, 241, 155, 138, 211, 102, 2, 253, 193, 236, 42, 134, 6, 26, 96, 98, 53, 150, 233, 242, 83, 202, 32, 65, 131, 158, 144, 149, 107, 43, 169, 34, 157, 37, 216, 38, 247, 118, 228, 110, 37, 42, 168, 119, 245, 176, 152, 113, 202, 73, 157, 243, 191, 9, 109 ].reverse(), cf: 4 }; if (typeof cryptoECC !== "undefined") { cryptoECC.curves.NUMSP256D1 = curve_numsp256d1; cryptoECC.curves.NUMSP384D1 = curve_numsp384d1; cryptoECC.curves.NUMSP512D1 = curve_numsp512d1; cryptoECC.curves.NUMSP256T1 = curve_numsp256t1; cryptoECC.curves.NUMSP384T1 = curve_numsp384t1; cryptoECC.curves.NUMSP512T1 = curve_numsp512t1; } var msrcryptoSha = function(name, der, h, k, blockBytes, blockFunction, truncateTo) { var utils2 = msrcryptoUtilities; var hv = h.slice(), w = new Array(blockBytes), buffer = [], blocksProcessed = 0; function hashBlocks(message) { var blockCount = Math.floor(message.length / blockBytes); for (var block = 0; block < blockCount; block++) { blockFunction(message, block, hv, k, w); } blocksProcessed += blockCount; return message.slice(blockCount * blockBytes); } function hashToBytes() { var hash = []; for (var i2 = 0; i2 < hv.length; i2++) { hash = hash.concat(utils2.int32ToBytes(hv[i2])); } hash.length = truncateTo / 8; return hash; } function addPadding(messageBytes) { var padLen = blockBytes - messageBytes.length % blockBytes; padLen <= blockBytes / 8 && (padLen += blockBytes); var padding = utils2.getVector(padLen); padding[0] = 128; var messageLenBits = (messageBytes.length + blocksProcessed * blockBytes) * 8; for (var i2 = 1; i2 <= 8; i2++) { padding[padLen - i2] = messageLenBits % 256; messageLenBits = Math.floor(messageLenBits / 256); } return messageBytes.concat(padding); } function computeHash(messageBytes) { buffer = hashBlocks(messageBytes); return finish(); } function process2(messageBytes) { buffer = buffer.concat(messageBytes); if (buffer.length >= blockBytes) { buffer = hashBlocks(buffer); } return; } function finish() { if (hashBlocks(addPadding(buffer)).length !== 0) { throw new Error("buffer.length !== 0"); } var result = hashToBytes(); buffer = []; hv = h.slice(); blocksProcessed = 0; return result; } return { name, computeHash, process: process2, finish, der, hashLen: truncateTo, maxMessageSize: 4294967295 }; }; var msrcryptoSha1 = (function() { function hashBlock(message, blockIndex, hv, k2, w) { var t, i2, temp, x0, blockSize = 64, mask = 4294967295; var ra = hv[0], rb = hv[1], rc = hv[2], rd = hv[3], re = hv[4]; for (i2 = 0; i2 < 16; i2++) { w[i2] = utils2.bytesToInt32(message, blockIndex * blockSize + i2 * 4); } for (t = 16; t < 80; t++) { x0 = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; w[t] = x0 << 1 | x0 >>> 31; } for (i2 = 0; i2 < 80; i2++) { temp = ra << 5 | ra >>> 27; temp += i2 >= 60 ? rb ^ rc ^ rd : i2 >= 40 ? rb & rc ^ rb & rd ^ rc & rd : i2 >= 20 ? rb ^ rc ^ rd : rb & rc ^ ~rb & rd; temp += re + k2[i2] + w[i2]; re = rd; rd = rc; rc = rb << 30 | rb >>> 2; rb = ra; ra = temp; } hv[0] += ra & mask; hv[1] += rb & mask; hv[2] += rc & mask; hv[3] += rd & mask; hv[4] += re & mask; return hv; } var utils2 = msrcryptoUtilities, upd = utils2.unpackData, h = upd("Z0UjAe/Nq4mYutz+EDJUdsPS4fA=", 4, 1), k = upd( "WoJ5mVqCeZlagnmZWoJ5mVqCeZlagnmZWoJ5mVqCeZlagnmZWoJ5mVqCeZlagnmZWoJ5mVqCeZlagnmZWoJ5mVqCeZlagnmZWoJ5mVqCeZlu2euhbtnroW7Z66Fu2euhbtnroW7Z66Fu2euhbtnroW7Z66Fu2euhbtnroW7Z66Fu2euhbtnroW7Z66Fu2euhbtnroW7Z66Fu2euhbtnroY8bvNyPG7zcjxu83I8bvNyPG7zcjxu83I8bvNyPG7zcjxu83I8bvNyPG7zcjxu83I8bvNyPG7zcjxu83I8bvNyPG7zcjxu83I8bvNyPG7zcymLB1spiwdbKYsHWymLB1spiwdbKYsHWymLB1spiwdbKYsHWymLB1spiwdbKYsHWymLB1spiwdbKYsHWymLB1spiwdbKYsHWymLB1spiwdY", 4, 1 ), der = upd("MCEwCQYFKw4DAhoFAAQU"); return { sha1: function() { return msrcryptoSha("SHA-1", der, h, k, 64, hashBlock, 160); } }; })(); if (typeof operations !== "undefined") { msrcryptoSha1.instances = {}; msrcryptoSha1.getInstance = function(id) { return msrcryptoSha1.instances[id] || (msrcryptoSha1.instances[id] = msrcryptoSha1.sha1()); }; msrcryptoSha1.deleteInstance = function(id) { msrcryptoSha1.instances[id] = null; delete msrcryptoSha1.instances[id]; }; msrcryptoSha1.hash = function(p) { if (p.operationSubType === "process") { msrcryptoSha1.sha1.process(p.buffer); return; } if (p.operationSubType === "finish") { return msrcryptoSha1.sha1.finish(); } return msrcryptoSha1.sha1().computeHash(p.buffer); }; operations.register("digest", "SHA-1", msrcryptoSha1.hash); } msrcryptoHashFunctions["SHA-1"] = msrcryptoSha1.sha1; var msrcryptoSha256 = (function() { var utils2 = msrcryptoUtilities; function hashBlock(message, blockIndex, hv, k, w) { var t, i2, temp, x0, x1, blockSize = 64, mask = 4294967295; var ra = hv[0], rb = hv[1], rc = hv[2], rd = hv[3], re = hv[4], rf = hv[5], rg = hv[6], rh = hv[7]; for (i2 = 0; i2 < 16; i2++) { w[i2] = utils2.bytesToInt32(message, blockIndex * blockSize + i2 * 4); } for (t = 16; t < 64; t++) { x0 = w[t - 15]; x1 = w[t - 2]; w[t] = ((x1 >>> 17 | x1 << 15) ^ (x1 >>> 19 | x1 << 13) ^ x1 >>> 10) + w[t - 7] + ((x0 >>> 7 | x0 << 25) ^ (x0 >>> 18 | x0 << 14) ^ x0 >>> 3) + w[t - 16]; w[t] = w[t] & mask; } for (i2 = 0; i2 < 64; i2++) { temp = rh + ((re >>> 6 | re << 26) ^ (re >>> 11 | re << 21) ^ (re >>> 25 | re << 7)) + (re & rf ^ ~re & rg) + k[i2] + w[i2]; rd += temp; temp += ((ra >>> 2 | ra << 30) ^ (ra >>> 13 | ra << 19) ^ (ra >>> 22 | ra << 10)) + (ra & (rb ^ rc) ^ rb & rc); rh = rg; rg = rf; rf = re; re = rd; rd = rc; rc = rb; rb = ra; ra = temp; } hv[0] = hv[0] + ra >>> 0; hv[1] = hv[1] + rb >>> 0; hv[2] = hv[2] + rc >>> 0; hv[3] = hv[3] + rd >>> 0; hv[4] = hv[4] + re >>> 0; hv[5] = hv[5] + rf >>> 0; hv[6] = hv[6] + rg >>> 0; hv[7] = hv[7] + rh >>> 0; return hv; } var k256, h224, h256, der224, der256, upd = utils2.unpackData; h224 = upd("wQWe2DZ81QcwcN0X9w5ZOf/ACzFoWBURZPmPp776T6Q", 4, 1); h256 = upd("agnmZ7tnroU8bvNypU/1OlEOUn+bBWiMH4PZq1vgzRk", 4, 1); k256 = upd( "QoovmHE3RJG1wPvP6bXbpTlWwltZ8RHxkj+CpKscXtXYB6qYEoNbASQxhb5VDH3Dcr5ddIDesf6b3AanwZvxdOSbacHvvkeGD8GdxiQMocwt6SxvSnSEqlywqdx2+YjamD5RUqgxxm2wAyfIv1l/x8bgC/PVp5FHBspjURQpKWcntwqFLhshOE0sbfxTOA0TZQpzVHZqCruBwskuknIshaK/6KGoGmZLwkuLcMdsUaPRkugZ1pkGJPQONYUQaqBwGaTBFh43bAgnSHdMNLC8tTkcDLNO2KpKW5zKT2gub/N0j4LueKVjb4TIeBSMxwIIkL7/+qRQbOu++aP3xnF48g", 4, 1 ); der224 = upd("MC0wDQYJYIZIAWUDBAIEBQAEHA"); der256 = upd("MDEwDQYJYIZIAWUDBAIBBQAEIA"); return { sha224: function() { return msrcryptoSha("SHA-224", der224, h224, k256, 64, hashBlock, 224); }, sha256: function() { return msrcryptoSha("SHA-256", der256, h256, k256, 64, hashBlock, 256); } }; })(); if (typeof operations !== "undefined") { msrcryptoSha256.instance224 = msrcryptoSha256.instance224 || msrcryptoSha256.sha224(); msrcryptoSha256.instance256 = msrcryptoSha256.instance256 || msrcryptoSha256.sha256(); msrcryptoSha256.instances = {}; msrcryptoSha256.getInstance224 = function(id) { return msrcryptoSha256.instances[id] || (msrcryptoSha256.instances[id] = msrcryptoSha256.sha224()); }; msrcryptoSha256.getInstance256 = function(id) { return msrcryptoSha256.instances[id] || (msrcryptoSha256.instances[id] = msrcryptoSha256.sha256()); }; msrcryptoSha256.deleteInstance = function(id) { msrcryptoSha256.instances[id] = null; delete msrcryptoSha256.instances[id]; }; msrcryptoSha256.hash256 = function(p) { if (p.operationSubType === "process") { msrcryptoSha256.getInstance256(p.workerid).process(p.buffer); return null; } if (p.operationSubType === "finish") { var result = msrcryptoSha256.getInstance256(p.workerid).finish(); msrcryptoSha256.deleteInstance(p.workerid); return result; } if (p.operationSubType === "abort") { msrcryptoSha256.deleteInstance(p.workerid); return; } return msrcryptoSha256.instance256.computeHash(p.buffer); }; msrcryptoSha256.hash224 = function(p) { if (p.operationSubType === "process") { msrcryptoSha256.getInstance224(p.workerid).process(p.buffer); return; } if (p.operationSubType === "finish") { var result = msrcryptoSha256.getInstance224(p.workerid).finish(); } if (p.operationSubType === "abort") { msrcryptoSha224.deleteInstance(p.workerid); return; } return msrcryptoSha256.instance224.computeHash(p.buffer); }; operations.register("digest", "SHA-224", msrcryptoSha256.hash224); operations.register("digest", "SHA-256", msrcryptoSha256.hash256); } msrcryptoHashFunctions["SHA-224"] = msrcryptoSha256.sha224; msrcryptoHashFunctions["SHA-256"] = msrcryptoSha256.sha256; var msrcryptoSha512 = (function() { var utils2 = msrcryptoUtilities; function add(x0, x1, y0, y1, resultArray) { var lowSum = x1 + y1 | 0; var carry = lowSum >>> 0 < y1 >>> 0; resultArray[0] = x0 + y0 + carry | 0; resultArray[1] = lowSum; return; } function hashBlock(message, blockIndex, hv, k, w) { var t, i2, blockBytes = 128, tah, tal, tbh, tbl, xh, xl, tc = [], td = [], te = [], index; var ah = hv[0], al = hv[1], bh = hv[2], bl = hv[3], ch = hv[4], cl = hv[5], dh = hv[6], dl = hv[7], eh = hv[8], el = hv[9], fh = hv[10], fl = hv[11], gh = hv[12], gl = hv[13], hh = hv[14], hl = hv[15]; for (t = 0; t < 32; t++) { index = blockIndex * blockBytes + t * 4; w[t] = message.slice(index, index + 4); w[t] = w[t][0] << 24 | w[t][1] << 16 | w[t][2] << 8 | w[t][3]; } for (t = 32; t < 160; t += 2) { xh = w[t - 30]; xl = w[t - 29]; tah = (xh >>> 1 | xl << 31) ^ (xh >>> 8 | xl << 24) ^ xh >>> 7; tal = (xl >>> 1 | xh << 31) ^ (xl >>> 8 | xh << 24) ^ (xl >>> 7 | xh << 25); xh = w[t - 4]; xl = w[t - 3]; tbh = (xh >>> 19 | xl << 13) ^ (xl >>> 29 | xh << 3) ^ xh >>> 6; tbl = (xl >>> 19 | xh << 13) ^ (xh >>> 29 | xl << 3) ^ (xl >>> 6 | xh << 26); add(tbh, tbl, w[t - 14], w[t - 13], tc); add(tah, tal, tc[0], tc[1], tc); add(w[t - 32], w[t - 31], tc[0], tc[1], tc); w[t] = tc[0]; w[t + 1] = tc[1]; } for (i2 = 0; i2 < 160; i2 += 2) { tah = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (el >>> 9 | eh << 23); tal = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (eh >>> 9 | el << 23); tbh = eh & fh ^ gh & ~eh; tbl = el & fl ^ gl & ~el; add(hh, hl, tah, tal, tc); add(tbh, tbl, k[i2], k[i2 + 1], td); add(tc[0], tc[1], w[i2], w[i2 + 1], te); add(td[0], td[1], te[0], te[1], te); add(te[0], te[1], dh, dl, tc); dh = tc[0]; dl = tc[1]; tal = (al >>> 28 | ah << 4) ^ (ah >>> 2 | al << 30) ^ (ah >>> 7 | al << 25); tah = (ah >>> 28 | al << 4) ^ (al >>> 2 | ah << 30) ^ (al >>> 7 | ah << 25); tbl = al & (bl ^ cl) ^ bl & cl; tbh = ah & (bh ^ ch) ^ bh & ch; add(te[0], te[1], tah, tal, tc); tah = tc[0]; tal = tc[1]; add(tbh, tbl, tah, tal, tc); tah = tc[0]; tal = tc[1]; hh = gh; hl = gl; gh = fh; gl = fl; fh = eh; fl = el; eh = dh; el = dl; dh = ch; dl = cl; ch = bh; cl = bl; bh = ah; bl = al; ah = tah; al = tal; } add(hv[0], hv[1], ah, al, tc); hv[0] = tc[0]; hv[1] = tc[1]; add(hv[2], hv[3], bh, bl, tc); hv[2] = tc[0]; hv[3] = tc[1]; add(hv[4], hv[5], ch, cl, tc); hv[4] = tc[0]; hv[5] = tc[1]; add(hv[6], hv[7], dh, dl, tc); hv[6] = tc[0]; hv[7] = tc[1]; add(hv[8], hv[9], eh, el, tc); hv[8] = tc[0]; hv[9] = tc[1]; add(hv[10], hv[11], fh, fl, tc); hv[10] = tc[0]; hv[11] = tc[1]; add(hv[12], hv[13], gh, gl, tc); hv[12] = tc[0]; hv[13] = tc[1]; add(hv[14], hv[15], hh, hl, tc); hv[14] = tc[0]; hv[15] = tc[1]; return hv; } var h384, h512, k512, der384, der512, der512_224, der512_256, upd = utils2.unpackData; h384 = upd("y7udXcEFnthimikqNnzVB5FZAVowcN0XFS/s2PcOWTlnMyZn/8ALMY60SodoWBUR2wwuDWT5j6dHtUgdvvpPpA==", 4, 1); h512 = upd("agnmZ/O8yQi7Z66FhMqnOzxu83L+lPgrpU/1Ol8dNvFRDlJ/reaC0ZsFaIwrPmwfH4PZq/tBvWtb4M0ZE34heQ", 4, 1); k512 = upd( "QoovmNcoriJxN0SRI+9lzbXA+8/sTTsv6bXbpYGJ27w5VsJb80i1OFnxEfG2BdAZkj+CpK8ZT5urHF7V2m2BGNgHqpijAwJCEoNbAUVwb74kMYW+TuSyjFUMfcPV/7Ticr5ddPJ7iW+A3rH+OxaWsZvcBqclxxI1wZvxdM9pJpTkm2nBnvFK0u++R4Y4TyXjD8GdxouM1bUkDKHMd6ycZS3pLG9ZKwJ1SnSEqm6m5INcsKncvUH71Hb5iNqDEVO1mD5RUu5m36uoMcZtLbQyELADJ8iY+yE/v1l/x77vDuTG4AvzPaiPwtWnkUeTCqclBspjUeADgm8UKSlnCg5ucCe3CoVG0i/8LhshOFwmySZNLG38WsQq7VM4DROdlbPfZQpzVIuvY952agq7PHeyqIHCyS5H7a7mknIshRSCNTuiv+ihTPEDZKgaZku8QjABwkuLcND4l5HHbFGjBlS+MNGS6BnW71IY1pkGJFVlqRD0DjWFV3EgKhBqoHAyu9G4GaTBFrjS0MgeN2wIUUGrUydId0zfjuuZNLC8teGbSKg5HAyzxclaY07YqkrjQYrLW5zKT3dj43NoLm/z1rK4o3SPgu5d77L8eKVjb0MXL2CEyHgUofCrcozHAggaZDnskL7/+iNjHiikUGzr3oK96b75o/eyxnkVxnF48uNyUyvKJz7O6iZhnNGGuMchwMIH6tp91s3g6x71fU9/7m7ReAbwZ6pyF2+6CmN9xaLImKYRP5gEvvkNrhtxCzUTHEcbKNt39SMEfYQyyqt7QMckkzyevgoVyb68Qx1nxJwQDUxMxdS+yz5Ctll/KZz8ZX4qX8tvqzrW+uxsRBmMSkdYFw==", 4, 1 ); der384 = upd("MEEwDQYJYIZIAWUDBAICBQAEMA"); der512 = upd("MFEwDQYJYIZIAWUDBAIDBQAEQA"); der512_224 = upd("MC0wDQYJYIZIAWUDBAIFBQAEHA"); der512_256 = upd("MDEwDQYJYIZIAWUDBAIGBQAEIA"); return { sha384: function() { return msrcryptoSha("SHA-384", der384, h384, k512, 128, hashBlock, 384); }, sha512: function() { return msrcryptoSha("SHA-512", der512, h512, k512, 128, hashBlock, 512); }, sha512_224: function() { return msrcryptoSha("SHA-512.224", der512_224, h512, k512, 128, hashBlock, 224); }, sha512_256: function() { return msrcryptoSha("SHA-512.256", der512_256, h512, k512, 128, hashBlock, 256); } }; })(); if (typeof operations !== "undefined") { msrcryptoSha512.instances = {}; msrcryptoSha512.getInstance384 = function(id) { return msrcryptoSha512.instances[id] || (msrcryptoSha512.instances[id] = msrcryptoSha512.sha384()); }; msrcryptoSha512.getInstance512 = function(id) { return msrcryptoSha512.instances[id] || (msrcryptoSha512.instances[id] = msrcryptoSha512.sha512()); }; msrcryptoSha512.deleteInstance = function(id) { msrcryptoSha512.instances[id] = null; delete msrcryptoSha512.instances[id]; }; msrcryptoSha512.hash384 = function(p) { if (p.operationSubType === "process") { msrcryptoSha512.sha384.process(p.buffer); return; } if (p.operationSubType === "finish") { return msrcryptoSha512.sha384.finish(); } return msrcryptoSha512.sha384().computeHash(p.buffer); }; msrcryptoSha512.hash512 = function(p) { if (p.operationSubType === "process") { msrcryptoSha512.sha512.process(p.buffer); return; } if (p.operationSubType === "finish") { return msrcryptoSha512.sha512.finish(); } return msrcryptoSha512.sha512().computeHash(p.buffer); }; operations.register("digest", "SHA-384", msrcryptoSha512.hash384); operations.register("digest", "SHA-512", msrcryptoSha512.hash512); } msrcryptoHashFunctions["SHA-384"] = msrcryptoSha512.sha384; msrcryptoHashFunctions["SHA-512"] = msrcryptoSha512.sha512; var msrcryptoHmac = function(keyBytes, hashFunction) { var blockSize = { 384: 128, 512: 128 }[hashFunction.name.replace(/SHA-/, "")] || 64; var ipad; var opad; var paddedKey = padKey(); var keyXorOpad; var keyXorIpad; var k0IpadText; function xorArrays(array1, array2) { var newArray = new Array(array1); for (var j = 0; j < array1.length; j++) { newArray[j] = array1[j] ^ array2[j]; } return newArray; } function padZeros(bytes, paddedLength) { var paddedArray = bytes.slice(); for (var j = bytes.length; j < paddedLength; j++) { paddedArray.push(0); } return paddedArray; } function padKey() { if (keyBytes.length === blockSize) { return keyBytes; } if (keyBytes.length > blockSize) { return padZeros(hashFunction.computeHash(keyBytes), blockSize); } return padZeros(keyBytes, blockSize); } function processHmac(messageBytes) { if (!k0IpadText) { k0IpadText = keyXorIpad.concat(messageBytes); hashFunction.process(k0IpadText); } else { hashFunction.process(messageBytes); } return; } function finishHmac() { var hashK0IpadText = hashFunction.finish(); var k0IpadK0OpadText = keyXorOpad.concat(hashK0IpadText); return hashFunction.computeHash(k0IpadK0OpadText); } function clearState() { keyBytes = null; hashFunction = null; paddedKey = null; } ipad = new Array(blockSize); opad = new Array(blockSize); for (var i2 = 0; i2 < blockSize; i2++) { ipad[i2] = 54; opad[i2] = 92; } keyXorIpad = xorArrays(paddedKey, ipad); keyXorOpad = xorArrays(paddedKey, opad); return { computeHmac: function(dataBytes, key, hashAlgorithm) { processHmac(dataBytes); var result = finishHmac(); clearState(); return result; }, process: function(dataBytes, key, hashAlgorithm) { processHmac(dataBytes); return null; }, finish: function(key, hashAlgorithm) { var result = finishHmac(); clearState(); return result; } }; }; if (typeof operations !== "undefined") { var hmacInstances = {}; msrcryptoHmac.signHmac = function(p) { var hashName = p.keyHandle.algorithm.hash.name.toUpperCase(), hashAlg = msrcryptoHashFunctions[hashName](), result, id = p.workerid; if (!hmacInstances[id]) { hmacInstances[id] = msrcryptoHmac(p.keyData, hashAlg); } if (p.operationSubType === "process") { hmacInstances[id].process(p.buffer); return null; } if (p.operationSubType === "finish") { result = hmacInstances[id].finish(); hmacInstances[id] = null; return result; } result = hmacInstances[id].computeHmac(p.buffer); hmacInstances[id] = null; return result; }; msrcryptoHmac.verifyHmac = function(p) { var hashName = p.keyHandle.algorithm.hash.name.toUpperCase(), hashAlg = msrcryptoHashFunctions[hashName](), result, id = p.workerid; if (!hmacInstances[id]) { hmacInstances[id] = msrcryptoHmac(p.keyData, hashAlg); } if (p.operationSubType === "process") { hmacInstances[id].process(p.buffer); return null; } if (p.operationSubType === "finish") { result = hmacInstances[id].finish(); result = msrcryptoUtilities.arraysEqual(result, p.signature); hmacInstances[id] = null; return result; } result = hmacInstances[id].computeHmac(p.buffer); result = msrcryptoUtilities.arraysEqual(result, p.signature); hmacInstances[id] = null; return result; }; msrcryptoHmac.generateKey = function(p) { var defaultKeyLengths = { "SHA-1": 64, "SHA-224": 64, "SHA-256": 64, "SHA-384": 128, "SHA-512": 128 }; var keyLength = p.algorithm.length; if (!keyLength) { keyLength = defaultKeyLengths[p.algorithm.hash.name.toUpperCase()]; } return { type: "keyGeneration", keyData: msrcryptoPseudoRandom.getBytes(keyLength), keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoHmac.importKey = function(p) { var keyObject, keyBits = p.keyData.length * 8; if (p.format === "jwk") { keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["k"]); keyObject.alg = keyObject.alg.replace("HS", "SHA-"); } else if (p.format === "raw") { keyObject = { k: msrcryptoUtilities.toArray(p.keyData) }; } else { throw new Error("unsupported import format"); } return { type: "keyImport", keyData: keyObject.k, keyHandle: { algorithm: { name: "HMAC", hash: { name: p.algorithm.hash.name } }, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoHmac.exportKey = function(p) { if (p.format === "jwk") { return { type: "keyExport", keyHandle: msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData) }; } if (p.format === "raw") { return { type: "keyExport", keyHandle: p.keyData }; } throw new Error("unsupported export format"); }; operations.register("importKey", "HMAC", msrcryptoHmac.importKey); operations.register("exportKey", "HMAC", msrcryptoHmac.exportKey); operations.register("generateKey", "HMAC", msrcryptoHmac.generateKey); operations.register("sign", "HMAC", msrcryptoHmac.signHmac); operations.register("verify", "HMAC", msrcryptoHmac.verifyHmac); } var msrcryptoBlockCipher = /* @__PURE__ */ (function() { var aesConstants, x2, x3, x14, x13, x11, x9, sBoxTable, invSBoxTable, rConTable; return { aes: function(keyBytes) { if (!aesConstants) { aesConstants = msrcryptoUtilities.unpackData( "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v0CjnoHz1/t84zmCmy//hzSOQ0TE3unLVHuUMqbCIz3uTJULQvrDTgguoWYo2SSydluiSW2L0SVy+PZkhmiYFtSkXMxdZbaSbHBIUP3tudpeFUZXp42dhJDYqwCMvNMK9+RYBbizRQbQLB6Pyj8PAsGvvQMBE4prOpERQU9n3OqX8s/O8LTmc5asdCLnrTWF4vk36Bx1325H8RpxHSnFiW+3Yg6qGL4b/FY+S8bSeSCa28D+eM1a9B/dqDOIB8cxsRIQWSeA7F9gUX+pGbVKDS3lep+TyZzvoOA7Ta4q9bDI67s8g1OZYRcrBH66d9Ym4WkUY1UhDH2NAQIECBAgQIAbNmzYq02aL168Y8aXNWrUs33678WROXLk071hwp8lSpQzZsyDHTp06MuNAQIECBAgQIAbNmzYq02aL168Y8aXNWrUs33678WROXLk071hwp8lSpQzZsyDHTp06MuNAQIECBAgQIAbNmzYq02aL168Y8aXNWrUs33678WROXLk071hwp8lSpQzZsyDHTp06MuNAQIECBAgQIAbNmzYq02aL168Y8aXNWrUs33678WROXLk071hwp8lSpQzZsyDHTp06MuNAQIECBAgQIAbNmzYq02aL168Y8aXNWrUs33678WROXLk071hwp8lSpQzZsyDHTp06MuN", 256, false ); x2 = aesConstants[0]; x3 = aesConstants[1]; x14 = aesConstants[2]; x13 = aesConstants[3]; x11 = aesConstants[4]; x9 = aesConstants[5]; sBoxTable = aesConstants[6]; invSBoxTable = aesConstants[7]; rConTable = aesConstants[8]; } var blockSize = 128, keyLength, nK, nB = 4, nR, key; keyLength = keyBytes.length * 8; switch (keyLength) { case 128: case 192: case 256: break; default: throw new Error("Unsupported keyLength"); } nK = keyLength / 32; nR = nK + 6; var shiftRows = function(a) { var tmp = a[1]; a[1] = a[5]; a[5] = a[9]; a[9] = a[13]; a[13] = tmp; tmp = a[2]; a[2] = a[10]; a[10] = tmp; tmp = a[6]; a[6] = a[14]; a[14] = tmp; tmp = a[15]; a[15] = a[11]; a[11] = a[7]; a[7] = a[3]; a[3] = tmp; }; var invShiftRows = function(a) { var tmp = a[13]; a[13] = a[9]; a[9] = a[5]; a[5] = a[1]; a[1] = tmp; tmp = a[10]; a[10] = a[2]; a[2] = tmp; tmp = a[14]; a[14] = a[6]; a[6] = tmp; tmp = a[3]; a[3] = a[7]; a[7] = a[11]; a[11] = a[15]; a[15] = tmp; }; var mixColumns = function(state) { var a = state[0], b = state[1], c = state[2], d = state[3], e = state[4], f = state[5], g = state[6], h = state[7], i2 = state[8], j = state[9], k = state[10], l = state[11], m = state[12], n = state[13], o = state[14], p = state[15]; state[0] = x2[a] ^ x3[b] ^ c ^ d; state[1] = a ^ x2[b] ^ x3[c] ^ d; state[2] = a ^ b ^ x2[c] ^ x3[d]; state[3] = x3[a] ^ b ^ c ^ x2[d]; state[4] = x2[e] ^ x3[f] ^ g ^ h; state[5] = e ^ x2[f] ^ x3[g] ^ h; state[6] = e ^ f ^ x2[g] ^ x3[h]; state[7] = x3[e] ^ f ^ g ^ x2[h]; state[8] = x2[i2] ^ x3[j] ^ k ^ l; state[9] = i2 ^ x2[j] ^ x3[k] ^ l; state[10] = i2 ^ j ^ x2[k] ^ x3[l]; state[11] = x3[i2] ^ j ^ k ^ x2[l]; state[12] = x2[m] ^ x3[n] ^ o ^ p; state[13] = m ^ x2[n] ^ x3[o] ^ p; state[14] = m ^ n ^ x2[o] ^ x3[p]; state[15] = x3[m] ^ n ^ o ^ x2[p]; }; var invMixColumns = function(state) { var a = state[0], b = state[1], c = state[2], d = state[3], e = state[4], f = state[5], g = state[6], h = state[7], i2 = state[8], j = state[9], k = state[10], l = state[11], m = state[12], n = state[13], o = state[14], p = state[15]; state[0] = x14[a] ^ x11[b] ^ x13[c] ^ x9[d]; state[1] = x9[a] ^ x14[b] ^ x11[c] ^ x13[d]; state[2] = x13[a] ^ x9[b] ^ x14[c] ^ x11[d]; state[3] = x11[a] ^ x13[b] ^ x9[c] ^ x14[d]; state[4] = x14[e] ^ x11[f] ^ x13[g] ^ x9[h]; state[5] = x9[e] ^ x14[f] ^ x11[g] ^ x13[h]; state[6] = x13[e] ^ x9[f] ^ x14[g] ^ x11[h]; state[7] = x11[e] ^ x13[f] ^ x9[g] ^ x14[h]; state[8] = x14[i2] ^ x11[j] ^ x13[k] ^ x9[l]; state[9] = x9[i2] ^ x14[j] ^ x11[k] ^ x13[l]; state[10] = x13[i2] ^ x9[j] ^ x14[k] ^ x11[l]; state[11] = x11[i2] ^ x13[j] ^ x9[k] ^ x14[l]; state[12] = x14[m] ^ x11[n] ^ x13[o] ^ x9[p]; state[13] = x9[m] ^ x14[n] ^ x11[o] ^ x13[p]; state[14] = x13[m] ^ x9[n] ^ x14[o] ^ x11[p]; state[15] = x11[m] ^ x13[n] ^ x9[o] ^ x14[p]; }; var xorWord = function(a, b) { return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; }; var addRoundKey = function(state, keySchedule, offset) { for (var i2 = 0; i2 < state.length; i2 += 1) { state[i2] ^= keySchedule[i2 + offset]; } }; var rotWord = function(word) { var a = word[0]; word[0] = word[1]; word[1] = word[2]; word[2] = word[3]; word[3] = a; }; var subWord = function(word) { for (var i2 = 0; i2 < word.length; i2 += 1) { word[i2] = sBoxTable[word[i2]]; } }; var invSubWord = function(word) { for (var i2 = 0; i2 < word.length; i2 += 1) { word[i2] = invSBoxTable[word[i2]]; } }; var getWord = function(tab, i2) { return [tab[4 * i2], tab[4 * i2 + 1], tab[4 * i2 + 2], tab[4 * i2 + 3]]; }; var setWord = function(left, right, indexL, indexR) { left[4 * indexL] = right[4 * indexR]; left[4 * indexL + 1] = right[4 * indexR + 1]; left[4 * indexL + 2] = right[4 * indexR + 2]; left[4 * indexL + 3] = right[4 * indexR + 3]; }; var expandKey = function(keyIn) { var temp, res = [], i2 = 0; while (i2 < 4 * nK) { res.push(keyIn[i2++]); } i2 = nK; while (i2 < nB * (nR + 1)) { temp = getWord(res, i2 - 1); if (i2 % nK === 0) { var index = i2 / nK; var rcon = [rConTable[index], 0, 0, 0]; rotWord(temp); subWord(temp); temp = xorWord(temp, rcon); } else if (nK > 6 && i2 % nK === 4) { subWord(temp); } var newWord = xorWord(getWord(res, i2 - nK), temp); setWord(res, newWord, i2, 0); i2 += 1; } return res; }; key = expandKey(keyBytes); return { encrypt: function(dataBytes) { var state = dataBytes, round; addRoundKey(state, key, 0); for (round = 1; round <= nR - 1; round += 1) { subWord(state); shiftRows(state); mixColumns(state); addRoundKey(state, key, 4 * round * nB); } subWord(state); shiftRows(state); addRoundKey(state, key, 4 * nR * nB); return state; }, decrypt: function(dataBytes) { var state = dataBytes, round; addRoundKey(state, key, 4 * nR * nB); for (round = nR - 1; round >= 1; round -= 1) { invShiftRows(state); invSubWord(state); addRoundKey(state, key, 4 * round * nB); invMixColumns(state); } invShiftRows(state); invSubWord(state); addRoundKey(state, key, 0); return state; }, clear: function() { }, keyLength, blockSize }; } }; })(); var msrcryptoPadding = msrcryptoPadding || {}; msrcryptoPadding.pkcsv7 = function(blockSize) { function pad(messageBlocks) { var lastIndex = messageBlocks.length - 1 >= 0 ? messageBlocks.length - 1 : 0; var lastBlock = messageBlocks[lastIndex]; var lastBlockLength = lastBlock.length; var createNewBlock = lastBlockLength === blockSize; if (createNewBlock) { var newBlock = []; var i2; for (i2 = 0; i2 < blockSize; i2 += 1) { newBlock.push(blockSize); } messageBlocks.push(newBlock); } else { var byteToAdd = blockSize - lastBlockLength & 255; while (lastBlock.length !== blockSize) { lastBlock.push(byteToAdd); } } } function unpad(messageBytes) { var verified = true; if (messageBytes.length % blockSize !== 0) { verified = false; } var lastBlock = messageBytes.slice(-blockSize); var padLen = lastBlock[lastBlock.length - 1]; for (var i2 = 0; i2 < blockSize; i2++) { var isPaddingElement = blockSize - i2 <= padLen; var isCorrectValue = lastBlock[i2] === padLen; verified = (isPaddingElement ? isCorrectValue : true) && verified; } var trimLen = verified ? padLen : 0; messageBytes.length -= trimLen; return verified; } return { pad, unpad }; }; var msrcryptoCbc = function(blockCipher) { var blockSize = blockCipher.blockSize / 8; var paddingScheme = msrcryptoPadding.pkcsv7(blockSize); var mergeBlocks = function(tab) { var res = [], i2, j; for (i2 = 0; i2 < tab.length; i2 += 1) { var block = tab[i2]; for (j = 0; j < block.length; j += 1) { res.push(block[j]); } } return res; }; function getBlocks(dataBytes) { var blocks = []; mBuffer = mBuffer.concat(dataBytes); var blockCount = Math.floor(mBuffer.length / blockSize); for (var i2 = 0; i2 < blockCount; i2++) { blocks.push(mBuffer.slice(i2 * blockSize, (i2 + 1) * blockSize)); } mBuffer = mBuffer.slice(blockCount * blockSize); return blocks; } function encryptBlocks(blocks) { var result = [], toEncrypt; for (var i2 = 0; i2 < blocks.length; i2++) { toEncrypt = msrcryptoUtilities.xorVectors(mIvBytes, blocks[i2]); result.push(blockCipher.encrypt(toEncrypt)); mIvBytes = result[i2]; } return result; } function decryptBlocks(blocks) { var result = [], toDecrypt, decrypted; for (var i2 = 0; i2 < blocks.length; i2 += 1) { toDecrypt = blocks[i2].slice(0, blocks[i2].length); decrypted = blockCipher.decrypt(toDecrypt); result.push(msrcryptoUtilities.xorVectors(mIvBytes, decrypted)); mIvBytes = blocks[i2]; } return result; } function clearState() { mBuffer = []; mResultBuffer = []; mIvBytes = null; } var mBuffer = [], mResultBuffer = [], mIvBytes; return { init: function(ivBytes) { if (ivBytes.length !== blockSize) { throw new Error("Invalid iv size"); } mIvBytes = ivBytes.slice(); }, encrypt: function(plainBytes) { var result = encryptBlocks(getBlocks(plainBytes)); mResultBuffer = mResultBuffer.concat(mergeBlocks(result)); return this.finishEncrypt(); }, processEncrypt: function(plainBytes) { var result = mergeBlocks(encryptBlocks(getBlocks(plainBytes))); return result; }, finishEncrypt: function() { var blocks = mBuffer.length === 1 ? [[mBuffer[0]]] : [mBuffer]; paddingScheme.pad(blocks); var result = mResultBuffer.concat(mergeBlocks(encryptBlocks(blocks))); clearState(); return result; }, decrypt: function(cipherBytes) { this.processDecrypt(cipherBytes); return this.finishDecrypt(); }, processDecrypt: function(cipherBytes) { var result = decryptBlocks(getBlocks(cipherBytes)); mResultBuffer = mResultBuffer.concat(mergeBlocks(result)); return; }, finishDecrypt: function() { var result = mResultBuffer; var verified = paddingScheme.unpad(result); clearState(); return result; } }; }; if (typeof operations !== "undefined") { var cbcInstances = {}; msrcryptoCbc.workerEncrypt = function(p) { var result, id = p.workerid; if (!cbcInstances[id]) { cbcInstances[id] = msrcryptoCbc(msrcryptoBlockCipher.aes(p.keyData)); cbcInstances[id].init(p.algorithm.iv); } if (p.operationSubType === "process") { return cbcInstances[id].processEncrypt(p.buffer); } if (p.operationSubType === "finish") { result = cbcInstances[id].finishEncrypt(); cbcInstances[id] = null; return result; } result = cbcInstances[id].encrypt(p.buffer); cbcInstances[id] = null; return result; }; msrcryptoCbc.workerDecrypt = function(p) { var result, id = p.workerid; if (!cbcInstances[id]) { cbcInstances[id] = msrcryptoCbc(msrcryptoBlockCipher.aes(p.keyData)); cbcInstances[id].init(p.algorithm.iv); } if (p.operationSubType === "process") { cbcInstances[id].processDecrypt(p.buffer); return; } if (p.operationSubType === "finish") { result = cbcInstances[id].finishDecrypt(); cbcInstances[id] = null; return result; } result = cbcInstances[id].decrypt(p.buffer); cbcInstances[id] = null; return result; }; msrcryptoCbc.generateKey = function(p) { if (p.algorithm.length % 8 !== 0) { throw new Error(); } return { type: "keyGeneration", keyData: msrcryptoPseudoRandom.getBytes(Math.floor(p.algorithm.length / 8)), keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoCbc.importKey = function(p) { var keyObject; var keyBits = p.keyData.length * 8; if (p.format === "jwk") { keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["k"]); } else if (p.format === "raw") { if (keyBits !== 128 && keyBits !== 192 && keyBits !== 256) { throw new Error("invalid key length (should be 128, 192, or 256 bits)"); } keyObject = { k: msrcryptoUtilities.toArray(p.keyData) }; } else { throw new Error("unsupported import format"); } p.algorithm.length = keyObject.k.length * 8; return { keyData: keyObject.k, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: "secret" }, type: "keyImport" }; }; msrcryptoCbc.exportKey = function(p) { if (p.format === "jwk") { return { type: "keyExport", keyHandle: msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData) }; } if (p.format === "raw") { return { type: "keyExport", keyHandle: p.keyData }; } throw new Error("unsupported export format"); }; operations.register("importKey", "AES-CBC", msrcryptoCbc.importKey); operations.register("exportKey", "AES-CBC", msrcryptoCbc.exportKey); operations.register("generateKey", "AES-CBC", msrcryptoCbc.generateKey); operations.register("encrypt", "AES-CBC", msrcryptoCbc.workerEncrypt); operations.register("decrypt", "AES-CBC", msrcryptoCbc.workerDecrypt); } var msrcryptoGcm = function(blockCipher) { var utils2 = msrcryptoUtilities; var mBuffer = [], mIvBytes, mAdditionalBytes, mTagLength, mJ0, mJ0inc, mH = blockCipher.encrypt(utils2.getVector(16)), mGHashState = utils2.getVector(16), mGHashBuffer = [], mCipherText = [], mGctrCb, mBytesProcessed = 0; function ghash(hashSubkey, dataBytes) { var blockCount = Math.floor(dataBytes.length / 16), dataBlock; for (var i2 = 0; i2 < blockCount; i2++) { dataBlock = dataBytes.slice(i2 * 16, i2 * 16 + 16); mGHashState = blockMultiplication(utils2.xorVectors(mGHashState, dataBlock), hashSubkey); } mGHashBuffer = dataBytes.slice(blockCount * 16); return mGHashState; } function finishGHash() { var u = 16 * Math.ceil(mBytesProcessed / 16) - mBytesProcessed; var lenA = numberTo8Bytes(mAdditionalBytes.length * 8), lenC = numberTo8Bytes(mBytesProcessed * 8); var p = mGHashBuffer.concat(utils2.getVector(u)).concat(lenA).concat(lenC); return ghash(mH, p); } function blockMultiplication(blockX, blockY) { var z = utils2.getVector(16), v = blockY.slice(0), mask, j, i2; for (i2 = 0; i2 < 128; i2++) { mask = -getBit(blockX, i2) & 255; for (j = 0; j < 16; j++) { z[j] = z[j] ^ v[j] & mask; } mask = -(v[15] & 1) & 255; shiftRight(v); v[0] ^= 225 & mask; } return z; } function shiftRight(dataBytes) { for (var i2 = dataBytes.length - 1; i2 > 0; i2--) { dataBytes[i2] = (dataBytes[i2 - 1] & 1) << 7 | dataBytes[i2] >>> 1; } dataBytes[0] = dataBytes[0] >>> 1; return dataBytes; } function getBit(byteArray, bitNumber) { var byteIndex = Math.floor(bitNumber / 8); return byteArray[byteIndex] >> 7 - bitNumber % 8 & 1; } function inc(dataBytes) { var carry = 256; for (var i2 = 1; i2 <= 4; i2++) { carry = (carry >>> 8) + dataBytes[dataBytes.length - i2]; dataBytes[dataBytes.length - i2] = carry & 255; } return dataBytes; } function gctr(icb, dataBytes) { var blockCount = Math.ceil(dataBytes.length / 16), dataBlock, result = []; if (mGctrCb !== icb) { mGctrCb = icb.slice(); } for (var block = 0; block < blockCount; block++) { dataBlock = dataBytes.slice(block * 16, block * 16 + 16); var e = blockCipher.encrypt(mGctrCb.slice()); result = result.concat(utils2.xorVectors(dataBlock, e)); mGctrCb = inc(mGctrCb); } return result; } function numberTo8Bytes(integer) { return [0, 0, 0, 0, integer >>> 24 & 255, integer >>> 16 & 255, integer >>> 8 & 255, integer & 255]; } function padBlocks(dataBytes) { var padLen = 16 * Math.ceil(mAdditionalBytes.length / 16) - mAdditionalBytes.length; return dataBytes.concat(utils2.getVector(padLen)); } function clearState() { mBytesProcessed = 0; mBuffer = []; mCipherText = []; mGHashState = utils2.getVector(16); mGHashBuffer = []; mGctrCb = mIvBytes = mAdditionalBytes = null; } function init(ivBytes, additionalBytes, tagLength) { mAdditionalBytes = additionalBytes || []; mTagLength = isNaN(tagLength) ? 128 : tagLength; if (mTagLength % 8 !== 0) { throw new Error("DataError"); } mIvBytes = ivBytes; if (mIvBytes.length === 12) { mJ0 = mIvBytes.concat([0, 0, 0, 1]); } else { var l = 16 * Math.ceil(mIvBytes.length / 16) - mIvBytes.length; mJ0 = ghash(mH, mIvBytes.concat(utils2.getVector(l + 8)).concat(numberTo8Bytes(mIvBytes.length * 8))); mGHashState = utils2.getVector(16); } mJ0inc = inc(mJ0.slice()); ghash(mH, padBlocks(mAdditionalBytes)); } function encrypt(plainBytes) { mBytesProcessed = plainBytes.length; var c = gctr(mJ0inc, plainBytes); ghash(mH, c); var s = finishGHash(); var t = gctr(mJ0, s).slice(0, mTagLength / 8); clearState(); return c.slice().concat(t); } function decrypt(cipherBytes, tagBytes) { mBytesProcessed = cipherBytes.length; var p = gctr(mJ0inc, cipherBytes); ghash(mH, cipherBytes); var s = finishGHash(); var t = gctr(mJ0, s).slice(0, mTagLength / 8); clearState(); if (utils2.arraysEqual(t, tagBytes)) { return p; } else { return null; } } function processEncrypt(plainBytes) { mBuffer = mBuffer.concat(plainBytes); var fullBlocks = mBuffer.slice(0, Math.floor(mBuffer.length / 16) * 16); mBytesProcessed += fullBlocks.length; mBuffer = mBuffer.slice(fullBlocks.length); var c = gctr(mGctrCb || mJ0inc, fullBlocks); mCipherText = mCipherText.concat(c); ghash(mH, c); } function processDecrypt(cipherBytes) { mBuffer = mBuffer.concat(cipherBytes); var fullBlocks = mBuffer.slice(0, Math.floor((mBuffer.length - mTagLength / 8) / 16) * 16); mBytesProcessed += fullBlocks.length; mBuffer = mBuffer.slice(fullBlocks.length); var c = gctr(mGctrCb || mJ0inc, fullBlocks); mCipherText = mCipherText.concat(c); ghash(mH, fullBlocks); } function finishEncrypt() { var c = gctr(mGctrCb, mBuffer); mCipherText = mCipherText.concat(c); mBytesProcessed += mBuffer.length; var s = finishGHash(); var t = gctr(mJ0, s).slice(0, mTagLength / 8); var result = mCipherText.slice().concat(t); clearState(); return result; } function finishDecrypt() { var tagLength = Math.floor(mTagLength / 8); var tagBytes = mBuffer.slice(-tagLength); mBuffer = mBuffer.slice(0, mBuffer.length - tagLength); var c = gctr(mGctrCb, mBuffer); mCipherText = mCipherText.concat(c); mBytesProcessed += mBuffer.length; var s = finishGHash(); var t = gctr(mJ0, s).slice(0, mTagLength / 8); var result = mCipherText.slice(); clearState(); if (utils2.arraysEqual(t, tagBytes)) { return result; } else { return null; } } return { init, encrypt, decrypt, processEncrypt, processDecrypt, finishEncrypt, finishDecrypt }; }; if (typeof operations !== "undefined") { var gcmInstances = {}; msrcryptoGcm.encrypt = function(p) { var result, id = p.workerid; if (!gcmInstances[id]) { gcmInstances[id] = msrcryptoGcm(msrcryptoBlockCipher.aes(p.keyData)); gcmInstances[id].init(p.algorithm.iv, p.algorithm.additionalData, p.algorithm.tagLength); } if (p.operationSubType === "process") { gcmInstances[id].processEncrypt(p.buffer); return; } if (p.operationSubType === "finish") { result = gcmInstances[id].finishEncrypt(); gcmInstances[id] = null; return result; } result = gcmInstances[id].encrypt(p.buffer); gcmInstances[id] = null; return result; }; msrcryptoGcm.decrypt = function(p) { var result, id = p.workerid; if (!gcmInstances[id]) { gcmInstances[id] = msrcryptoGcm(msrcryptoBlockCipher.aes(p.keyData)); gcmInstances[id].init(p.algorithm.iv, p.algorithm.additionalData, p.algorithm.tagLength); } if (p.operationSubType === "process") { gcmInstances[id].processDecrypt(p.buffer); return; } if (p.operationSubType === "finish") { result = gcmInstances[id].finishDecrypt(); gcmInstances[id] = null; if (result === null) { throw new Error("OperationError"); } return result; } var tagLength = p.algorithm.tagLength ? Math.floor(p.algorithm.tagLength / 8) : 16; var cipherBytes = p.buffer.slice(0, p.buffer.length - tagLength); var tagBytes = p.buffer.slice(-tagLength); result = gcmInstances[id].decrypt(cipherBytes, tagBytes); gcmInstances[id] = null; if (result === null) { throw new Error("OperationError"); } return result; }; msrcryptoGcm.generateKey = function(p) { if (p.algorithm.length % 8 !== 0) { throw new Error(); } return { type: "keyGeneration", keyData: msrcryptoPseudoRandom.getBytes(Math.floor(p.algorithm.length / 8)), keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoGcm.importKey = function(p) { var keyObject, keyBits = p.keyData.length * 8; if (p.format === "jwk") { keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["k"]); } else if (p.format === "raw") { if (keyBits !== 128 && keyBits !== 192 && keyBits !== 256) { throw new Error("invalid key length (should be 128, 192, or 256 bits)"); } keyObject = { k: msrcryptoUtilities.toArray(p.keyData) }; } else { throw new Error("unsupported import format"); } return { type: "keyImport", keyData: keyObject.k, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoGcm.exportKey = function(p) { if (p.format === "jwk") { return { type: "keyExport", keyHandle: msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData) }; } if (p.format === "raw") { return { type: "keyExport", keyHandle: p.keyData }; } throw new Error("unsupported export format"); }; operations.register("importKey", "AES-GCM", msrcryptoGcm.importKey); operations.register("exportKey", "AES-GCM", msrcryptoGcm.exportKey); operations.register("generateKey", "AES-GCM", msrcryptoGcm.generateKey); operations.register("encrypt", "AES-GCM", msrcryptoGcm.encrypt); operations.register("decrypt", "AES-GCM", msrcryptoGcm.decrypt); } function MsrcryptoPrng() { if (!(this instanceof MsrcryptoPrng)) { throw new Error("create MsrcryptoPrng object with new keyword"); } var initialized = false; var key; var v; var keyLen; var seedLen; var reseedCounter = 1; var reseedInterval = Math.pow(2, 48); initialize(); function addOne(counter) { var i2; for (i2 = counter.length - 1; i2 >= 0; i2 -= 1) { counter[i2] += 1; if (counter[i2] >= 256) { counter[i2] = 0; } if (counter[i2]) { break; } } } function initialize() { key = msrcryptoUtilities.getVector(32); v = msrcryptoUtilities.getVector(16); keyLen = 32; seedLen = 48; reseedCounter = 1; } function reseed(entropy, additionalEntropy) { additionalEntropy = additionalEntropy || [0]; if (additionalEntropy.length > seedLen) { throw new Error("Incorrect entropy or additionalEntropy length"); } additionalEntropy = additionalEntropy.concat(msrcryptoUtilities.getVector(seedLen - additionalEntropy.length)); entropy = entropy.concat(msrcryptoUtilities.getVector((seedLen - entropy.length % seedLen) % seedLen)); for (var i2 = 0; i2 < entropy.length; i2 += seedLen) { var seedMaterial = msrcryptoUtilities.xorVectors(entropy.slice(i2, i2 + seedLen), additionalEntropy); update(seedMaterial); } reseedCounter = 1; } function update(providedData) { var temp = []; var blockCipher = new msrcryptoBlockCipher.aes(key); while (temp.length < seedLen) { addOne(v); var toEncrypt = v.slice(0, 16); var outputBlock = blockCipher.encrypt(toEncrypt); temp = temp.concat(outputBlock); } temp = msrcryptoUtilities.xorVectors(temp, providedData); key = temp.slice(0, keyLen); v = temp.slice(keyLen); } function generate(requestedBytes, additionalInput) { if (requestedBytes >= 65536) { throw new Error("too much random requested"); } if (reseedCounter > reseedInterval) { throw new Error("Reseeding is required"); } if (additionalInput && additionalInput.length > 0) { while (additionalInput.length < seedLen) { additionalInput = additionalInput.concat(msrcryptoUtilities.getVector(seedLen - additionalInput.length)); } update(additionalInput); } else { additionalInput = msrcryptoUtilities.getVector(seedLen); } var temp = []; var blockCipher = new msrcryptoBlockCipher.aes(key); while (temp.length < requestedBytes) { addOne(v); var toEncrypt = v.slice(0, v.length); var outputBlock = blockCipher.encrypt(toEncrypt); temp = temp.concat(outputBlock); } temp = temp.slice(0, requestedBytes); update(additionalInput); reseedCounter += 1; return temp; } return { reseed, getBytes: function(length, additionalInput) { if (!initialized) { throw new Error("can't get randomness before initialization"); } return generate(length, additionalInput); }, getNonZeroBytes: function(length, additionalInput) { if (!initialized) { throw new Error("can't get randomness before initialization"); } var result = []; var buff; while (result.length < length) { buff = generate(length, additionalInput); for (var i2 = 0; i2 < buff.length; i2 += 1) { if (buff[i2] !== 0) { result.push(buff[i2]); } } } return result.slice(0, length); }, init: function(entropy, personalization) { if (entropy.length < seedLen) { throw new Error("Initial entropy length too short"); } initialize(); reseed(entropy, personalization); initialized = true; } }; } var msrcryptoPseudoRandom = new MsrcryptoPrng(); function MsrcryptoEntropy() { var poolLength = 48; var collectorPool = []; var collectorPoolLength = 128; var collectorsRegistered = 0; var entropyPoolPrng = new MsrcryptoPrng(); var initialized = false; var cryptographicPRNGPresent = false; function collectEntropy() { var headerList = [ "Cookie", "RedirectUri", "ETag", "x-ms-client-antiforgery-id", "x-ms-client-request-id", "x-ms-client-session-id", "SubscriptionPool" ]; var i2, pool = []; for (i2 = 0; i2 < poolLength; i2 += 1) { pool[i2] = Math.floor(Math.random() * 256); } var prngCrypto = global2.crypto || global2.msCrypto; if (prngCrypto && typeof prngCrypto.getRandomValues === "function") { if (global2.Uint8Array) { var res = new global2.Uint8Array(poolLength); prngCrypto.getRandomValues(res); pool = pool.concat(Array.apply(null, res)); cryptographicPRNGPresent = true; } } if (typeof XMLHttpRequest !== "undefined") { var req = new XMLHttpRequest(); for (i2 = 0; i2 < headerList.length; i2 += 1) { try { var header = req.getResponseHeader(headerList[i2]); if (header) { var arr = msrcryptoUtilities.stringToBytes(header); pool = pool.concat(arr); } } catch (err) { } } } if (!cryptographicPRNGPresent && canCollect) { pool = pool.concat(collectorPool.splice(0, collectorPool.length)); collectors.startCollectors(); } initialized ? entropyPoolPrng.reseed(pool) : entropyPoolPrng.init(pool); initialized = true; } function updatePool(entropyData) { for (var i2 = 0; i2 < entropyData.length; ++i2) { collectorPool.push(entropyData[i2]); } if (collectorPool.length >= collectorPoolLength) { collectors.stopCollectors(); } } var canCollect = global2 && global2.addEventListener || typeof document !== "undefined" && document.attachEvent; var collectors = /* @__PURE__ */ (function() { return { startCollectors: function() { if (!this.collectorsRegistered) { if (global2.addEventListener) { global2.addEventListener("mousemove", this.MouseEventCallBack, true); global2.addEventListener("load", this.LoadTimeCallBack, true); } else if (document.attachEvent) { document.attachEvent("onmousemove", this.MouseEventCallBack); document.attachEvent("onload", this.LoadTimeCallBack); } else { throw new Error("Can't attach events for entropy collection"); } this.collectorsRegistered = 1; } }, stopCollectors: function() { if (this.collectorsRegistered) { if (global2.removeEventListener) { global2.removeEventListener("mousemove", this.MouseEventCallBack, 1); global2.removeEventListener("load", this.LoadTimeCallBack, 1); } else if (global2.detachEvent) { global2.detachEvent("onmousemove", this.MouseEventCallBack); global2.detachEvent("onload", this.LoadTimeCallBack); } this.collectorsRegistered = 0; } }, MouseEventCallBack: function(eventData) { var d = (/* @__PURE__ */ new Date()).valueOf(); var x = eventData.x || eventData.clientX || eventData.offsetX || 0; var y = eventData.y || eventData.clientY || eventData.offsetY || 0; var arr = [ d & 255, d >> 8 & 255, d >> 16 & 255, d >> 24 & 255, x & 255, x >> 8 & 255, y & 255, y >> 8 & 255 ]; updatePool(arr); }, LoadTimeCallBack: function() { var d = (/* @__PURE__ */ new Date()).valueOf(); var dateArray = [d & 255, d >> 8 & 255, d >> 16 & 255, d >> 24 & 255]; updatePool(dateArray); } }; })(); return { init: function() { collectEntropy(); if (!cryptographicPRNGPresent && !collectorsRegistered && canCollect) { try { collectors.startCollectors(); } catch (e) { } } }, reseed: function(entropy) { entropyPoolPrng.reseed(entropy); }, read: function(length) { if (!initialized) { throw new Error("Entropy pool is not initialized."); } var ret = entropyPoolPrng.getBytes(length); collectEntropy(); return ret; } }; } var prime = (function() { var smallPrimes = []; var trialValues = []; var MAX_SMALL_PRIMES = 4096 * 4; function primeSieve(max) { var numbers = new Array(max + 1), results = [], i2, j, limit = Math.sqrt(max) | 0; for (i2 = 3; i2 <= limit; i2 += 2) { for (j = i2 * i2; j <= max; j += i2 * 2) { numbers[j] = 0; } } for (i2 = 3; i2 <= max; i2 += 2) { if (numbers[i2] !== 0) { results.push(i2); } } return results; } function incrementalTrialDivision(increment) { var i2, len = trialValues.length; for (i2 = 0; i2 < len; i2++) { if ((trialValues[i2] + increment) % smallPrimes[i2] === 0) { return false; } } return true; } function setupIncrementalTrialDivision(candidate) { var i2, j, r, p, y, primeCount, len = candidate.length - 1, db = cryptoMath.DIGIT_BASE, h = candidate[len]; if (smallPrimes.length === 0) { smallPrimes = primeSieve(MAX_SMALL_PRIMES); } primeCount = smallPrimes.length; trialValues = new Array(primeCount); for (i2 = 0; i2 < primeCount; i2++) { j = len; y = smallPrimes[i2]; if (h < y) { r = h; j--; } else { r = 0; } while (j >= 0) { p = r * db + candidate[j--]; r = p - (p / y | 0) * y; } trialValues[i2] = r; } return; } function largestDivisibleByPowerOfTwo(number) { var k = 0, i2 = 0, s = 0, j; if (cryptoMath.isZero(number)) { return 0; } for (k = 0; number[k] === 0; k++) { } for (i2 = 0, j = 2; number[k] % j === 0; j *= 2, i2++) { } return k * cryptoMath.DIGIT_BITS + i2; } function sizeInBits(digits) { var k = 0, i2 = 0, j = 0; if (cryptoMath.isZero(digits)) { return 0; } for (k = digits.length - 1; digits[k] === 0; k--) { } for (i2 = cryptoMath.DIGIT_BITS - 1, j = 1 << i2; i2 > 0; j = j >>> 1, i2--) { if ((digits[k] & j) !== 0) { break; } } return k * cryptoMath.DIGIT_BITS + i2; } function millerRabin(number, iterations) { var w = number; var wminus1 = []; cryptoMath.subtract(w, [1], wminus1); var a = largestDivisibleByPowerOfTwo(wminus1); var m = []; cryptoMath.shiftRight(wminus1, m, a); var wlen = sizeInBits(w); var b; var montmul = cryptoMath.MontgomeryMultiplier(w); for (var i2 = 1; i2 <= iterations; i2++) { var status = false; do { b = getRandomOddNumber(wlen); } while (cryptoMath.compareDigits(b, wminus1) >= 0); var z = []; montmul.modExp(b, m, z, true); if (cryptoMath.compareDigits(z, [1]) === 0 || cryptoMath.compareDigits(z, wminus1) === 0) { continue; } for (var j = 1; j < a; j++) { montmul.montgomeryMultiply(z, z, z); if (cryptoMath.compareDigits(z, wminus1) === 0) { status = true; break; } if (cryptoMath.compareDigits(z, [1]) === 0) { return false; } } if (status === false) { return false; } } return true; } function generatePrime(bits) { var candidate = getRandomOddNumber(bits), inc = 0, possiblePrime, isPrime = false, candidatePlusInc = []; setupIncrementalTrialDivision(candidate); while (true) { possiblePrime = incrementalTrialDivision(inc); if (possiblePrime) { cryptoMath.add(candidate, [inc], candidatePlusInc); if (millerRabin(candidatePlusInc, 6) === true) { return candidatePlusInc; } } inc += 2; } } function getRandomOddNumber(bits) { var numBytes = Math.ceil(bits / 8), bytes = msrcryptoPseudoRandom.getBytes(numBytes), digits; bytes[0] |= 128; bytes[bytes.length - 1] |= 1; return cryptoMath.bytesToDigits(bytes); } return { generatePrime }; })(); var msrcryptoRsaBase = function(keyStruct) { var utils2 = msrcryptoUtilities, keyIsPrivate = keyStruct.hasOwnProperty("n") && keyStruct.hasOwnProperty("d"), keyIsCrt = keyStruct.hasOwnProperty("p") && keyStruct.hasOwnProperty("q"), modulusLength = keyStruct.n.length; function toBytes(digits) { var bytes = cryptoMath.digitsToBytes(digits); utils2.padFront(bytes, 0, modulusLength); return bytes; } function modExp(dataBytes, expBytes, modulusBytes) { var exponent = cryptoMath.bytesToDigits(expBytes); var group = cryptoMath.IntegerGroup(modulusBytes); var base = group.createElementFromBytes(dataBytes); var result = group.modexp(base, exponent); return result.m_digits; } function decryptModExp(cipherBytes) { var resultElement = modExp(cipherBytes, keyStruct.d, keyStruct.n); return toBytes(resultElement); } function decryptCrt(cipherBytes) { var b2d = cryptoMath.bytesToDigits, p = keyStruct.p, q = keyStruct.q, dp = keyStruct.dp, dq = keyStruct.dq, invQ = keyStruct.qi, pDigits = b2d(p), qDigits = b2d(q), temp = new Array(pDigits.length + qDigits.length), m1Digits = new Array(pDigits.length + 1), m2Digits = new Array(qDigits.length + 1), cDigits = b2d(cipherBytes), mm = cryptoMath.MontgomeryMultiplier, mmp = new mm(keyStruct.ctxp ? void 0 : pDigits, keyStruct.ctxp), mmq = new mm(keyStruct.ctxq ? void 0 : qDigits, keyStruct.ctxq); mmp.reduce(cDigits, temp); mmp.modExp(temp, b2d(dp), m1Digits); mmq.reduce(cDigits, temp); mmq.modExp(temp, b2d(dq), m2Digits); var carry = cryptoMath.subtract(m1Digits, m2Digits, temp); if (carry !== 0) { cryptoMath.subtract(m2Digits, m1Digits, temp); } cryptoMath.modMul(temp, b2d(invQ), pDigits, cDigits); if (carry !== 0) { cryptoMath.subtract(pDigits, cDigits, cDigits); } cryptoMath.multiply(cDigits, qDigits, temp); cryptoMath.add(m2Digits, temp, m1Digits); return toBytes(m1Digits); } return { encrypt: function(messageBytes) { var bytes = toBytes(modExp(messageBytes, keyStruct.e, keyStruct.n, true)); return bytes; }, decrypt: function(cipherBytes) { if (keyIsCrt) { return decryptCrt(cipherBytes); } if (keyIsPrivate) { return decryptModExp(cipherBytes); } throw new Error("missing private key"); } }; }; var rsaShared = { mgf1: function(seedBytes, maskLen, hashFunction) { var t = [], bytes, hash, counter, hashByteLen = hashFunction.hashLen / 8; for (counter = 0; counter <= Math.floor(maskLen / hashByteLen); counter += 1) { bytes = [counter >>> 24 & 255, counter >>> 16 & 255, counter >>> 8 & 255, counter & 255]; hash = hashFunction.computeHash(seedBytes.concat(bytes)); t = t.concat(hash); } return t.slice(0, maskLen); }, checkMessageVsMaxHash: function(messageBytes, hashFunction) { if (messageBytes.length > (hashFunction.maxMessageSize || 4294967295)) { throw new Error("message too long"); } return; } }; var rsaMode = rsaMode || {}; rsaMode.oaep = function(keyStruct, hashFunction) { var utils2 = msrcryptoUtilities, random = msrcryptoPseudoRandom, size = keyStruct.n.length; if (hashFunction === null) { throw new Error("must supply hashFunction"); } function pad(message, label) { var lHash, psLen, psArray, i2, db, seed; var dbMask, maskeddb, seedMask, maskedSeed; var encodedMessage; if (message.length > size - 2 * (hashFunction.hashLen / 8) - 2) { throw new Error("Message too long."); } if (label == null) { label = []; } lHash = hashFunction.computeHash(label); psLen = size - message.length - 2 * lHash.length - 2; psArray = utils2.getVector(psLen); db = lHash.concat(psArray, [1], message); seed = random.getBytes(lHash.length); dbMask = rsaShared.mgf1(seed, size - lHash.length - 1, hashFunction); maskeddb = utils2.xorVectors(db, dbMask); seedMask = rsaShared.mgf1(maskeddb, lHash.length, hashFunction); maskedSeed = utils2.xorVectors(seed, seedMask); encodedMessage = [0].concat(maskedSeed).concat(maskeddb); message = encodedMessage.slice(); return message; } function unpad(encodedBytes, labelBytes) { var lHash, maskedSeed, maskeddb, seedMask; var seed, dbMask, db; var lHashp, i2 = 0; var valid = encodedBytes[0] === 0; if (!labelBytes) { labelBytes = []; } lHash = hashFunction.computeHash(labelBytes); maskedSeed = encodedBytes.slice(1, lHash.length + 1); maskeddb = encodedBytes.slice(lHash.length + 1); seedMask = rsaShared.mgf1(maskeddb, lHash.length, hashFunction); seed = utils2.xorVectors(maskedSeed, seedMask); dbMask = rsaShared.mgf1(seed, size - lHash.length - 1, hashFunction); db = utils2.xorVectors(maskeddb, dbMask); lHashp = db.slice(0, lHash.length); valid = valid && utils2.arraysEqual(lHash, lHashp); db = db.slice(lHash.length); while (!db[i2++]) { } return { valid, data: db.slice(i2) }; } return { pad: function(messageBytes, labelBytes) { return pad(messageBytes, labelBytes); }, unpad: function(encodedBytes, labelBytes) { return unpad(encodedBytes, labelBytes); } }; }; var rsaMode = rsaMode || {}; rsaMode.pkcs1Encrypt = function(keyStruct) { var random = msrcryptoPseudoRandom, size = keyStruct.n.length; function pad(data) { var randomness; if (data.length > size - 11) { throw new Error("message too long"); } randomness = random.getNonZeroBytes(size - data.length - 3); return [0, 2].concat(randomness, [0], data); } function validatePadding(paddedData) { var paddingValid = paddedData[0] === 0 && paddedData[1] === 2; for (var i2 = 2; i2 < 10; i2++) { paddingValid = paddingValid && !!paddedData[i2]; } return paddingValid; } function unpad(paddedData) { var i2, paddingIsValid = validatePadding(paddedData), startOfData = 0; for (i2 = 1; i2 < paddedData.length; i2 += 1) { startOfData = startOfData || +!paddedData[i2] && i2 + 1; } startOfData = -paddingIsValid && startOfData; return { data: paddedData.slice(startOfData), valid: paddingIsValid }; } return { pad: function(messageBytes) { return pad(messageBytes); }, unpad: function(encodedBytes) { return unpad(encodedBytes); } }; }; rsaMode.pkcs1Sign = function(keyStruct, hashFunction) { var utils2 = msrcryptoUtilities, size = keyStruct.n.length; function emsa_pkcs1_v15_encode(messageBytes) { var paddedData, hash, tlen; hash = hashFunction.computeHash(messageBytes.slice()); paddedData = hashFunction.der.concat(hash); tlen = paddedData.length; if (size < tlen + 11) { throw new Error("intended encoded message length too short"); } return [0, 1].concat(utils2.getVector(size - tlen - 3, 255), [0], paddedData); } return { sign: function(messageBytes) { return emsa_pkcs1_v15_encode(messageBytes); }, verify: function(signatureBytes, messageBytes) { var emp = emsa_pkcs1_v15_encode(messageBytes); return utils2.arraysEqual(signatureBytes, emp); } }; }; var rsaMode = rsaMode || {}; rsaMode.pss = function(keyStruct, hashFunction) { var utils2 = msrcryptoUtilities, random = msrcryptoPseudoRandom; function emsa_pss_encode(messageBytes, saltLength, salt) { var modulusBits = cryptoMath.bitLength(keyStruct.n), emBits = modulusBits - 1, emLen = Math.ceil(emBits / 8), mHash = hashFunction.computeHash(messageBytes); saltLength = salt ? salt.length : saltLength == null ? mHash.length : saltLength; if (emLen < mHash.length + saltLength + 2) { throw new Error("encoding error"); } salt = salt || random.getBytes(saltLength); var mp = [0, 0, 0, 0, 0, 0, 0, 0].concat(mHash, salt); var h = hashFunction.computeHash(mp); var ps = utils2.getVector(emLen - salt.length - h.length - 2); var db = ps.concat([1], salt); var dbMask = rsaShared.mgf1(h, emLen - h.length - 1, hashFunction); var maskedDb = utils2.xorVectors(db, dbMask); var mask = 0; for (var i2 = 0; i2 < 8 - (8 * emLen - emBits); i2++) { mask += 1 << i2; } maskedDb[0] &= mask; var em = maskedDb.concat(h, [188]); return em; } function emsa_pss_verify(signatureBytes, messageBytes, saltLength) { var modulusBits = cryptoMath.bitLength(keyStruct.n); var emBits = modulusBits - 1; var emLen = Math.ceil(emBits / 8); var mHash = hashFunction.computeHash(messageBytes); var hLen = mHash.length; saltLength = saltLength == null ? hLen : saltLength; if (emLen < hLen + saltLength + 2) { return false; } var maskedDb = signatureBytes.slice(0, emLen - hLen - 1); var h = signatureBytes.slice(maskedDb.length, maskedDb.length + hLen); var dbMask = rsaShared.mgf1(h, emLen - hLen - 1, hashFunction); var db = utils2.xorVectors(maskedDb, dbMask); db[0] &= 255 >>> 8 - (8 * emLen - emBits); for (var i2 = 0; i2 < emLen - hLen - saltLength - 2; i2++) { if (db[i2] !== 0) { return false; } } if (db[emLen - hLen - saltLength - 2] !== 1) { return false; } var salt = db.slice(db.length - saltLength); var mp = [0, 0, 0, 0, 0, 0, 0, 0].concat(mHash, salt); var hp = hashFunction.computeHash(mp); return utils2.arraysEqual(hp, h); } return { sign: function(messageBytes, saltLength, salt) { return emsa_pss_encode(messageBytes, saltLength, salt); }, verify: function(signatureBytes, messageBytes, saltLength) { return emsa_pss_verify(signatureBytes, messageBytes, saltLength); } }; }; var msrcryptoRsa = function(keyStruct, mode, hashFunction) { var rsaBase = msrcryptoRsaBase(keyStruct); if (!mode) { throw new Error("padding mode"); } function checkHash() { if (!hashFunction || !hashFunction.computeHash) { throw new Error("missing hash function"); } } var paddingFunction = null, unPaddingFunction = null; var padding; switch (mode) { case "RSAES-PKCS1-V1_5": padding = rsaMode.pkcs1Encrypt(keyStruct); break; case "RSASSA-PKCS1-V1_5": checkHash(); padding = rsaMode.pkcs1Sign(keyStruct, hashFunction); break; case "RSA-OAEP": checkHash(); padding = rsaMode.oaep(keyStruct, hashFunction); break; case "RSA-PSS": checkHash(); padding = rsaMode.pss(keyStruct, hashFunction); break; case "raw": padding = { pad: function(mb) { return mb; }, unpad: function(eb) { return eb; } }; break; default: throw new Error("invalid mode"); } if (padding) { paddingFunction = padding.pad || padding.sign; unPaddingFunction = padding.unpad || padding.verify; } var returnObj = { encrypt: function(dataBytes, labelBytes) { var paddedData; var encryptedData; if (paddingFunction !== null) { paddedData = paddingFunction(dataBytes, labelBytes); } else { paddedData = dataBytes.slice(); } encryptedData = rsaBase.encrypt(paddedData); return encryptedData; }, decrypt: function(cipherBytes, labelBytes) { var decryptedData = rsaBase.decrypt(cipherBytes); if (unPaddingFunction !== null) { decryptedData = unPaddingFunction(decryptedData, labelBytes); if (decryptedData.valid === false) { throw new Error("OperationError"); } decryptedData = decryptedData.data; } else { decryptedData = decryptedData.slice(0); } return decryptedData; }, signData: function(messageBytes, saltLength, salt) { return rsaBase.decrypt(paddingFunction(messageBytes, saltLength, salt)); }, verifySignature: function(signature, messageBytes, saltLength) { var decryptedSig = rsaBase.encrypt(signature); return unPaddingFunction(decryptedSig, messageBytes, saltLength); }, generateKeyPair: function(bits) { var keyPair = genRsaKeyFromRandom(bits); }, mode }; return returnObj; }; if (typeof operations !== "undefined") { msrcryptoRsa.sign = function(p) { var rsaObj, hashName = p.keyHandle.algorithm.hash.name, hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](), saltLength = p.algorithm.saltLength, salt = p.algorithm.salt; rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name, hashFunc); return rsaObj.signData(p.buffer, saltLength, salt); }; msrcryptoRsa.verify = function(p) { var hashName = p.keyHandle.algorithm.hash.name, hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](), rsaObj, saltLength = p.algorithm.saltLength; rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name, hashFunc); return rsaObj.verifySignature(p.signature, p.buffer, saltLength); }; msrcryptoRsa.workerEncrypt = function(p) { var result, rsaObj, hashFunc, hashName; switch (p.algorithm.name) { case "RSAES-PKCS1-V1_5": rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name); result = rsaObj.encrypt(p.buffer); break; case "RSA-OAEP": hashName = p.keyHandle.algorithm.hash.name; if (!hashName) { throw new Error("unsupported hash algorithm"); } hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](); rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name, hashFunc); result = rsaObj.encrypt(p.buffer); break; default: throw new Error("unsupported algorithm"); } return result; }; msrcryptoRsa.workerDecrypt = function(p) { var result, rsaObj, hashFunc; switch (p.algorithm.name) { case "RSAES-PKCS1-V1_5": rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name); result = rsaObj.decrypt(p.buffer); break; case "RSA-OAEP": var hashName = p.keyHandle.algorithm.hash.name; if (!hashName) { throw new Error("unsupported hash algorithm"); } hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](); rsaObj = msrcryptoRsa(p.keyData, p.algorithm.name, hashFunc); result = rsaObj.decrypt(p.buffer); break; default: throw new Error("unsupported algorithm"); } return result; }; msrcryptoRsa.importKey = function(p) { var keyObject; if (p.format === "jwk") { keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["n", "e", "d", "q", "p", "dq", "dp", "qi"]); if (keyObject.d) { keyObject.ctxp = new cryptoMath.MontgomeryMultiplier(cryptoMath.bytesToDigits(keyObject.p)).ctx; keyObject.ctxq = new cryptoMath.MontgomeryMultiplier(cryptoMath.bytesToDigits(keyObject.q)).ctx; } } else if (p.format === "spki") { var publicKeyInfo = asn1.parse(p.keyData); if (publicKeyInfo == null) { throw new Error("invalid key data."); } var bitString = publicKeyInfo[1]; var keySequence = asn1.parse(bitString.data.slice(bitString.header + 1), true); if (keySequence == null) { throw new Error("invalid key data."); } var n = keySequence[0], e = keySequence[1]; if (n.type !== "INTEGER" || e.type !== "INTEGER") { throw new Error("invalid key data."); } n = n.data.slice(n.header); e = e.data.slice(e.header); if (n[0] === 0 && n[1] & 128) { n = n.slice(1); } if (e[0] === 0 && e[1] & 128) { e = e.slice(1); } keyObject = { n, e }; } else { throw new Error("unsupported key import format."); } return { type: "keyImport", keyData: keyObject, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: p.usages, type: keyObject.d || keyObject.dq ? "private" : "public" } }; }; msrcryptoRsa.exportKey = function(p) { var jsonKeyStringArray = msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData); return { type: "keyExport", keyHandle: jsonKeyStringArray }; }; msrcryptoRsa.genRsaKeyFromRandom = function(bits, e) { var exp = e ? cryptoMath.bytesToDigits(e) : [65537]; do { var p = prime.generatePrime(bits / 2); var q = prime.generatePrime(bits / 2); if (cryptoMath.compareDigits(q, p) > 0) { var t = p; p = q; q = t; } var n = []; cryptoMath.multiply(p, q, n); var p_1 = []; cryptoMath.subtract(p, [1], p_1); var q_1 = []; cryptoMath.subtract(q, [1], q_1); var p_1q_1 = []; cryptoMath.multiply(p_1, q_1, p_1q_1); var gcd = []; cryptoMath.gcd(exp, p_1q_1, gcd); var gcdEqual1 = cryptoMath.compareDigits(gcd, cryptoMath.One) === 0; } while (!gcdEqual1); var d = []; cryptoMath.modInv(exp, p_1q_1, d); var dp = []; cryptoMath.reduce(d, p_1, dp); var dq = []; cryptoMath.reduce(d, q_1, dq); var qi = []; cryptoMath.modInv(q, p, qi); var d2b = cryptoMath.digitsToBytes; return { privateKey: { n: d2b(n), e: d2b(exp), d: d2b(d), p: d2b(p), q: d2b(q), dp: d2b(dp), dq: d2b(dq), qi: d2b(qi) }, publicKey: { n: d2b(n), e: d2b(exp) } }; }; msrcryptoRsa.generateKeyPair = function(p) { if (typeof p.algorithm.modulusLength === "undefined") { throw new Error("missing modulusLength"); } var keyPair; var b2d = cryptoMath.bytesToDigits; switch (p.algorithm.modulusLength) { case 1024: case 2048: case 4096: keyPair = msrcryptoRsa.genRsaKeyFromRandom(p.algorithm.modulusLength, p.algorithm.publicExponent); break; default: throw new Error("invalid modulusLength"); } var pk = keyPair.privateKey; pk.ctxp = new cryptoMath.MontgomeryMultiplier(b2d(pk.p)).ctx; pk.ctxq = new cryptoMath.MontgomeryMultiplier(b2d(pk.q)).ctx; var algName = p.algorithm.name; var rsaKeyType = algName.slice(algName.indexOf("-") + 1).toUpperCase(); var publicUsage, privateUsage; if (algName === "RSASSA-PKCS1-V1_5" || algName === "RSA-PSS") { publicUsage = ["verify"]; privateUsage = ["sign"]; } else { publicUsage = ["encrypt"]; privateUsage = ["decrypt"]; } return { type: "keyGeneration", keyPair: { publicKey: { keyData: keyPair.publicKey, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: publicUsage, type: "public" } }, privateKey: { keyData: keyPair.privateKey, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: privateUsage, type: "private" } } } }; }; operations.register("sign", "RSASSA-PKCS1-V1_5", msrcryptoRsa.sign); operations.register("sign", "RSA-PSS", msrcryptoRsa.sign); operations.register("verify", "RSASSA-PKCS1-V1_5", msrcryptoRsa.verify); operations.register("verify", "RSA-PSS", msrcryptoRsa.verify); operations.register("encrypt", "RSAES-PKCS1-V1_5", msrcryptoRsa.workerEncrypt); operations.register("decrypt", "RSAES-PKCS1-V1_5", msrcryptoRsa.workerDecrypt); operations.register("encrypt", "RSA-OAEP", msrcryptoRsa.workerEncrypt); operations.register("decrypt", "RSA-OAEP", msrcryptoRsa.workerDecrypt); operations.register("importKey", "RSA-OAEP", msrcryptoRsa.importKey); operations.register("importKey", "RSAES-PKCS1-V1_5", msrcryptoRsa.importKey); operations.register("importKey", "RSASSA-PKCS1-V1_5", msrcryptoRsa.importKey); operations.register("importKey", "RSA-PSS", msrcryptoRsa.importKey); operations.register("exportKey", "RSA-OAEP", msrcryptoRsa.exportKey); operations.register("exportKey", "RSAES-PKCS1-V1_5", msrcryptoRsa.exportKey); operations.register("exportKey", "RSASSA-PKCS1-V1_5", msrcryptoRsa.exportKey); operations.register("exportKey", "RSA-PSS", msrcryptoRsa.exportKey); operations.register("generateKey", "RSA-OAEP", msrcryptoRsa.generateKeyPair); operations.register("generateKey", "RSAES-PKCS1-V1_5", msrcryptoRsa.generateKeyPair); operations.register("generateKey", "RSASSA-PKCS1-V1_5", msrcryptoRsa.generateKeyPair); operations.register("generateKey", "RSA-PSS", msrcryptoRsa.generateKeyPair); } var msrcryptoKdf = function(hashFunction) { var utils2 = msrcryptoUtilities; function deriveKey(secretBytes2, otherInfo, keyOutputLength) { var reps = Math.ceil(keyOutputLength / (hashFunction.hashLen / 8)), counter = 1, digest = secretBytes2.concat(otherInfo), output = []; for (var i2 = 0; i2 < reps; i2++) { var data = utils2.int32ToBytes(counter++).concat(digest); var h = hashFunction.computeHash(data); output = output.concat(h); } return output.slice(0, keyOutputLength); } return { deriveKey }; }; var msrcryptoKdfInstance = null; if (typeof operations !== "undefined") { msrcryptoKdf.deriveKey = function(p) { var utils2 = msrcryptoUtilities; var hashName = p.algorithm.hash.name; var hashFunction = msrcryptoHashFunctions[hashName.toUpperCase()](); msrcryptoKdfInstance = msrcryptoKdf(hashFunction); var alg = p.algorithm; var otherInfo = utils2.toArray(alg.algorithmId).concat( utils2.toArray(alg.partyUInfo), utils2.toArray(alg.partyVInfo), utils2.toArray(alg.publicInfo), utils2.toArray(alg.privateInfo) ); var result = msrcryptoKdfInstance.deriveKey(p.keyData, otherInfo, p.derivedKeyType.length); msrcryptoKdfInstance = null; return { type: "keyDerive", keyData: result, keyHandle: { algorithm: p.derivedKeyType, extractable: p.extractable, usages: p.usages, type: "secret" } }; }; msrcryptoKdf.deriveBits = function(p) { var hashName = p.algorithm.hash.name; var hashFunction = msrcryptoHashFunctions[hashName.toUpperCase()](); msrcryptoKdfInstance = msrcryptoKdf(hashFunction); var alg = p.algorithm; var otherInfo = alg.algorithmId.concat( alg.partyUInfo, alg.partyVInfo, alg.publicInfo || [], alg.privateInfo || [] ); var result = msrcryptoKdfInstance.deriveKey(p.keyData, otherInfo, p.length); msrcryptoKdfInstance = null; return result; }; operations.register("deriveKey", "concat", msrcryptoKdf.deriveKey); operations.register("deriveBits", "concat", msrcryptoKdf.deriveBits); } var msrcryptoPbkdf2 = /* @__PURE__ */ (function() { function deriveBits(p) { var algorithm = p.algorithm, keyBytes = p.keyData, bits = p.length, iterations = algorithm.iterations, saltBytes = Array.apply(null, algorithm.salt), byteLen = Math.ceil(bits / 8), hLen, blockCount, output = []; switch (algorithm.hash.name.toUpperCase()) { case "SHA-1": hLen = 20; break; case "SHA-256": hLen = 32; break; case "SHA-384": hLen = 48; break; case "SHA-512": hLen = 64; break; default: throw new Error("Unsupported hash algorithm"); } blockCount = Math.ceil(byteLen / hLen); var hmacKey = msrcryptoHmac.importKey({ format: "raw", keyData: keyBytes, algorithm: { name: "HMAC", hash: algorithm.hash } }); var hmacContext = { algorithm, keyHandle: hmacKey.keyHandle, keyData: hmacKey.keyData, workerid: 0, buffer: null }; function F(S, c, i2) { var result = [], u = S.concat([i2 >>> 24 & 255, i2 >>> 16 & 255, i2 >>> 8 & 255, i2 & 255]); for (var j = 0; j < c; j++) { hmacContext.buffer = u; u = msrcryptoHmac.signHmac(hmacContext); for (var k = 0; k < hLen; k++) { result[k] = ~~result[k] ^ u[k]; } } return result; } for (var block = 1; block <= blockCount; block++) { output = output.concat(F(saltBytes, iterations, block)); } output.length = byteLen; return output; } return { deriveBits }; })(); var msrcryptoKdfInstance = null; if (typeof operations !== "undefined") { msrcryptoPbkdf2.importKey = function(p) { var keyData; if (p.format === "raw") { keyData = msrcryptoUtilities.toArray(p.keyData); } else { throw new Error("unsupported import format"); } if (p.extractable !== false) { throw new Error("only extractable=false is supported."); } return { type: "keyImport", keyData, keyHandle: { algorithm: { name: "PBKDF2" }, extractable: false, usages: p.usages, type: "secret" } }; }; operations.register("deriveBits", "PBKDF2", msrcryptoPbkdf2.deriveBits); operations.register("importKey", "PBKDF2", msrcryptoPbkdf2.importKey); } var msrcryptoEcdh = function(curve) { var btd = cryptoMath.bytesToDigits, dtb = cryptoMath.digitsToBytes, e = curve, ecop = new cryptoECC.EllipticCurveOperatorFp(curve); function generateKey(privateKeyBytes) { var privateKey = [], randomBytes = msrcryptoPseudoRandom.getBytes(curve.order.length * cryptoMath.DIGIT_NUM_BYTES); cryptoMath.reduce(cryptoMath.bytesToDigits(randomBytes), e.order, privateKey); var publicKey = e.allocatePointStorage(); ecop.scalarMultiply(privateKey, e.generator, publicKey); return { privateKey: { x: dtb(publicKey.x), y: dtb(publicKey.y), d: dtb(privateKey) }, publicKey: { x: dtb(publicKey.x), y: dtb(publicKey.y) } }; } function deriveBits(privateKey, publicKey, length) { var publicPoint = new cryptoECC.EllipticCurvePointFp(e, false, btd(publicKey.x), btd(publicKey.y), null, false); var sharedSecretPoint = e.allocatePointStorage(); ecop.convertToJacobianForm(sharedSecretPoint); ecop.convertToMontgomeryForm(sharedSecretPoint); ecop.scalarMultiply(btd(privateKey.d), publicPoint, sharedSecretPoint); ecop.convertToAffineForm(sharedSecretPoint); ecop.convertToStandardForm(sharedSecretPoint); var secretBytes2 = cryptoMath.digitsToBytes(sharedSecretPoint.x, true, publicKey.x.length); if (length && secretBytes2.length * 8 < length) { throw new Error("DataError"); } secretBytes2 = length ? secretBytes2.slice(0, Math.ceil(length / 8)) : secretBytes2; var bits = length % 8; var mask = bits === 0 ? 255 : 65280 >>> bits; secretBytes2[secretBytes2.length - 1] = secretBytes2[secretBytes2.length - 1] & mask; return secretBytes2; } function computePublicKey(privateKeyBytes) { if (!e.generator.isInMontgomeryForm) { ecop.convertToMontgomeryForm(e.generator); } var publicKey = e.allocatePointStorage(); ecop.convertToJacobianForm(publicKey); ecop.convertToMontgomeryForm(publicKey); ecop.scalarMultiply(btd(privateKeyBytes), e.generator, publicKey); return { x: dtb(publicKey.x), y: dtb(publicKey.y) }; } return { generateKey, deriveBits, computePublicKey }; }; var ecdhInstance = null; if (typeof operations !== "undefined") { msrcryptoEcdh.deriveBits = function(p) { var curve = cryptoECC.createCurve(p.algorithm.namedCurve.toUpperCase()); var privateKey = p.keyData; var publicKey = p.additionalKeyData; ecdhInstance = msrcryptoEcdh(curve); var secretBytes2 = ecdhInstance.deriveBits(privateKey, publicKey, p.length); return secretBytes2; }; msrcryptoEcdh.deriveKey = function(p) { throw new Error("not supported"); return secretBytes; }; msrcryptoEcdh.generateKey = function(p) { var curve = cryptoECC.createCurve(p.algorithm.namedCurve.toUpperCase()); ecdhInstance = msrcryptoEcdh(curve); var keyPairData = ecdhInstance.generateKey(); return { type: "keyPairGeneration", keyPair: { publicKey: { keyData: keyPairData.publicKey, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: [], type: "public" } }, privateKey: { keyData: keyPairData.privateKey, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: p.usages, type: "private" } } } }; }; msrcryptoEcdh.importKey = function(p) { if (p.format === "raw") { var keyData = p.keyData; if (keyData[0] !== 4) { throw new Error("DataError"); } var elementSize = ~~((keyData.length - 1) / 2); var curveName = p.algorithm.namedCurve.toUpperCase(); var x = keyData.slice(1, elementSize + 1), y = keyData.slice(elementSize + 1); if (cryptoECC.validatePoint(curveName, x, y) === false) { throw new Error("DataError"); } return { type: "keyImport", keyData: { x, y }, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: "public" } }; } if (p.format === "jwk") { var keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["x", "y", "d", "crv"]); if (keyObject.d && (!keyObject.x || !keyObject.y)) { var curve = cryptoECC.createCurve(p.algorithm.namedCurve.toUpperCase()); ecdhInstance = msrcryptoEcdh(curve); var publicKey = ecdhInstance.computePublicKey(keyObject.d); keyObject.x = publicKey.x; keyObject.y = publicKey.y; } if (cryptoECC.validatePoint(p.algorithm.namedCurve.toUpperCase(), keyObject.x, keyObject.y) === false) { throw new Error("DataError"); } return { type: "keyImport", keyData: keyObject, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: keyObject.d ? "private" : "public" } }; } }; msrcryptoEcdh.exportKey = function(p) { if (p.format === "raw" && p.keyHandle.type === "public") { var keyData = [4].concat(p.keyData.x, p.keyData.y); return { type: "keyExport", keyHandle: keyData }; } if (p.format === "jwk") { var jsonKeyStringArray = msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData); return { type: "keyExport", keyHandle: jsonKeyStringArray }; } throw new Error("unsupported export format."); }; operations.register("importKey", "ECDH", msrcryptoEcdh.importKey); operations.register("exportKey", "ECDH", msrcryptoEcdh.exportKey); operations.register("generateKey", "ECDH", msrcryptoEcdh.generateKey); operations.register("deriveBits", "ECDH", msrcryptoEcdh.deriveBits); operations.register("deriveKey", "ECDH", msrcryptoEcdh.deriveKey); } var msrcryptoEcdsa = function(curve) { var btd = cryptoMath.bytesToDigits, dtb = cryptoMath.digitsToBytes, ecop = new cryptoECC.EllipticCurveOperatorFp(curve), orderByteLength = dtb(curve.order).length, tedCurve = curve.type === 1; function createKey(privateKeyBytes) { return createKeyInternal(btd(privateKeyBytes)); } function createKeyInternal(privateKeyDigits) { var publicKey = curve.allocatePointStorage(); ecop.scalarMultiply(privateKeyDigits, curve.generator, publicKey); return { publicKey, privateKey: privateKeyDigits }; } function generateKey(randomBytes) { var privateKey = []; if (!randomBytes) { randomBytes = msrcryptoPseudoRandom.getBytes(curve.order.length * cryptoMath.DIGIT_NUM_BYTES); } cryptoMath.reduce(cryptoMath.bytesToDigits(randomBytes), curve.order, privateKey); return createKeyInternal(privateKey); } function getDigest(messageBytes) { if (messageBytes.length > orderByteLength) { messageBytes.length = orderByteLength; } var digest = btd(messageBytes); if (tedCurve) { var shift = 8 - curve.rbits % 8; cryptoMath.shiftRight(digest, digest, shift); } cryptoMath.reduce(digest, curve.order, digest); return digest; } function sign(privateKey, messageBytes, ephemeralKey) { if (!ephemeralKey) { ephemeralKey = generateKey(); } var r = ephemeralKey.publicKey.x, k = ephemeralKey.privateKey, d = btd(privateKey.d), digest = getDigest(messageBytes.slice()), s = [], tmp = [], signature = null; cryptoMath.reduce(r, curve.order, r); cryptoMath.modMul(r, d, curve.order, s); cryptoMath.add(s, digest, s); cryptoMath.reduce(s, curve.order, s); cryptoMath.modInvCT(k, curve.order, tmp); cryptoMath.modMul(s, tmp, curve.order, s); var rBytes = msrcryptoUtilities.padFront(dtb(r, true, orderByteLength), 0, orderByteLength); var sBytes = msrcryptoUtilities.padFront(dtb(s, true, orderByteLength), 0, orderByteLength); signature = rBytes.concat(sBytes); return signature; } function verify(publicKey, signatureBytes, messageBytes) { var split = Math.floor(signatureBytes.length / 2), r = btd(signatureBytes.slice(0, split)), s = btd(signatureBytes.slice(split)), digest = getDigest(messageBytes.slice()), u1 = [], u2 = []; var publicPoint = new cryptoECC.EllipticCurvePointFp( curve, false, btd(publicKey.x), btd(publicKey.y), null, false ); cryptoMath.modInv(s, curve.order, s); cryptoMath.modMul(digest, s, curve.order, u1); cryptoMath.modMul(r, s, curve.order, u2); var r0 = curve.allocatePointStorage(); var r1 = curve.allocatePointStorage(); if (tedCurve) { cryptoMath.add(u1, u1, u1); cryptoMath.add(u1, u1, u1); cryptoMath.reduce(u1, curve.order, u1); ecop.scalarMultiply(u1, curve.generator, r0, false); ecop.scalarMultiply(u2, publicPoint, r1, false); ecop.convertToExtendedProjective(r0); ecop.convertToExtendedProjective(r1); ecop.add(r1, r0, r0); ecop.normalize(r0); } else { ecop.scalarMultiply(u1, curve.generator, r0); ecop.scalarMultiply(u2, publicPoint, r1); ecop.convertToJacobianForm(r0); ecop.convertToMontgomeryForm(r0); ecop.convertToMontgomeryForm(r1); ecop.mixedAdd(r0, r1, r0); ecop.convertToAffineForm(r0); ecop.convertToStandardForm(r0); } if (r0.isInfinity) { return false; } cryptoMath.reduce(r0.x, curve.order, r0.x); return cryptoMath.compareDigits(r0.x, r) === 0; } return { createKey, generateKey, sign, verify }; }; if (typeof operations !== "undefined") { msrcryptoEcdsa.sign = function(p) { msrcryptoUtilities.checkParam(p.algorithm.hash, "Object", "algorithm.hash"); msrcryptoUtilities.checkParam(p.algorithm.hash.name, "String", "algorithm.hash.name"); msrcryptoUtilities.checkParam(p.keyHandle.algorithm.namedCurve, "String", "p.keyHandle.algorithm.namedCurve"); var hashName = p.algorithm.hash.name, curve = cryptoECC.createCurve(p.keyHandle.algorithm.namedCurve.toUpperCase()), hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](), digest = hashFunc.computeHash(p.buffer); var ecdsa = msrcryptoEcdsa(curve); return ecdsa.sign(p.keyData, digest); }; msrcryptoEcdsa.verify = function(p) { var hashName = p.algorithm.hash.name, curve = cryptoECC.createCurve(p.keyHandle.algorithm.namedCurve.toUpperCase()), hashFunc = msrcryptoHashFunctions[hashName.toUpperCase()](), digest = hashFunc.computeHash(p.buffer); var ecdsa = msrcryptoEcdsa(curve); return ecdsa.verify(p.keyData, p.signature, digest); }; msrcryptoEcdsa.generateKey = function(p) { var curve = cryptoECC.createCurve(p.algorithm.namedCurve.toUpperCase()); var ecdsa = msrcryptoEcdsa(curve); var keyPairData = ecdsa.generateKey(); var dtb = cryptoMath.digitsToBytes; function padTo8BytesIncrement(array) { return array; } var x = padTo8BytesIncrement(dtb(keyPairData.publicKey.x)); var y = padTo8BytesIncrement(dtb(keyPairData.publicKey.y)); var d = padTo8BytesIncrement(dtb(keyPairData.privateKey)); return { type: "keyPairGeneration", keyPair: { publicKey: { keyData: { x, y }, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: ["verify"], type: "public" } }, privateKey: { keyData: { x, y, d }, keyHandle: { algorithm: p.algorithm, extractable: p.extractable, usages: ["sign"], type: "private" } } } }; }; msrcryptoEcdsa.importKey = function(p) { if (p.format === "raw") { var keyData = p.keyData; if (keyData[0] !== 4) { throw new Error("DataError"); } var elementSize = ~~((keyData.length - 1) / 2); var curveName = p.algorithm.namedCurve.toUpperCase(); var x = keyData.slice(1, elementSize + 1), y = keyData.slice(elementSize + 1); if (cryptoECC.validatePoint(curveName, x, y) === false) { throw new Error("DataError"); } return { type: "keyImport", keyData: { x, y }, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: "public" } }; } if (p.format === "jwk") { var keyObject = msrcryptoJwk.jwkToKey(p.keyData, p.algorithm, ["x", "y", "d", "crv"]); if (keyObject.d && (!keyObject.x || !keyObject.y)) { var curve = msrcryptoEcdsa.curves[p.algorithm.namedCurve](); var ecdsa = msrcryptoEcdsa(curve); var publicKey = ecdsa.computePublicKey(keyObject.d); keyObject.x = publicKey.x; keyObject.y = publicKey.y; } if (cryptoECC.validatePoint(p.algorithm.namedCurve.toUpperCase(), keyObject.x, keyObject.y) === false) { throw new Error("DataError"); } return { type: "keyImport", keyData: keyObject, keyHandle: { algorithm: p.algorithm, extractable: p.extractable || keyObject.extractable, usages: p.usages, type: keyObject.d ? "private" : "public" } }; } }; msrcryptoEcdsa.exportKey = function(p) { if (p.format === "raw" && p.keyHandle.type === "public") { var keyData = [4].concat(p.keyData.x, p.keyData.y); return { type: "keyExport", keyHandle: keyData }; } if (p.format === "jwk") { var jsonKeyStringArray = msrcryptoJwk.keyToJwk(p.keyHandle, p.keyData); return { type: "keyExport", keyHandle: jsonKeyStringArray }; } throw new Error("unsupported export format."); }; operations.register("sign", "ECDSA", msrcryptoEcdsa.sign); operations.register("verify", "ECDSA", msrcryptoEcdsa.verify); operations.register("generateKey", "ECDSA", msrcryptoEcdsa.generateKey); operations.register("importKey", "ECDSA", msrcryptoEcdsa.importKey); operations.register("exportKey", "ECDSA", msrcryptoEcdsa.exportKey); } var msrcryptoSubtle; var utils = msrcryptoUtilities; msrcryptoSubtle = (function() { function syncWorker() { var result; function postMessage(data) { try { data.workerid = this.id; result = msrcryptoWorker.jsCryptoRunner({ data }); } catch (ex) { this.onerror({ data: ex, type: "error" }); return; } this.onmessage({ data: result }); } return { postMessage, onmessage: null, onerror: null, terminate: function() { } }; } var streamObject = function(op) { return { process: function(buffer) { return op.process(buffer); }, finish: function() { return op.finish(); }, abort: function() { return op.abort(); } }; }; function baseOperation(processResults) { var result = null, oncompleteCallback = null, onerrorCallback = null, retObj, promise, resolveFunc, rejectFunc; promise = new Promise(function(resolve, reject) { resolveFunc = resolve; rejectFunc = reject; }); function opDispatchEvent(e) { if (e.type === "error") { if (rejectFunc) { rejectFunc.apply(promise, [e]); } return; } if (e.data.type === "process") { processResults(e.data.result, true); return; } if (e.data.type === "finish") { processResults(e.data.result, true); return; } this.result = processResults(e.data); resolveFunc.apply(promise, [this.result]); return; } retObj = { dispatchEvent: opDispatchEvent, promise, result: null }; return retObj; } function keyOperation() { function processResult(result) { var publicKey, privateKey; switch (result.type) { case "keyGeneration": case "keyImport": case "keyDerive": if (result.keyPair) { keys.add(result.keyPair.publicKey.keyHandle, result.keyPair.publicKey.keyData); keys.add(result.keyPair.privateKey.keyHandle, result.keyPair.privateKey.keyData); return { publicKey: result.keyPair.publicKey.keyHandle, privateKey: result.keyPair.privateKey.keyHandle }; } else { keys.add(result.keyHandle, result.keyData); return result.keyHandle; } case "keyExport": return result.keyHandle; case "keyPairGeneration": privateKey = result.keyPair.privateKey; publicKey = result.keyPair.publicKey; keys.add(publicKey.keyHandle, publicKey.keyData); keys.add(privateKey.keyHandle, privateKey.keyData); return { publicKey: publicKey.keyHandle, privateKey: privateKey.keyHandle }; default: throw new Error("Unknown key operation"); } } return baseOperation(processResult); } function toArrayBufferIfSupported(dataArray) { if (typedArraySupport && dataArray.pop) { return new Uint8Array(dataArray).buffer; } return dataArray; } function cryptoOperation(cryptoContext) { function processResult(result, isProcessCall) { result = result && toArrayBufferIfSupported(result); if (isProcessCall) { promiseQueue.resolve(result); return; } return result; } var promiseQueue = [], op = baseOperation(processResult); op.stream = cryptoContext.algorithm.stream; promiseQueue.add = function(label) { var resolveFunc, rejectFunc, promise = new Promise(function(resolve, reject) { resolveFunc = resolve; rejectFunc = reject; }); promise.label = label; promiseQueue.push({ resolve: resolveFunc, reject: rejectFunc, promise }); return promise; }; promiseQueue.resolve = function(result) { var queueItem = promiseQueue.shift(); queueItem.resolve.apply(queueItem.promise, [result]); }; op.process = function(buffer) { cryptoContext.operationSubType = "process"; cryptoContext.buffer = utils.toArray(buffer); workerManager.continueJob(this, utils.clone(cryptoContext)); return promiseQueue.add("process"); }; op.finish = function() { cryptoContext.operationSubType = "finish"; cryptoContext.buffer = []; workerManager.continueJob(this, utils.clone(cryptoContext)); return promiseQueue.add("finish"); }; op.abort = function() { workerManager.abortJob(this); }; op.algorithm = cryptoContext.algorithm || null; op.key = cryptoContext.keyHandle || null; return op; } var keys = []; keys.add = function(keyHandle, keyData) { keys.push({ keyHandle, keyData }); }; keys.remove = function(keyHandle) { for (var i2 = 0; i2 < keys.length; i2 += 1) { if (keys[i2].keyHandle === keyHandle) { keys = keys.splice(i2, 1); return; } } }; keys.lookup = function(keyHandle) { for (var i2 = 0; i2 < keys.length; i2 += 1) { if (keys[i2].keyHandle === keyHandle) { return keys[i2].keyData; } } return null; }; var workerManager = /* @__PURE__ */ (function() { var maxWorkers = 12; var maxFreeWorkers = 2; var workerPool = []; var jobQueue = []; var jobId = 0; var workerId = 0; var callbackQueue = []; var setFunction = typeof setImmediate === "undefined" ? setTimeout : setImmediate; function executeNextCallback() { callbackQueue.shift()(); } function queueCallback(callback) { callbackQueue.push(callback); setFunction(executeNextCallback, 0); } var workerStatus = webWorkerSupport ? "available" : "unavailable"; function getFreeWorker() { purgeWorkerType(!asyncMode); for (var i2 = 0; i2 < workerPool.length; i2++) { if (!workerPool[i2].busy) { return workerPool[i2]; } } return null; } function purgeWorkerType(webWorker) { for (var i2 = workerPool.length - 1; i2 >= 0; i2 -= 1) { if (workerPool[i2].isWebWorker === webWorker) { workerPool[i2].terminate(); workerPool.splice(i2, 1); } } } function freeWorkerCount() { var freeWorkers = 0; for (var i2 = 0; i2 < workerPool.length; i2++) { if (!workerPool[i2].busy) { freeWorkers += 1; } } return freeWorkers; } function addWorkerToPool(worker) { workerPool.push(worker); } function removeWorkerFromPool(worker) { for (var i2 = 0; i2 < workerPool.length; i2++) { if (workerPool[i2] === worker) { worker.terminate(); workerPool.splice(i2, 1); return; } } } function lookupWorkerByOperation(operation) { for (var i2 = 0; i2 < workerPool.length; i2++) { if (workerPool[i2].operation === operation) { return workerPool[i2]; } } return null; } function queueJob(operation, data) { jobQueue.push({ operation, data, id: jobId++ }); } function jobCompleted(worker) { worker.busy = false; if (asyncMode) { if (jobQueue.length > 0) { var job = jobQueue.shift(), i2; continueJob(job.operation, job.data); if (job.data.operationSubType === "process") { for (i2 = 0; i2 < jobQueue.length; i2++) { if (job.operation === jobQueue[i2].operation) { continueJob(jobQueue[i2].operation, jobQueue[i2].data); } } for (i2 = jobQueue.length - 1; i2 >= 0; i2--) { if (job.operation === jobQueue[i2].operation) { jobQueue.splice(i2, 1); } } } } else if (freeWorkerCount() > maxFreeWorkers) { removeWorkerFromPool(worker); } } } function createNewWorker(operation) { var worker; if (workerStatus === "pending") { throw new Error("Creating new worker while workerstatus=pending"); } if (workerStatus === "ready") { try { worker = new Worker(scriptUrl); worker.postMessage({ prngSeed: msrcryptoPseudoRandom.getBytes(48) }); worker.isWebWorker = true; } catch (ex) { asyncMode = false; workerStatus = "failed"; worker.terminate(); worker = syncWorker(); worker.isWebWorker = false; } } else { worker = syncWorker(); worker.isWebWorker = false; } worker.operation = operation; worker.id = workerId++; worker.busy = false; worker.onmessage = function(e) { if (e.data.initialized === true) { return; } var op = worker.operation; e.target || (e.target = { data: worker.data }); for (var i2 = 0; i2 < jobQueue.length; i2++) { if (jobQueue[i2].operation === worker.operation) { var job = jobQueue[i2]; jobQueue.splice(i2, 1); postMessageToWorker(worker, job.data); return; } } if (!(e.data.hasOwnProperty("type") && e.data.type === "process")) { jobCompleted(worker); } op.dispatchEvent(e); }; worker.onerror = function(e) { var op = worker.operation; jobCompleted(worker); op.dispatchEvent(e); }; addWorkerToPool(worker); return worker; } function useWebWorkers(enable) { if (workerStatus === "unavailable") { utils.consoleLog("web workers not available in this browser."); return; } if (enable === true && workerStatus === "ready") { return; } if (enable === false && workerStatus === "available") { return; } if (enable === false && workerStatus === "ready") { asyncMode = false; workerStatus = "available"; utils.consoleLog("web workers disabled."); return; } if (workerStatus === "pending") { return; } workerStatus = "pending"; var worker = new Worker(scriptUrl); function setWorkerStatus(e) { var succeeded = !!(e.data && e.data.initialized === true); worker.removeEventListener("message", setWorkerStatus, false); worker.removeEventListener("error", setWorkerStatus, false); worker.terminate(); workerStatus = succeeded ? "ready" : "failed"; asyncMode = succeeded; utils.consoleLog( "web worker initialization " + (succeeded ? "succeeded. Now using web workers." : "failed. running synchronously." + (e.message || "")) ); if (jobQueue.length > 0) { var job = jobQueue.shift(); runJob(job.operation, job.data); } return; } worker.addEventListener("message", setWorkerStatus, false); worker.addEventListener("error", setWorkerStatus, false); worker.postMessage({ prngSeed: msrcryptoPseudoRandom.getBytes(48) }); return; } function abortJob(cryptoOperationObject) { var worker = lookupWorkerByOperation(cryptoOperationObject); if (worker) { removeWorkerFromPool(worker); } } function runJob(operation, data) { var worker = null; if (workerStatus === "pending") { queueJob(operation, data); return; } worker = getFreeWorker(); if (asyncMode && worker === null && workerPool.length >= maxWorkers) { queueJob(operation, data); return; } if (worker === null) { worker = createNewWorker(operation); } if (worker === null) { queueJob(operation, data); throw new Error("could not create new worker"); } worker.operation = operation; worker.busy = true; data.workerid = worker.id; postMessageToWorker(worker, data); } function continueJob(operation, data) { var worker = lookupWorkerByOperation(operation); if (worker) { postMessageToWorker(worker, data); return; } runJob(operation, data); } function postMessageToWorker(worker, data) { data.workerid = worker.id; if (asyncMode) { worker.postMessage(data); } else { var func = /* @__PURE__ */ (function(postData) { return function() { return worker.postMessage(postData); }; })(data); queueCallback(func); } return; } return { runJob, continueJob, abortJob, useWebWorkers }; })(); function checkOperation(operationType, algorithmName) { if (!operations.exists(operationType, algorithmName)) { throw new Error("unsupported algorithm"); } } var subtleParameters = [ { name: "algorithm", type: "Object", required: true }, { name: "keyHandle", type: "Object", required: true }, { name: "buffer", type: "Array", required: false }, { name: "signature", type: "Array", required: true }, { name: "format", type: "String", required: true }, { name: "keyData", type: "Object", required: true }, { name: "extractable", type: "Boolean", required: false }, { name: "usages", type: "Array", required: false }, { name: "derivedKeyType", type: "Object", required: true }, { name: "length", type: "Number", required: false }, { name: "extractable", type: "Boolean", required: true }, { name: "usages", type: "Array", required: true }, { name: "keyData", type: "Array", required: true } ]; var subtleParametersSets = { encrypt: [0, 1, 2], decrypt: [0, 1, 2], sign: [0, 1, 2], verify: [0, 1, 3, 2], digest: [0, 2], generateKey: [0, 6, 7], importKeyRaw: [4, 12, 0, 10, 11], importKeyJwk: [4, 5, 0, 10, 11], exportKey: [0, 4, 1, 6, 7], deriveKey: [0, 1, 8, 6, 7], deriveBits: [0, 1, 9], wrapKey: [1, 1, 0], unwrapKey: [2, 0, 1, 6, 7] }; function lookupKeyData(handle) { var data = keys.lookup(handle); if (!data) { throw new Error("key not found"); } return data; } function buildParameterCollection(operationName, parameterSet) { var parameterCollection = { operationType: operationName }, operationParameterSet, expectedParam, actualParam, i2; if (operationName === "importKey" && (parameterSet[0] === "raw" || parameterSet[0] === "spki")) { operationName = "importKeyRaw"; } if (operationName === "importKey" && parameterSet[0] === "jwk") { operationName = "importKeyJwk"; } operationParameterSet = subtleParametersSets[operationName]; for (i2 = 0; i2 < operationParameterSet.length; i2 += 1) { expectedParam = subtleParameters[operationParameterSet[i2]]; actualParam = parameterSet[i2]; if (actualParam == null) { if (expectedParam.required) { throw new Error(expectedParam.name); } else { continue; } } if (actualParam.subarray) { actualParam = utils.toArray(actualParam); } if (utils.getObjectType(actualParam) === "ArrayBuffer") { actualParam = utils.toArray(actualParam); } if (msrcryptoUtilities.getObjectType(actualParam) !== expectedParam.type) { throw new Error(expectedParam.name); } if (expectedParam.name === "algorithm") { actualParam.name = actualParam.name.toUpperCase(); if (actualParam.iv) { actualParam.iv = utils.toArray(actualParam.iv); } if (actualParam.publicExponent) { actualParam.publicExponent = utils.toArray(actualParam.publicExponent); } if (actualParam.salt) { actualParam.salt = utils.toArray(actualParam.salt); } if (actualParam.additionalData) { actualParam.additionalData = utils.toArray(actualParam.additionalData); } if (actualParam.hash && !actualParam.hash.name && utils.getObjectType(actualParam.hash) === "String") { actualParam.hash = { name: actualParam.hash }; } } if (parameterCollection.hasOwnProperty(expectedParam.name)) { parameterCollection[expectedParam.name + "1"] = actualParam; } else { parameterCollection[expectedParam.name] = actualParam; } } return parameterCollection; } function executeOperation(operationName, parameterSet, keyFunc) { var pc = buildParameterCollection(operationName, parameterSet); checkOperation(operationName, pc.algorithm.name); if (pc.keyHandle) { pc.keyData = lookupKeyData(pc.keyHandle); } if (pc.keyHandle1) { pc.keyData1 = lookupKeyData(pc.keyHandle1); } if (pc.algorithm && pc.algorithm.public) { pc.additionalKeyData = lookupKeyData(pc.algorithm.public); } var op = keyFunc ? keyOperation(pc) : cryptoOperation(pc); if (keyFunc || pc.buffer || operationName === "deriveBits" || operationName === "wrapKey") { workerManager.runJob(op, pc); } if (op.stream) { return Promise.resolve(streamObject(op)); } return op.promise; } var publicMethods2 = { encrypt: function(algorithm, keyHandle, buffer) { return executeOperation("encrypt", arguments, 0); }, decrypt: function(algorithm, keyHandle, buffer) { return executeOperation("decrypt", arguments, 0); }, sign: function(algorithm, keyHandle, buffer) { return executeOperation("sign", arguments, 0); }, verify: function(algorithm, keyHandle, signature, buffer) { return executeOperation("verify", arguments, 0); }, digest: function(algorithm, buffer) { return executeOperation("digest", arguments, 0); }, generateKey: function(algorithm, extractable, keyUsage) { return executeOperation("generateKey", arguments, 1); }, deriveKey: function(algorithm, baseKey, derivedKeyType, extractable, keyUsage) { var deriveBits = this.deriveBits, importKey = this.importKey; return new Promise(function(resolve, reject) { var keyLength; switch (derivedKeyType.name.toUpperCase()) { case "AES-CBC": case "AES-GCM": keyLength = derivedKeyType.length; break; case "HMAC": keyLength = derivedKeyType.length || { "SHA-1": 512, "SHA-224": 512, "SHA-256": 512, "SHA-384": 1024, "SHA-512": 1024 }[derivedKeyType.hash.name.toUpperCase()]; break; default: reject(new Error("No Supported")); return; } deriveBits(algorithm, baseKey, keyLength).then(function(bits) { return importKey("raw", bits, derivedKeyType, extractable, keyUsage); }).then(function(key) { resolve(key); })["catch"](function(err) { reject(err); }); }); }, deriveBits: function(algorithm, baseKey, length) { return executeOperation("deriveBits", arguments, 0); }, importKey: function(format, keyData, algorithm, extractable, keyUsage) { return executeOperation("importKey", arguments, 1); }, exportKey: function(format, keyHandle) { return executeOperation("exportKey", [keyHandle.algorithm, format, keyHandle], 1); }, wrapKey: function(format, key, wrappingKey, wrappingKeyAlgorithm) { var encrypt = this.encrypt, exportKey = this.exportKey; return new Promise(function(resolve, reject) { if (key.extractable === false || key.usages.indexOf("wrapKey") < 0 || wrappingKey.algorithm.name.toUpperCase() !== wrappingKeyAlgorithm.name) { reject(new Error("InvalidAccessError")); return; } exportKey(format, key).then(function(keyData) { return encrypt( wrappingKeyAlgorithm, wrappingKey, format === "jwk" ? utils.stringToBytes(JSON.stringify(keyData, null, 0)) : keyData ); }).then(function(cipherArrayBuffer) { resolve(cipherArrayBuffer); })["catch"](function(err) { reject(err); }); }); }, unwrapKey: function(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages) { var decrypt = this.decrypt, importKey = this.importKey; return new Promise(function(resolve, reject) { if (unwrappingKey.usages.indexOf("unwrapKey") < 0 || unwrappingKey.algorithm.name.toUpperCase() !== unwrapAlgorithm.name) { reject(new Error("InvalidAccessError")); return; } decrypt(unwrapAlgorithm, unwrappingKey, wrappedKey).then(function(keyPlain) { return importKey( format, format === "jwk" ? JSON.parse(utils.bytesToString(keyPlain)) : keyPlain, unwrappedKeyAlgorithm, extractable, keyUsages ); }).then(function(key) { resolve(key); })["catch"](function(err) { reject(err); }); }); } }; var internalMethods = { useWebWorkers: workerManager.useWebWorkers }; return { publicMethods: publicMethods2, internalMethods }; })(); var msrcryptoWrapKey = /* @__PURE__ */ (function() { var utils2 = msrcryptoUtilities; function wrapKey(params) { var rsaObj = msrcryptoRsa(params.keyData1, params.keyHandle1.algorithm.name, msrcryptoHashFunctions["SHA-1"])(); var tagLength = 128; var keyToWrapJwk = msrcryptoJwk.keyToJwkOld(params.keyHandle, params.keyData); var jweHeader = { alg: params.keyHandle1.algorithm.name.toUpperCase(), enc: "A128GCM" }; var encodedJweHeader = utils2.toBase64(JSON.stringify(jweHeader), true); var cmk = msrcryptoPseudoRandom.getBytes(32); var jweEncryptedKey = rsaObj.encrypt(cmk); var encodedJweEncryptedKey = utils2.toBase64(jweEncryptedKey, true); var jweIv = msrcryptoPseudoRandom.getBytes(12); var encodedJweIv = utils2.toBase64(jweIv, true); var additionalData = encodedJweHeader.concat(".", encodedJweEncryptedKey, ".", encodedJweIv); var gcm = msrcryptoGcm(msrcryptoBlockCipher.aes(cmk)); gcm.init(jweIv, utils2.stringToBytes(additionalData), tagLength); var ciphertextPlusTag = gcm.encrypt(keyToWrapJwk); var tag = ciphertextPlusTag.slice(-(tagLength / 8)); var encodedIntegrityValue = utils2.toBase64(tag, true); var encodedCiphertext = utils2.toBase64(ciphertextPlusTag.slice(0, ciphertextPlusTag.length - tag.length), true); var jwe = { recipients: [ { header: encodedJweHeader, encrypted_key: encodedJweEncryptedKey, integrity_value: encodedIntegrityValue } ], initialization_vector: encodedJweIv, ciphertext: encodedCiphertext }; return utils2.stringToBytes(JSON.stringify(jwe)); } function unwrapKey(params) { var b64Tobytes = utils2.fromBase64; var keyDataJwk = JSON.parse(String.fromCharCode.apply(null, params.buffer)); var header = utils2.fromBase64(keyDataJwk.recipients[0].header); var encrypted_key = b64Tobytes(keyDataJwk.recipients[0].encrypted_key); var integrity_value = b64Tobytes(keyDataJwk.recipients[0].integrity_value); var initialization_vector = b64Tobytes(keyDataJwk.initialization_vector); var ciphertext = b64Tobytes(keyDataJwk.ciphertext); var hashFunc = msrcryptoHashFunctions["SHA-1"](); var rsaObj = msrcryptoRsa(params.keyData, params.keyHandle.algorithm.name, hashFunc); var inKey = rsaObj.decrypt(encrypted_key); var additionalData = keyDataJwk.recipients[0].header.concat( ".", keyDataJwk.recipients[0].encrypted_key, ".", keyDataJwk.initialization_vector ); var gcm = msrcryptoGcm(msrcryptoBlockCipher.aes(inKey)); gcm.init(initialization_vector, utils2.stringToBytes(additionalData), 128); var result = gcm.decrypt(ciphertext, integrity_value); var keyObject = msrcryptoJwk.jwkToKey(result, params.algorithm, ["k"]); return { type: "keyImport", keyData: keyObject.k, keyHandle: { algorithm: { name: params.algorithm.name }, extractable: params.extractable || keyObject.extractable, usages: params.usages, type: "secret" } }; } return { wrapKey, unwrapKey }; })(); if (typeof operations !== "undefined") { operations.register("wrapKey", "AES-GCM", msrcryptoWrapKey.wrapKey); operations.register("unwrapKey", "AES-CBC", msrcryptoWrapKey.unwrapKey); } var publicMethods = { subtle: msrcryptoSubtle ? msrcryptoSubtle.publicMethods : null, getRandomValues: function(array) { var i2; var randomValues = msrcryptoPseudoRandom.getBytes(array.length); for (i2 = 0; i2 < array.length; i2 += 1) { array[i2] = randomValues[i2]; } return array; }, initPrng: function(entropyData) { var entropyDataType = Object.prototype.toString.call(entropyData); if (entropyDataType !== "[object Array]" && entropyDataType !== "[object Uint8Array]") { throw new Error("entropyData must be a Array or Uint8Array"); } entropyPool && entropyPool.reseed(entropyData); msrcryptoPseudoRandom.reseed(entropyPool.read(48)); fprngEntropyProvided = true; }, toBase64: function(data, base64Url) { return msrcryptoUtilities.toBase64(data, base64Url); }, fromBase64: function(base64String) { return msrcryptoUtilities.fromBase64(base64String); }, textToBytes: function(text) { return msrcryptoUtilities.stringToBytes(text); }, bytesToText: function(byteArray) { return msrcryptoUtilities.bytesToString(byteArray); }, asn1, url: scriptUrl, version: msrCryptoVersion, useWebWorkers: function(useWebWorkers) { return msrcryptoSubtle ? msrcryptoSubtle.internalMethods.useWebWorkers(useWebWorkers) : null; } }; var entropyPool; entropyPool = entropyPool || new MsrcryptoEntropy(global2); entropyPool.init(); var localEntropy = entropyPool.read(48); msrcryptoPseudoRandom.init(localEntropy); return publicMethods; }; return msrCrypto(); }); (function(root, factory) { if (typeof Promise !== "undefined") { return; } root.Promise = factory(); })(exports, function() { var Promise2 = function(executor, id) { if (!(this instanceof Promise2)) { throw new Error("use 'new' keyword with Promise constructor"); } var successResult = null, failReason = null, thenResolved = [], thenRejected = [], rejectThenPromise = [], resolveThenPromise = []; this.then = function(onCompleted, onRejected) { var thenFunctionResult; if (successResult) { thenFunctionResult = onCompleted(successResult.result); if (thenFunctionResult && thenFunctionResult.then) { return thenFunctionResult; } return Promise2.resolve(thenFunctionResult); } if (failReason) { thenFunctionResult = onRejected ? onRejected(failReason.result) : failReason.result; if (thenFunctionResult && thenFunctionResult.then) { return thenFunctionResult; } return Promise2.resolve(thenFunctionResult); } thenResolved.push(onCompleted); if (onRejected) { thenRejected.push(onRejected); } return new Promise2(function(resolve2, reject2) { resolveThenPromise.push(resolve2); rejectThenPromise.push(reject2); }); }; this["catch"] = function(onRejected) { var catchFunctionResult; if (failReason) { catchFunctionResult = onRejected(failReason.result); if (catchFunctionResult && catchFunctionResult.then) { return catchFunctionResult; } return Promise2.resolve(catchFunctionResult); } thenRejected.push(onRejected); return new Promise2(function(resolve2, reject2) { resolveThenPromise.push(resolve2); rejectThenPromise.push(reject2); }); }; function resolve(param) { var result, i2; for (i2 = 0; i2 < thenResolved.length; i2 += 1) { result = thenResolved[i2](param); if (result && result.then) { result.then(resolveThenPromise[i2]); if (rejectThenPromise[i2]) { result["catch"](rejectThenPromise[i2]); } } else { if (resolveThenPromise[i2]) { resolveThenPromise[i2](result); } } } successResult = { result: param }; return; } function reject(param) { var reason, i2; for (i2 = 0; i2 < thenRejected.length; i2 += 1) { reason = thenRejected[i2](param); if (reason && reason.then) { reason.then(resolveThenPromise[i2], rejectThenPromise[i2]); } else { if (resolveThenPromise[i2]) { resolveThenPromise[i2](reason); } } } failReason = { result: param }; return; } executor(resolve, reject); return; }; Promise2.all = function(promiseArray) { var results = [], resultCount = 0, promiseAll; function then(index, resolve) { return function(result) { results[index] = result; resultCount += 1; if (resultCount === promiseArray.length) { resolve(results); } }; } promiseAll = new Promise2(function(resolve, reject) { var i2; function r(reason) { reject(reason); } for (i2 = 0; i2 < promiseArray.length; i2 += 1) { if (promiseArray[i2].then) { promiseArray[i2].then(then(i2, resolve)); promiseArray[i2]["catch"](r); continue; } Promise2.resolve(promiseArray[i2]).then(then(i2, resolve)); } }); return promiseAll; }; Promise2.race = function(promiseArray) { var resolved = false, promiseRace; function then(resolveFunction) { return function(result) { if (!resolved) { resolved = true; resolveFunction(result); } }; } promiseRace = new Promise2(function(resolve, reject) { for (var i2 = 0; i2 < promiseArray.length; i2 += 1) { promiseArray[i2].then(then(resolve), then(reject)); } }); return promiseRace; }; Promise2.reject = function(rejectReason) { return new Promise2(function(resolve, reject) { reject(rejectReason); }); }; Promise2.resolve = function(resolveResult) { return new Promise2(function(resolve, reject) { resolve(resolveResult); }); }; return Promise2; }); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/crypto.js var require_crypto = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/crypto.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.calculateMAC = exports.verifyMAC = exports.HKDF = exports.setCurve = exports.setWebCrypto = exports.crypto = exports.Crypto = void 0; var Internal = __importStar(require_internal()); var util = __importStar(require_helpers()); var webcrypto = (globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) || require_msrcrypto(); var Crypto = class { constructor(crypto) { this._curve = new Internal.AsyncCurve(); this._webcrypto = crypto || webcrypto; } set webcrypto(wc) { this._webcrypto = wc; } set curve(c) { this._curve.curve = c; } getRandomBytes(n) { const array = new Uint8Array(n); this._webcrypto.getRandomValues(array); return util.uint8ArrayToArrayBuffer(array); } encrypt(key, data, iv) { return __awaiter(this, void 0, void 0, function* () { const impkey = yield this._webcrypto.subtle.importKey("raw", key, { name: "AES-CBC" }, false, ["encrypt"]); return this._webcrypto.subtle.encrypt({ name: "AES-CBC", iv: new Uint8Array(iv) }, impkey, data); }); } decrypt(key, data, iv) { return __awaiter(this, void 0, void 0, function* () { const impkey = yield this._webcrypto.subtle.importKey("raw", key, { name: "AES-CBC" }, false, ["decrypt"]); return this._webcrypto.subtle.decrypt({ name: "AES-CBC", iv: new Uint8Array(iv) }, impkey, data); }); } sign(key, data) { return __awaiter(this, void 0, void 0, function* () { const impkey = yield this._webcrypto.subtle.importKey("raw", key, { name: "HMAC", hash: { name: "SHA-256" } }, false, ["sign"]); try { return this._webcrypto.subtle.sign({ name: "HMAC", hash: "SHA-256" }, impkey, data); } catch (e) { throw e; } }); } hash(data) { return __awaiter(this, void 0, void 0, function* () { return this._webcrypto.subtle.digest({ name: "SHA-512" }, data); }); } HKDF(input, salt, info) { return __awaiter(this, void 0, void 0, function* () { if (typeof info === "string") { throw new Error(`HKDF info was a string`); } const PRK = yield Internal.crypto.sign(salt, input); const infoBuffer = new ArrayBuffer(info.byteLength + 1 + 32); const infoArray = new Uint8Array(infoBuffer); infoArray.set(new Uint8Array(info), 32); infoArray[infoArray.length - 1] = 1; const T1 = yield Internal.crypto.sign(PRK, infoBuffer.slice(32)); infoArray.set(new Uint8Array(T1)); infoArray[infoArray.length - 1] = 2; const T2 = yield Internal.crypto.sign(PRK, infoBuffer); infoArray.set(new Uint8Array(T2)); infoArray[infoArray.length - 1] = 3; const T3 = yield Internal.crypto.sign(PRK, infoBuffer); return [T1, T2, T3]; }); } // Curve25519 crypto createKeyPair(privKey) { if (!privKey) { privKey = this.getRandomBytes(32); } return this._curve.createKeyPair(privKey); } ECDHE(pubKey, privKey) { return this._curve.ECDHE(pubKey, privKey); } Ed25519Sign(privKey, message) { return this._curve.Ed25519Sign(privKey, message); } Ed25519Verify(pubKey, msg, sig) { return this._curve.Ed25519Verify(pubKey, msg, sig); } }; exports.Crypto = Crypto; exports.crypto = new Crypto(); function setWebCrypto(webcrypto2) { exports.crypto.webcrypto = webcrypto2; } exports.setWebCrypto = setWebCrypto; function setCurve(curve) { exports.crypto.curve = curve; } exports.setCurve = setCurve; function HKDF(input, salt, info) { if (salt.byteLength != 32) { throw new Error("Got salt of incorrect length"); } const abInfo = util.binaryStringToArrayBuffer(info); if (!abInfo) { throw new Error(`Invalid HKDF info`); } return exports.crypto.HKDF(input, salt, abInfo); } exports.HKDF = HKDF; function verifyMAC(data, key, mac, length) { return __awaiter(this, void 0, void 0, function* () { const calculated_mac = yield exports.crypto.sign(key, data); if (mac.byteLength != length || calculated_mac.byteLength < length) { throw new Error("Bad MAC length"); } const a = new Uint8Array(calculated_mac); const b = new Uint8Array(mac); let result = 0; for (let i2 = 0; i2 < mac.byteLength; ++i2) { result = result | a[i2] ^ b[i2]; } if (result !== 0) { throw new Error("Bad MAC"); } }); } exports.verifyMAC = verifyMAC; function calculateMAC(key, data) { return exports.crypto.sign(key, data); } exports.calculateMAC = calculateMAC; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/index.js var require_internal = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/internal/index.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_curve(), exports); __exportStar(require_crypto(), exports); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/curve.js var require_curve2 = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/curve.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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.AsyncCurve = exports.Curve = void 0; var Internal = __importStar(require_internal()); var Curve = class { constructor(curve) { this._curve = curve; this.async = new AsyncCurve(curve.async); } generateKeyPair() { const privKey = Internal.crypto.getRandomBytes(32); return this._curve.createKeyPair(privKey); } createKeyPair(privKey) { return this._curve.createKeyPair(privKey); } calculateAgreement(pubKey, privKey) { return this._curve.ECDHE(pubKey, privKey); } verifySignature(pubKey, msg, sig) { return this._curve.Ed25519Verify(pubKey, msg, sig); } calculateSignature(privKey, message) { return this._curve.Ed25519Sign(privKey, message); } }; exports.Curve = Curve; var AsyncCurve = class { constructor(curve) { this._curve = curve; } generateKeyPair() { const privKey = Internal.crypto.getRandomBytes(32); return this._curve.createKeyPair(privKey); } createKeyPair(privKey) { return this._curve.createKeyPair(privKey); } calculateAgreement(pubKey, privKey) { return this._curve.ECDHE(pubKey, privKey); } verifySignature(pubKey, msg, sig) { return this._curve.Ed25519Verify(pubKey, msg, sig); } calculateSignature(privKey, message) { return this._curve.Ed25519Sign(privKey, message); } }; exports.AsyncCurve = AsyncCurve; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/types.js var require_types2 = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/types.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.Direction = void 0; var Direction; (function(Direction2) { Direction2[Direction2["SENDING"] = 1] = "SENDING"; Direction2[Direction2["RECEIVING"] = 2] = "RECEIVING"; })(Direction = exports.Direction || (exports.Direction = {})); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/signal-protocol-address.js var require_signal_protocol_address = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/signal-protocol-address.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.SignalProtocolAddress = void 0; var SignalProtocolAddress3 = class _SignalProtocolAddress { constructor(_name, _deviceId) { this._name = _name; this._deviceId = _deviceId; } static fromString(s) { if (!s.match(/.*\.\d+/)) { throw new Error(`Invalid SignalProtocolAddress string: ${s}`); } const parts = s.split("."); return new _SignalProtocolAddress(parts[0], parseInt(parts[1])); } // Readonly properties get name() { return this._name; } get deviceId() { return this._deviceId; } // Expose properties as fuynctions for compatibility getName() { return this._name; } getDeviceId() { return this._deviceId; } toString() { return `${this._name}.${this._deviceId}`; } equals(other) { return other.name === this._name && other.deviceId == this._deviceId; } }; exports.SignalProtocolAddress = SignalProtocolAddress3; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/key-helper.js var require_key_helper = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/key-helper.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.KeyHelper = void 0; var Internal = __importStar(require_internal()); var KeyHelper3 = class { static generateIdentityKeyPair() { return Internal.crypto.createKeyPair(); } static generateRegistrationId() { const registrationId = new Uint16Array(Internal.crypto.getRandomBytes(2))[0]; return registrationId & 16383; } static generateSignedPreKey(identityKeyPair, signedKeyId) { return __awaiter(this, void 0, void 0, function* () { if (!(identityKeyPair.privKey instanceof ArrayBuffer) || identityKeyPair.privKey.byteLength !== 32 || !(identityKeyPair.pubKey instanceof ArrayBuffer) || identityKeyPair.pubKey.byteLength !== 33) { throw new TypeError("Invalid argument for identityKeyPair"); } if (!isNonNegativeInteger(signedKeyId)) { throw new TypeError("Invalid argument for signedKeyId: " + signedKeyId); } const keyPair = yield Internal.crypto.createKeyPair(); const sig = yield Internal.crypto.Ed25519Sign(identityKeyPair.privKey, keyPair.pubKey); return { keyId: signedKeyId, keyPair, signature: sig }; }); } static generatePreKey(keyId) { return __awaiter(this, void 0, void 0, function* () { if (!isNonNegativeInteger(keyId)) { throw new TypeError("Invalid argument for keyId: " + keyId); } const keyPair = yield Internal.crypto.createKeyPair(); return { keyId, keyPair }; }); } }; exports.KeyHelper = KeyHelper3; function isNonNegativeInteger(n) { return typeof n === "number" && n % 1 === 0 && n >= 0; } } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/fingerprint-generator.js var require_fingerprint_generator = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/fingerprint-generator.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.FingerprintGenerator = void 0; var utils = __importStar(require_helpers()); var msrcrypto = require_msrcrypto(); var FingerprintGenerator3 = class { constructor(_iterations) { this._iterations = _iterations; } createFor(localIdentifier, localIdentityKey, remoteIdentifier, remoteIdentityKey) { return __awaiter(this, void 0, void 0, function* () { const localStr = yield getDisplayStringFor(localIdentifier, localIdentityKey, this._iterations); const remoteStr = yield getDisplayStringFor(remoteIdentifier, remoteIdentityKey, this._iterations); return [localStr, remoteStr].sort().join(""); }); } }; exports.FingerprintGenerator = FingerprintGenerator3; FingerprintGenerator3.VERSION = 0; function getDisplayStringFor(identifier, key, iterations) { return __awaiter(this, void 0, void 0, function* () { const bytes = concatArrayBuffers([ shortToArrayBuffer(FingerprintGenerator3.VERSION), key, utils.binaryStringToArrayBuffer(identifier) ]); const hash = yield iterateHash(bytes, key, iterations); const output = new Uint8Array(hash); return getEncodedChunk(output, 0) + getEncodedChunk(output, 5) + getEncodedChunk(output, 10) + getEncodedChunk(output, 15) + getEncodedChunk(output, 20) + getEncodedChunk(output, 25); }); } function iterateHash(data, key, count) { return __awaiter(this, void 0, void 0, function* () { const data1 = concatArrayBuffers([data, key]); const result = yield msrcrypto.subtle.digest({ name: "SHA-512" }, data1); if (--count === 0) { return result; } else { return iterateHash(result, key, count); } }); } function getEncodedChunk(hash, offset) { const chunk = (hash[offset] * Math.pow(2, 32) + hash[offset + 1] * Math.pow(2, 24) + hash[offset + 2] * Math.pow(2, 16) + hash[offset + 3] * Math.pow(2, 8) + hash[offset + 4]) % 1e5; let s = chunk.toString(); while (s.length < 5) { s = "0" + s; } return s; } function shortToArrayBuffer(number) { return new Uint16Array([number]).buffer; } function concatArrayBuffers(bufs) { const lengths = bufs.map((b) => b.byteLength); const totalLength = lengths.reduce((p, c) => p + c, 0); const result = new Uint8Array(totalLength); lengths.reduce((p, c, i2) => { result.set(new Uint8Array(bufs[i2]), p); return p + c; }, 0); return result.buffer; } } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-types.js var require_session_types = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-types.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.EncryptionResultMessageType = exports.BaseKeyType = exports.ChainType = void 0; var ChainType; (function(ChainType2) { ChainType2[ChainType2["SENDING"] = 1] = "SENDING"; ChainType2[ChainType2["RECEIVING"] = 2] = "RECEIVING"; })(ChainType = exports.ChainType || (exports.ChainType = {})); var BaseKeyType; (function(BaseKeyType2) { BaseKeyType2[BaseKeyType2["OURS"] = 1] = "OURS"; BaseKeyType2[BaseKeyType2["THEIRS"] = 2] = "THEIRS"; })(BaseKeyType = exports.BaseKeyType || (exports.BaseKeyType = {})); var EncryptionResultMessageType; (function(EncryptionResultMessageType2) { EncryptionResultMessageType2[EncryptionResultMessageType2["WhisperMessage"] = 1] = "WhisperMessage"; EncryptionResultMessageType2[EncryptionResultMessageType2["PreKeyWhisperMessage"] = 3] = "PreKeyWhisperMessage"; })(EncryptionResultMessageType = exports.EncryptionResultMessageType || (exports.EncryptionResultMessageType = {})); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-record.js var require_session_record = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-record.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sessionTypeArrayBufferToString = exports.sessionTypeStringToArrayBuffer = exports.indexInfoArrayBufferToString = exports.indexInfoStringToArrayBuffer = exports.ratchetArrayBufferToString = exports.ratchetStringToArrayBuffer = exports.oldRatchetInfoArrayBufferToString = exports.oldRatchetInfoStringToArrayBuffer = exports.chainArrayBufferToString = exports.chainStringToArrayBuffer = exports.pendingPreKeyArrayBufferToString = exports.pendingPreKeyStringToArrayBuffer = exports.keyPairArrayBufferToString = exports.keyPairStirngToArrayBuffer = exports.SessionRecord = void 0; var base64_js_1 = __importDefault(require_base64_js()); var util = __importStar(require_helpers()); var session_types_1 = require_session_types(); var ARCHIVED_STATES_MAX_LENGTH = 40; var OLD_RATCHETS_MAX_LENGTH = 10; var SESSION_RECORD_VERSION = "v1"; var SessionRecord = class _SessionRecord { constructor(registrationId) { this.sessions = {}; this.version = SESSION_RECORD_VERSION; this.registrationId = registrationId; } // eslint-disable-next-line @typescript-eslint/no-explicit-any static migrate(data) { let run = data.version === void 0; for (let i2 = 0; i2 < _SessionRecord.migrations.length; ++i2) { if (run) { _SessionRecord.migrations[i2].migrate(data); } else if (_SessionRecord.migrations[i2].version === data.version) { run = true; } } if (!run) { throw new Error("Error migrating SessionRecord"); } } static deserialize(serialized) { const data = JSON.parse(serialized); if (data.version !== SESSION_RECORD_VERSION) { _SessionRecord.migrate(data); } const record = new _SessionRecord(); record.sessions = {}; for (const k of Object.keys(data.sessions)) { record.sessions[k] = sessionTypeStringToArrayBuffer(data.sessions[k]); } if (record.sessions === void 0 || record.sessions === null || typeof record.sessions !== "object" || Array.isArray(record.sessions)) { throw new Error("Error deserializing SessionRecord"); } return record; } serialize() { const sessions = {}; for (const k of Object.keys(this.sessions)) { sessions[k] = sessionTypeArrayBufferToString(this.sessions[k]); } const json = { sessions, version: this.version }; return JSON.stringify(json); } haveOpenSession() { const openSession = this.getOpenSession(); return !!openSession && typeof openSession.registrationId === "number"; } getSessionByBaseKey(baseKey) { const idx = util.arrayBufferToString(baseKey); if (!idx) { return void 0; } const session = this.sessions[idx]; if (session && session.indexInfo.baseKeyType === session_types_1.BaseKeyType.OURS) { return void 0; } return session; } getSessionByRemoteEphemeralKey(remoteEphemeralKey) { this.detectDuplicateOpenSessions(); const sessions = this.sessions; const searchKey = util.arrayBufferToString(remoteEphemeralKey); if (searchKey) { let openSession; for (const key in sessions) { if (sessions[key].indexInfo.closed == -1) { openSession = sessions[key]; } if (sessions[key].chains[searchKey] !== void 0) { return sessions[key]; } } if (openSession !== void 0) { return openSession; } } return void 0; } getOpenSession() { const sessions = this.sessions; if (sessions === void 0) { return void 0; } this.detectDuplicateOpenSessions(); for (const key in sessions) { if (sessions[key].indexInfo.closed == -1) { return sessions[key]; } } return void 0; } detectDuplicateOpenSessions() { let openSession = null; const sessions = this.sessions; for (const key in sessions) { if (sessions[key].indexInfo.closed == -1) { if (openSession !== null) { throw new Error("Datastore inconsistensy: multiple open sessions"); } openSession = sessions[key]; } } } updateSessionState(session) { const sessions = this.sessions; this.removeOldChains(session); const idx = session.indexInfo.baseKey && util.arrayBufferToString(session.indexInfo.baseKey); if (!idx) { throw new Error(`invalid index for session`); } sessions[idx] = session; this.removeOldSessions(); } getSessions() { let list = []; let openSession = null; for (const k in this.sessions) { if (this.sessions[k].indexInfo.closed === -1) { openSession = this.sessions[k]; } else { list.push(this.sessions[k]); } } list = list.sort(function(s1, s2) { return s1.indexInfo.closed - s2.indexInfo.closed; }); if (openSession) { list.push(openSession); } return list; } archiveCurrentState() { const open_session = this.getOpenSession(); if (open_session !== void 0) { open_session.indexInfo.closed = Date.now(); this.updateSessionState(open_session); } } promoteState(session) { session.indexInfo.closed = -1; } removeOldChains(session) { while (session.oldRatchetList.length > OLD_RATCHETS_MAX_LENGTH) { let index = 0; let oldest = session.oldRatchetList[0]; for (let i2 = 0; i2 < session.oldRatchetList.length; i2++) { if (session.oldRatchetList[i2].added < oldest.added) { oldest = session.oldRatchetList[i2]; index = i2; } } const idx = util.arrayBufferToString(oldest.ephemeralKey); if (!idx) { throw new Error(`invalid index for chain`); } delete session[idx]; session.oldRatchetList.splice(index, 1); } } removeOldSessions() { const { sessions } = this; let oldestBaseKey = null; let oldestSession = null; while (Object.keys(sessions).length > ARCHIVED_STATES_MAX_LENGTH) { for (const key in sessions) { const session = sessions[key]; if (session.indexInfo.closed > -1 && // session is closed (!oldestSession || session.indexInfo.closed < oldestSession.indexInfo.closed)) { oldestBaseKey = key; oldestSession = session; } } if (oldestBaseKey) { delete sessions[oldestBaseKey]; } } } deleteAllSessions() { this.sessions = {}; } }; exports.SessionRecord = SessionRecord; SessionRecord.migrations = [ { version: "v1", // eslint-disable-next-line @typescript-eslint/no-explicit-any migrate: function migrateV1(data) { const sessions = data.sessions; let key; if (data.registrationId) { for (key in sessions) { if (!sessions[key].registrationId) { sessions[key].registrationId = data.registrationId; } } } else { for (key in sessions) { if (sessions[key].indexInfo.closed === -1) { } } } } } ]; function toAB(s) { return util.uint8ArrayToArrayBuffer(base64_js_1.default.toByteArray(s)); } function abToS(b) { return base64_js_1.default.fromByteArray(new Uint8Array(b)); } function keyPairStirngToArrayBuffer(kp) { return { pubKey: toAB(kp.pubKey), privKey: toAB(kp.privKey) }; } exports.keyPairStirngToArrayBuffer = keyPairStirngToArrayBuffer; function keyPairArrayBufferToString(kp) { return { pubKey: abToS(kp.pubKey), privKey: abToS(kp.privKey) }; } exports.keyPairArrayBufferToString = keyPairArrayBufferToString; function pendingPreKeyStringToArrayBuffer(ppk) { const { preKeyId, signedKeyId } = ppk; return { baseKey: toAB(ppk.baseKey), preKeyId, signedKeyId }; } exports.pendingPreKeyStringToArrayBuffer = pendingPreKeyStringToArrayBuffer; function pendingPreKeyArrayBufferToString(ppk) { const { preKeyId, signedKeyId } = ppk; return { baseKey: abToS(ppk.baseKey), preKeyId, signedKeyId }; } exports.pendingPreKeyArrayBufferToString = pendingPreKeyArrayBufferToString; function chainStringToArrayBuffer(c) { const { chainType, chainKey, messageKeys } = c; const { key, counter } = chainKey; const newMessageKeys = {}; for (const k of Object.keys(messageKeys)) { newMessageKeys[k] = toAB(messageKeys[k]); } return { chainType, chainKey: { key: key ? util.uint8ArrayToArrayBuffer(base64_js_1.default.toByteArray(key)) : void 0, counter }, messageKeys: newMessageKeys }; } exports.chainStringToArrayBuffer = chainStringToArrayBuffer; function chainArrayBufferToString(c) { const { chainType, chainKey, messageKeys } = c; const { key, counter } = chainKey; const newMessageKeys = {}; for (const k of Object.keys(messageKeys)) { newMessageKeys[k] = abToS(messageKeys[k]); } return { chainType, chainKey: { key: key ? abToS(key) : void 0, counter }, messageKeys: newMessageKeys }; } exports.chainArrayBufferToString = chainArrayBufferToString; function oldRatchetInfoStringToArrayBuffer(ori) { return { ephemeralKey: toAB(ori.ephemeralKey), added: ori.added }; } exports.oldRatchetInfoStringToArrayBuffer = oldRatchetInfoStringToArrayBuffer; function oldRatchetInfoArrayBufferToString(ori) { return { ephemeralKey: abToS(ori.ephemeralKey), added: ori.added }; } exports.oldRatchetInfoArrayBufferToString = oldRatchetInfoArrayBufferToString; function ratchetStringToArrayBuffer(r) { return { rootKey: toAB(r.rootKey), ephemeralKeyPair: r.ephemeralKeyPair && keyPairStirngToArrayBuffer(r.ephemeralKeyPair), lastRemoteEphemeralKey: toAB(r.lastRemoteEphemeralKey), previousCounter: r.previousCounter, added: r.added }; } exports.ratchetStringToArrayBuffer = ratchetStringToArrayBuffer; function ratchetArrayBufferToString(r) { return { rootKey: abToS(r.rootKey), ephemeralKeyPair: r.ephemeralKeyPair && keyPairArrayBufferToString(r.ephemeralKeyPair), lastRemoteEphemeralKey: abToS(r.lastRemoteEphemeralKey), previousCounter: r.previousCounter, added: r.added }; } exports.ratchetArrayBufferToString = ratchetArrayBufferToString; function indexInfoStringToArrayBuffer(ii) { const { closed, remoteIdentityKey, baseKey, baseKeyType } = ii; return { closed, remoteIdentityKey: toAB(remoteIdentityKey), baseKey: baseKey ? toAB(baseKey) : void 0, baseKeyType }; } exports.indexInfoStringToArrayBuffer = indexInfoStringToArrayBuffer; function indexInfoArrayBufferToString(ii) { const { closed, remoteIdentityKey, baseKey, baseKeyType } = ii; return { closed, remoteIdentityKey: abToS(remoteIdentityKey), baseKey: baseKey ? abToS(baseKey) : void 0, baseKeyType }; } exports.indexInfoArrayBufferToString = indexInfoArrayBufferToString; function sessionTypeStringToArrayBuffer(sess) { const { indexInfo, registrationId, currentRatchet, pendingPreKey, oldRatchetList, chains } = sess; const newChains = {}; for (const k of Object.keys(chains)) { newChains[k] = chainStringToArrayBuffer(chains[k]); } return { indexInfo: indexInfoStringToArrayBuffer(indexInfo), registrationId, currentRatchet: ratchetStringToArrayBuffer(currentRatchet), pendingPreKey: pendingPreKey ? pendingPreKeyStringToArrayBuffer(pendingPreKey) : void 0, oldRatchetList: oldRatchetList.map(oldRatchetInfoStringToArrayBuffer), chains: newChains }; } exports.sessionTypeStringToArrayBuffer = sessionTypeStringToArrayBuffer; function sessionTypeArrayBufferToString(sess) { const { indexInfo, registrationId, currentRatchet, pendingPreKey, oldRatchetList, chains } = sess; const newChains = {}; for (const k of Object.keys(chains)) { newChains[k] = chainArrayBufferToString(chains[k]); } return { indexInfo: indexInfoArrayBufferToString(indexInfo), registrationId, currentRatchet: ratchetArrayBufferToString(currentRatchet), pendingPreKey: pendingPreKey ? pendingPreKeyArrayBufferToString(pendingPreKey) : void 0, oldRatchetList: oldRatchetList.map(oldRatchetInfoArrayBufferToString), chains: newChains }; } exports.sessionTypeArrayBufferToString = sessionTypeArrayBufferToString; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-lock.js var require_session_lock = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-lock.js"(exports) { "use strict"; init_inject_buffer(); var __awaiter = exports && exports.__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.SessionLock = void 0; var jobQueue = {}; var SessionLock = class _SessionLock { static queueJobForNumber(id, runJob) { const runPrevious = jobQueue[id] || Promise.resolve(); const runCurrent = jobQueue[id] = runPrevious.then(runJob, runJob); const promise = runCurrent.then(function() { if (jobQueue[id] === runCurrent) { delete jobQueue[id]; } }).catch((e) => { _SessionLock.errors.push(e); }); _SessionLock._promises.push(promise); return runCurrent; } static clearQueue() { return __awaiter(this, void 0, void 0, function* () { yield Promise.all(_SessionLock._promises); }); } }; exports.SessionLock = SessionLock; SessionLock.errors = []; SessionLock._promises = []; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-builder.js var require_session_builder = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-builder.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.SessionBuilder = void 0; var types_1 = require_types2(); var session_types_1 = require_session_types(); var Internal = __importStar(require_internal()); var base64 = __importStar(require_base64_js()); var session_record_1 = require_session_record(); var session_lock_1 = require_session_lock(); var helpers_1 = require_helpers(); var SessionBuilder3 = class { constructor(storage, remoteAddress) { this.processPreKeyJob = (device) => __awaiter(this, void 0, void 0, function* () { var _a; const trusted = yield this.storage.isTrustedIdentity(this.remoteAddress.name, device.identityKey, types_1.Direction.SENDING); if (!trusted) { throw new Error("Identity key changed"); } yield Internal.crypto.Ed25519Verify(device.identityKey, device.signedPreKey.publicKey, device.signedPreKey.signature); const ephemeralKey = yield Internal.crypto.createKeyPair(); const deviceOneTimePreKey = (_a = device.preKey) === null || _a === void 0 ? void 0 : _a.publicKey; const session = yield this.startSessionAsInitiator(ephemeralKey, device.identityKey, device.signedPreKey.publicKey, deviceOneTimePreKey, device.registrationId); session.pendingPreKey = { signedKeyId: device.signedPreKey.keyId, baseKey: ephemeralKey.pubKey }; if (device.preKey) { session.pendingPreKey.preKeyId = device.preKey.keyId; } const address = this.remoteAddress.toString(); const serialized = yield this.storage.loadSession(address); let record; if (serialized !== void 0) { record = session_record_1.SessionRecord.deserialize(serialized); } else { record = new session_record_1.SessionRecord(); } record.archiveCurrentState(); record.updateSessionState(session); yield Promise.all([ this.storage.storeSession(address, record.serialize()), this.storage.saveIdentity(this.remoteAddress.toString(), session.indexInfo.remoteIdentityKey) ]); return session; }); this.startSessionAsInitiator = (EKa, IKb, SPKb, OPKb, registrationId) => __awaiter(this, void 0, void 0, function* () { const IKa = yield this.storage.getIdentityKeyPair(); if (!IKa) { throw new Error(`No identity key. Cannot initiate session.`); } let sharedSecret; if (OPKb === void 0) { sharedSecret = new Uint8Array(32 * 4); } else { sharedSecret = new Uint8Array(32 * 5); } for (let i2 = 0; i2 < 32; i2++) { sharedSecret[i2] = 255; } if (!SPKb) { throw new Error(`theirSignedPubKey is undefined. Cannot proceed with ECDHE`); } const ecRes = yield Promise.all([ Internal.crypto.ECDHE(SPKb, IKa.privKey), Internal.crypto.ECDHE(IKb, EKa.privKey), Internal.crypto.ECDHE(SPKb, EKa.privKey) ]); sharedSecret.set(new Uint8Array(ecRes[0]), 32); sharedSecret.set(new Uint8Array(ecRes[1]), 32 * 2); sharedSecret.set(new Uint8Array(ecRes[2]), 32 * 3); if (OPKb !== void 0) { const ecRes4 = yield Internal.crypto.ECDHE(OPKb, EKa.privKey); sharedSecret.set(new Uint8Array(ecRes4), 32 * 4); } const masterKey = yield Internal.HKDF((0, helpers_1.uint8ArrayToArrayBuffer)(sharedSecret), new ArrayBuffer(32), "WhisperText"); const session = { registrationId, currentRatchet: { rootKey: masterKey[0], lastRemoteEphemeralKey: SPKb, previousCounter: 0 }, indexInfo: { remoteIdentityKey: IKb, closed: -1 }, oldRatchetList: [], chains: {} }; session.indexInfo.baseKey = EKa.pubKey; session.indexInfo.baseKeyType = session_types_1.BaseKeyType.OURS; const ourSendingEphemeralKey = yield Internal.crypto.createKeyPair(); session.currentRatchet.ephemeralKeyPair = ourSendingEphemeralKey; yield this.calculateSendingRatchet(session, SPKb); return session; }); this.startSessionWthPreKeyMessage = (OPKb, SPKb, message) => __awaiter(this, void 0, void 0, function* () { const IKb = yield this.storage.getIdentityKeyPair(); const IKa = message.identityKey; const EKa = message.baseKey; if (!IKb) { throw new Error(`No identity key. Cannot initiate session.`); } let sharedSecret; if (!OPKb) { sharedSecret = new Uint8Array(32 * 4); } else { sharedSecret = new Uint8Array(32 * 5); } for (let i2 = 0; i2 < 32; i2++) { sharedSecret[i2] = 255; } const ecRes = yield Promise.all([ Internal.crypto.ECDHE(IKa, SPKb.privKey), Internal.crypto.ECDHE(EKa, IKb.privKey), Internal.crypto.ECDHE(EKa, SPKb.privKey) ]); sharedSecret.set(new Uint8Array(ecRes[0]), 32); sharedSecret.set(new Uint8Array(ecRes[1]), 32 * 2); sharedSecret.set(new Uint8Array(ecRes[2]), 32 * 3); if (OPKb) { const ecRes4 = yield Internal.crypto.ECDHE(EKa, OPKb.privKey); sharedSecret.set(new Uint8Array(ecRes4), 32 * 4); } const masterKey = yield Internal.HKDF((0, helpers_1.uint8ArrayToArrayBuffer)(sharedSecret), new ArrayBuffer(32), "WhisperText"); const session = { registrationId: message.registrationId, currentRatchet: { rootKey: masterKey[0], lastRemoteEphemeralKey: EKa, previousCounter: 0 }, indexInfo: { remoteIdentityKey: IKa, closed: -1 }, oldRatchetList: [], chains: {} }; session.indexInfo.baseKey = EKa; session.indexInfo.baseKeyType = session_types_1.BaseKeyType.THEIRS; session.currentRatchet.ephemeralKeyPair = SPKb; return session; }); this.remoteAddress = remoteAddress; this.storage = storage; } calculateSendingRatchet(session, remoteKey) { return __awaiter(this, void 0, void 0, function* () { const ratchet = session.currentRatchet; if (!ratchet.ephemeralKeyPair) { throw new Error(`Invalid ratchet - ephemeral key pair is missing`); } const ephPrivKey = ratchet.ephemeralKeyPair.privKey; const rootKey = ratchet.rootKey; const ephPubKey = base64.fromByteArray(new Uint8Array(ratchet.ephemeralKeyPair.pubKey)); if (!(ephPrivKey && ephPubKey && rootKey)) { throw new Error(`Missing key, cannot calculate sending ratchet`); } const sharedSecret = yield Internal.crypto.ECDHE(remoteKey, ephPrivKey); const masterKey = yield Internal.HKDF(sharedSecret, rootKey, "WhisperRatchet"); session.chains[ephPubKey] = { messageKeys: {}, chainKey: { counter: -1, key: masterKey[1] }, chainType: session_types_1.ChainType.SENDING }; ratchet.rootKey = masterKey[0]; }); } processPreKey(device) { return __awaiter(this, void 0, void 0, function* () { const runJob = () => __awaiter(this, void 0, void 0, function* () { const sess = yield this.processPreKeyJob(device); return sess; }); return session_lock_1.SessionLock.queueJobForNumber(this.remoteAddress.toString(), runJob); }); } processV3(record, message) { return __awaiter(this, void 0, void 0, function* () { const trusted = this.storage.isTrustedIdentity(this.remoteAddress.name, (0, helpers_1.uint8ArrayToArrayBuffer)(message.identityKey), types_1.Direction.RECEIVING); if (!trusted) { throw new Error(`Unknown identity key: ${(0, helpers_1.uint8ArrayToArrayBuffer)(message.identityKey)}`); } const [preKeyPair, signedPreKeyPair] = yield Promise.all([ this.storage.loadPreKey(message.preKeyId), this.storage.loadSignedPreKey(message.signedPreKeyId) ]); if (record.getSessionByBaseKey(message.baseKey)) { return; } const session = record.getOpenSession(); if (signedPreKeyPair === void 0) { if (session !== void 0 && session.currentRatchet !== void 0) { return; } else { throw new Error("Missing Signed PreKey for PreKeyWhisperMessage"); } } if (session !== void 0) { record.archiveCurrentState(); } if (message.preKeyId && !preKeyPair) { } const new_session = yield this.startSessionWthPreKeyMessage(preKeyPair, signedPreKeyPair, message); record.updateSessionState(new_session); yield this.storage.saveIdentity(this.remoteAddress.toString(), (0, helpers_1.uint8ArrayToArrayBuffer)(message.identityKey)); return message.preKeyId; }); } }; exports.SessionBuilder = SessionBuilder3; } }); // node_modules/@protobufjs/aspromise/index.js var require_aspromise = __commonJS({ "node_modules/@protobufjs/aspromise/index.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = asPromise; function asPromise(fn, ctx) { var params = new Array(arguments.length - 1), offset = 0, index = 2, pending = true; while (index < arguments.length) params[offset++] = arguments[index++]; return new Promise(function executor(resolve, reject) { params[offset] = function callback(err) { if (pending) { pending = false; if (err) reject(err); else { var params2 = new Array(arguments.length - 1), offset2 = 0; while (offset2 < params2.length) params2[offset2++] = arguments[offset2]; resolve.apply(null, params2); } } }; try { fn.apply(ctx || null, params); } catch (err) { if (pending) { pending = false; reject(err); } } }); } } }); // node_modules/@protobufjs/base64/index.js var require_base64 = __commonJS({ "node_modules/@protobufjs/base64/index.js"(exports) { "use strict"; init_inject_buffer(); var base64 = exports; base64.length = function length(string) { var p = string.length; if (!p) return 0; var n = 0; while (--p % 4 > 1 && string.charAt(p) === "=") ++n; return Math.ceil(string.length * 3) / 4 - n; }; var b64 = new Array(64); var s64 = new Array(123); for (i2 = 0; i2 < 64; ) s64[b64[i2] = i2 < 26 ? i2 + 65 : i2 < 52 ? i2 + 71 : i2 < 62 ? i2 - 4 : i2 - 59 | 43] = i2++; var i2; base64.encode = function encode(buffer, start, end) { var parts = null, chunk = []; var i3 = 0, j = 0, t; while (start < end) { var b = buffer[start++]; switch (j) { case 0: chunk[i3++] = b64[b >> 2]; t = (b & 3) << 4; j = 1; break; case 1: chunk[i3++] = b64[t | b >> 4]; t = (b & 15) << 2; j = 2; break; case 2: chunk[i3++] = b64[t | b >> 6]; chunk[i3++] = b64[b & 63]; j = 0; break; } if (i3 > 8191) { (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); i3 = 0; } } if (j) { chunk[i3++] = b64[t]; chunk[i3++] = 61; if (j === 1) chunk[i3++] = 61; } if (parts) { if (i3) parts.push(String.fromCharCode.apply(String, chunk.slice(0, i3))); return parts.join(""); } return String.fromCharCode.apply(String, chunk.slice(0, i3)); }; var invalidEncoding = "invalid encoding"; base64.decode = function decode(string, buffer, offset) { var start = offset; var j = 0, t; for (var i3 = 0; i3 < string.length; ) { var c = string.charCodeAt(i3++); if (c === 61 && j > 1) break; if ((c = s64[c]) === void 0) throw Error(invalidEncoding); switch (j) { case 0: t = c; j = 1; break; case 1: buffer[offset++] = t << 2 | (c & 48) >> 4; t = c; j = 2; break; case 2: buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2; t = c; j = 3; break; case 3: buffer[offset++] = (t & 3) << 6 | c; j = 0; break; } } if (j === 1) throw Error(invalidEncoding); return offset - start; }; base64.test = function test(string) { return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string); }; } }); // node_modules/@protobufjs/eventemitter/index.js var require_eventemitter = __commonJS({ "node_modules/@protobufjs/eventemitter/index.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = EventEmitter; function EventEmitter() { this._listeners = /* @__PURE__ */ Object.create(null); } EventEmitter.prototype.on = function on(evt, fn, ctx) { (this._listeners[evt] || (this._listeners[evt] = [])).push({ fn, ctx: ctx || this }); return this; }; EventEmitter.prototype.off = function off(evt, fn) { if (evt === void 0) this._listeners = /* @__PURE__ */ Object.create(null); else { if (fn === void 0) this._listeners[evt] = []; else { var listeners = this._listeners[evt]; if (!listeners) return this; for (var i2 = 0; i2 < listeners.length; ) if (listeners[i2].fn === fn) listeners.splice(i2, 1); else ++i2; } } return this; }; EventEmitter.prototype.emit = function emit(evt) { var listeners = this._listeners[evt]; if (listeners) { var args = [], i2 = 1; for (; i2 < arguments.length; ) args.push(arguments[i2++]); for (i2 = 0; i2 < listeners.length; ) listeners[i2].fn.apply(listeners[i2++].ctx, args); } return this; }; } }); // node_modules/@protobufjs/float/index.js var require_float = __commonJS({ "node_modules/@protobufjs/float/index.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = factory(factory); function factory(exports2) { if (typeof Float32Array !== "undefined") (function() { var f32 = new Float32Array([-0]), f8b = new Uint8Array(f32.buffer), le = f8b[3] === 128; function writeFloat_f32_cpy(val, buf, pos) { f32[0] = val; buf[pos] = f8b[0]; buf[pos + 1] = f8b[1]; buf[pos + 2] = f8b[2]; buf[pos + 3] = f8b[3]; } function writeFloat_f32_rev(val, buf, pos) { f32[0] = val; buf[pos] = f8b[3]; buf[pos + 1] = f8b[2]; buf[pos + 2] = f8b[1]; buf[pos + 3] = f8b[0]; } exports2.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; exports2.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; function readFloat_f32_cpy(buf, pos) { f8b[0] = buf[pos]; f8b[1] = buf[pos + 1]; f8b[2] = buf[pos + 2]; f8b[3] = buf[pos + 3]; return f32[0]; } function readFloat_f32_rev(buf, pos) { f8b[3] = buf[pos]; f8b[2] = buf[pos + 1]; f8b[1] = buf[pos + 2]; f8b[0] = buf[pos + 3]; return f32[0]; } exports2.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; exports2.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; })(); else (function() { function writeFloat_ieee754(writeUint, val, buf, pos) { var sign = val < 0 ? 1 : 0; if (sign) val = -val; if (val === 0) writeUint(1 / val > 0 ? ( /* positive */ 0 ) : ( /* negative 0 */ 2147483648 ), buf, pos); else if (isNaN(val)) writeUint(2143289344, buf, pos); else if (val > 34028234663852886e22) writeUint((sign << 31 | 2139095040) >>> 0, buf, pos); else if (val < 11754943508222875e-54) writeUint((sign << 31 | Math.round(val / 1401298464324817e-60)) >>> 0, buf, pos); else { var exponent = Math.floor(Math.log(val) / Math.LN2), mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); } } exports2.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); exports2.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); function readFloat_ieee754(readUint, buf, pos) { var uint = readUint(buf, pos), sign = (uint >> 31) * 2 + 1, exponent = uint >>> 23 & 255, mantissa = uint & 8388607; return exponent === 255 ? mantissa ? NaN : sign * Infinity : exponent === 0 ? sign * 1401298464324817e-60 * mantissa : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); } exports2.readFloatLE = readFloat_ieee754.bind(null, readUintLE); exports2.readFloatBE = readFloat_ieee754.bind(null, readUintBE); })(); if (typeof Float64Array !== "undefined") (function() { var f64 = new Float64Array([-0]), f8b = new Uint8Array(f64.buffer), le = f8b[7] === 128; function writeDouble_f64_cpy(val, buf, pos) { f64[0] = val; buf[pos] = f8b[0]; buf[pos + 1] = f8b[1]; buf[pos + 2] = f8b[2]; buf[pos + 3] = f8b[3]; buf[pos + 4] = f8b[4]; buf[pos + 5] = f8b[5]; buf[pos + 6] = f8b[6]; buf[pos + 7] = f8b[7]; } function writeDouble_f64_rev(val, buf, pos) { f64[0] = val; buf[pos] = f8b[7]; buf[pos + 1] = f8b[6]; buf[pos + 2] = f8b[5]; buf[pos + 3] = f8b[4]; buf[pos + 4] = f8b[3]; buf[pos + 5] = f8b[2]; buf[pos + 6] = f8b[1]; buf[pos + 7] = f8b[0]; } exports2.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; exports2.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; function readDouble_f64_cpy(buf, pos) { f8b[0] = buf[pos]; f8b[1] = buf[pos + 1]; f8b[2] = buf[pos + 2]; f8b[3] = buf[pos + 3]; f8b[4] = buf[pos + 4]; f8b[5] = buf[pos + 5]; f8b[6] = buf[pos + 6]; f8b[7] = buf[pos + 7]; return f64[0]; } function readDouble_f64_rev(buf, pos) { f8b[7] = buf[pos]; f8b[6] = buf[pos + 1]; f8b[5] = buf[pos + 2]; f8b[4] = buf[pos + 3]; f8b[3] = buf[pos + 4]; f8b[2] = buf[pos + 5]; f8b[1] = buf[pos + 6]; f8b[0] = buf[pos + 7]; return f64[0]; } exports2.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; exports2.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; })(); else (function() { function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { var sign = val < 0 ? 1 : 0; if (sign) val = -val; if (val === 0) { writeUint(0, buf, pos + off0); writeUint(1 / val > 0 ? ( /* positive */ 0 ) : ( /* negative 0 */ 2147483648 ), buf, pos + off1); } else if (isNaN(val)) { writeUint(0, buf, pos + off0); writeUint(2146959360, buf, pos + off1); } else if (val > 17976931348623157e292) { writeUint(0, buf, pos + off0); writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); } else { var mantissa; if (val < 22250738585072014e-324) { mantissa = val / 5e-324; writeUint(mantissa >>> 0, buf, pos + off0); writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); } else { var exponent = Math.floor(Math.log(val) / Math.LN2); if (exponent === 1024) exponent = 1023; mantissa = val * Math.pow(2, -exponent); writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); } } } exports2.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); exports2.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); function readDouble_ieee754(readUint, off0, off1, buf, pos) { var lo = readUint(buf, pos + off0), hi = readUint(buf, pos + off1); var sign = (hi >> 31) * 2 + 1, exponent = hi >>> 20 & 2047, mantissa = 4294967296 * (hi & 1048575) + lo; return exponent === 2047 ? mantissa ? NaN : sign * Infinity : exponent === 0 ? sign * 5e-324 * mantissa : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); } exports2.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); exports2.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); })(); return exports2; } function writeUintLE(val, buf, pos) { buf[pos] = val & 255; buf[pos + 1] = val >>> 8 & 255; buf[pos + 2] = val >>> 16 & 255; buf[pos + 3] = val >>> 24; } function writeUintBE(val, buf, pos) { buf[pos] = val >>> 24; buf[pos + 1] = val >>> 16 & 255; buf[pos + 2] = val >>> 8 & 255; buf[pos + 3] = val & 255; } function readUintLE(buf, pos) { return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16 | buf[pos + 3] << 24) >>> 0; } function readUintBE(buf, pos) { return (buf[pos] << 24 | buf[pos + 1] << 16 | buf[pos + 2] << 8 | buf[pos + 3]) >>> 0; } } }); // node_modules/@protobufjs/utf8/index.js var require_utf8 = __commonJS({ "node_modules/@protobufjs/utf8/index.js"(exports) { "use strict"; init_inject_buffer(); var utf8 = exports; var replacementCharCode = 65533; utf8.length = function utf8_length(string) { var len = 0, c = 0; for (var i2 = 0; i2 < string.length; ++i2) { c = string.charCodeAt(i2); if (c < 128) len += 1; else if (c < 2048) len += 2; else if ((c & 64512) === 55296 && (string.charCodeAt(i2 + 1) & 64512) === 56320) { ++i2; len += 4; } else len += 3; } return len; }; utf8.read = function utf8_read(buffer, start, end) { if (end - start < 1) return ""; var parts = null, chunk = [], i2 = 0, t, t2, c2, c3; while (start < end) { t = buffer[start++]; if (t <= 127) { chunk[i2++] = t; } else if (t >= 192 && t < 224) { c2 = (t & 31) << 6 | buffer[start++] & 63; chunk[i2++] = c2 >= 128 ? c2 : replacementCharCode; } else if (t >= 224 && t < 240) { c3 = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; chunk[i2++] = c3 >= 2048 ? c3 : replacementCharCode; } else if (t >= 240) { t2 = (t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; if (t2 < 65536 || t2 > 1114111) chunk[i2++] = replacementCharCode; else { t2 -= 65536; chunk[i2++] = 55296 + (t2 >> 10); chunk[i2++] = 56320 + (t2 & 1023); } } if (i2 > 8191) { (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk.slice(0, i2))); i2 = 0; } } if (parts) { if (i2) parts.push(String.fromCharCode.apply(String, chunk.slice(0, i2))); return parts.join(""); } return String.fromCharCode.apply(String, chunk.slice(0, i2)); }; utf8.write = function utf8_write(string, buffer, offset) { var start = offset, c1, c2; for (var i2 = 0; i2 < string.length; ++i2) { c1 = string.charCodeAt(i2); if (c1 < 128) { buffer[offset++] = c1; } else if (c1 < 2048) { buffer[offset++] = c1 >> 6 | 192; buffer[offset++] = c1 & 63 | 128; } else if ((c1 & 64512) === 55296 && ((c2 = string.charCodeAt(i2 + 1)) & 64512) === 56320) { c1 = 65536 + ((c1 & 1023) << 10) + (c2 & 1023); ++i2; buffer[offset++] = c1 >> 18 | 240; buffer[offset++] = c1 >> 12 & 63 | 128; buffer[offset++] = c1 >> 6 & 63 | 128; buffer[offset++] = c1 & 63 | 128; } else { buffer[offset++] = c1 >> 12 | 224; buffer[offset++] = c1 >> 6 & 63 | 128; buffer[offset++] = c1 & 63 | 128; } } return offset - start; }; } }); // node_modules/@protobufjs/pool/index.js var require_pool = __commonJS({ "node_modules/@protobufjs/pool/index.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = pool; function pool(alloc, slice, size) { var SIZE = size || 8192; var MAX = SIZE >>> 1; var slab = null; var offset = SIZE; return function pool_alloc(size2) { if (size2 < 1 || size2 > MAX) return alloc(size2); if (offset + size2 > SIZE) { slab = alloc(SIZE); offset = 0; } var buf = slice.call(slab, offset, offset += size2); if (offset & 7) offset = (offset | 7) + 1; return buf; }; } } }); // node_modules/protobufjs/src/util/longbits.js var require_longbits = __commonJS({ "node_modules/protobufjs/src/util/longbits.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = LongBits; var util = require_minimal(); function LongBits(lo, hi) { this.lo = lo >>> 0; this.hi = hi >>> 0; } var zero = LongBits.zero = new LongBits(0, 0); zero.toNumber = function() { return 0; }; zero.zzEncode = zero.zzDecode = function() { return this; }; zero.length = function() { return 1; }; var zeroHash = LongBits.zeroHash = "\0\0\0\0\0\0\0\0"; LongBits.fromNumber = function fromNumber(value) { if (value === 0) return zero; var sign = value < 0; if (sign) value = -value; var lo = value >>> 0, hi = (value - lo) / 4294967296 >>> 0; if (sign) { hi = ~hi >>> 0; lo = ~lo >>> 0; if (++lo > 4294967295) { lo = 0; if (++hi > 4294967295) hi = 0; } } return new LongBits(lo, hi); }; LongBits.from = function from(value) { if (typeof value === "number") return LongBits.fromNumber(value); if (util.isString(value)) { if (util.Long) value = util.Long.fromString(value); else return LongBits.fromNumber(parseInt(value, 10)); } return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero; }; LongBits.prototype.toNumber = function toNumber(unsigned) { if (!unsigned && this.hi >>> 31) { var lo = ~this.lo + 1 >>> 0, hi = ~this.hi >>> 0; if (!lo) hi = hi + 1 >>> 0; return -(lo + hi * 4294967296); } return this.lo + this.hi * 4294967296; }; LongBits.prototype.toLong = function toLong(unsigned) { return util.Long ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned)) : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) }; }; var charCodeAt = String.prototype.charCodeAt; LongBits.fromHash = function fromHash(hash) { if (hash === zeroHash) return zero; return new LongBits( (charCodeAt.call(hash, 0) | charCodeAt.call(hash, 1) << 8 | charCodeAt.call(hash, 2) << 16 | charCodeAt.call(hash, 3) << 24) >>> 0, (charCodeAt.call(hash, 4) | charCodeAt.call(hash, 5) << 8 | charCodeAt.call(hash, 6) << 16 | charCodeAt.call(hash, 7) << 24) >>> 0 ); }; LongBits.prototype.toHash = function toHash() { return String.fromCharCode( this.lo & 255, this.lo >>> 8 & 255, this.lo >>> 16 & 255, this.lo >>> 24, this.hi & 255, this.hi >>> 8 & 255, this.hi >>> 16 & 255, this.hi >>> 24 ); }; LongBits.prototype.zzEncode = function zzEncode() { var mask = this.hi >> 31; this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0; this.lo = (this.lo << 1 ^ mask) >>> 0; return this; }; LongBits.prototype.zzDecode = function zzDecode() { var mask = -(this.lo & 1); this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0; this.hi = (this.hi >>> 1 ^ mask) >>> 0; return this; }; LongBits.prototype.length = function length() { var part0 = this.lo, part1 = (this.lo >>> 28 | this.hi << 4) >>> 0, part2 = this.hi >>> 24; return part2 === 0 ? part1 === 0 ? part0 < 16384 ? part0 < 128 ? 1 : 2 : part0 < 2097152 ? 3 : 4 : part1 < 16384 ? part1 < 128 ? 5 : 6 : part1 < 2097152 ? 7 : 8 : part2 < 128 ? 9 : 10; }; } }); // node_modules/long/umd/index.js var require_umd = __commonJS({ "node_modules/long/umd/index.js"(exports, module) { init_inject_buffer(); (function(global2, factory) { function preferDefault(exports2) { return exports2.default || exports2; } if (typeof define === "function" && define.amd) { define([], function() { var exports2 = {}; factory(exports2); return preferDefault(exports2); }); } else if (typeof exports === "object") { factory(exports); if (typeof module === "object") module.exports = preferDefault(exports); } else { (function() { var exports2 = {}; factory(exports2); global2.Long = preferDefault(exports2); })(); } })( typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : exports, function(_exports) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports.default = void 0; var wasm = null; try { wasm = new WebAssembly.Instance( new WebAssembly.Module( new Uint8Array([ // \0asm 0, 97, 115, 109, // version 1 1, 0, 0, 0, // section "type" 1, 13, 2, // 0, () => i32 96, 0, 1, 127, // 1, (i32, i32, i32, i32) => i32 96, 4, 127, 127, 127, 127, 1, 127, // section "function" 3, 7, 6, // 0, type 0 0, // 1, type 1 1, // 2, type 1 1, // 3, type 1 1, // 4, type 1 1, // 5, type 1 1, // section "global" 6, 6, 1, // 0, "high", mutable i32 127, 1, 65, 0, 11, // section "export" 7, 50, 6, // 0, "mul" 3, 109, 117, 108, 0, 1, // 1, "div_s" 5, 100, 105, 118, 95, 115, 0, 2, // 2, "div_u" 5, 100, 105, 118, 95, 117, 0, 3, // 3, "rem_s" 5, 114, 101, 109, 95, 115, 0, 4, // 4, "rem_u" 5, 114, 101, 109, 95, 117, 0, 5, // 5, "get_high" 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, // section "code" 10, 191, 1, 6, // 0, "get_high" 4, 0, 35, 0, 11, // 1, "mul" 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, // 2, "div_s" 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, // 3, "div_u" 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, // 4, "rem_s" 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, // 5, "rem_u" 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 ]) ), {} ).exports; } catch { } function Long(low, high, unsigned) { this.low = low | 0; this.high = high | 0; this.unsigned = !!unsigned; } Long.prototype.__isLong__; Object.defineProperty(Long.prototype, "__isLong__", { value: true }); function isLong(obj) { return (obj && obj["__isLong__"]) === true; } function ctz32(value) { var c = Math.clz32(value & -value); return value ? 31 - c : c; } Long.isLong = isLong; var INT_CACHE = {}; var UINT_CACHE = {}; function fromInt(value, unsigned) { var obj, cachedObj, cache; if (unsigned) { value >>>= 0; if (cache = 0 <= value && value < 256) { cachedObj = UINT_CACHE[value]; if (cachedObj) return cachedObj; } obj = fromBits(value, 0, true); if (cache) UINT_CACHE[value] = obj; return obj; } else { value |= 0; if (cache = -128 <= value && value < 128) { cachedObj = INT_CACHE[value]; if (cachedObj) return cachedObj; } obj = fromBits(value, value < 0 ? -1 : 0, false); if (cache) INT_CACHE[value] = obj; return obj; } } Long.fromInt = fromInt; function fromNumber(value, unsigned) { if (isNaN(value)) return unsigned ? UZERO : ZERO; if (unsigned) { if (value < 0) return UZERO; if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE; } else { if (value <= -TWO_PWR_63_DBL) return MIN_VALUE; if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE; } if (value < 0) return fromNumber(-value, unsigned).neg(); return fromBits( value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned ); } Long.fromNumber = fromNumber; function fromBits(lowBits, highBits, unsigned) { return new Long(lowBits, highBits, unsigned); } Long.fromBits = fromBits; var pow_dbl = Math.pow; function fromString(str, unsigned, radix) { if (str.length === 0) throw Error("empty string"); if (typeof unsigned === "number") { radix = unsigned; unsigned = false; } else { unsigned = !!unsigned; } if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") return unsigned ? UZERO : ZERO; radix = radix || 10; if (radix < 2 || 36 < radix) throw RangeError("radix"); var p; if ((p = str.indexOf("-")) > 0) throw Error("interior hyphen"); else if (p === 0) { return fromString(str.substring(1), unsigned, radix).neg(); } var radixToPower = fromNumber(pow_dbl(radix, 8)); var result = ZERO; for (var i2 = 0; i2 < str.length; i2 += 8) { var size = Math.min(8, str.length - i2), value = parseInt(str.substring(i2, i2 + size), radix); if (size < 8) { var power = fromNumber(pow_dbl(radix, size)); result = result.mul(power).add(fromNumber(value)); } else { result = result.mul(radixToPower); result = result.add(fromNumber(value)); } } result.unsigned = unsigned; return result; } Long.fromString = fromString; function fromValue(val, unsigned) { if (typeof val === "number") return fromNumber(val, unsigned); if (typeof val === "string") return fromString(val, unsigned); return fromBits( val.low, val.high, typeof unsigned === "boolean" ? unsigned : val.unsigned ); } Long.fromValue = fromValue; var TWO_PWR_16_DBL = 1 << 16; var TWO_PWR_24_DBL = 1 << 24; var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); var ZERO = fromInt(0); Long.ZERO = ZERO; var UZERO = fromInt(0, true); Long.UZERO = UZERO; var ONE = fromInt(1); Long.ONE = ONE; var UONE = fromInt(1, true); Long.UONE = UONE; var NEG_ONE = fromInt(-1); Long.NEG_ONE = NEG_ONE; var MAX_VALUE = fromBits(4294967295 | 0, 2147483647 | 0, false); Long.MAX_VALUE = MAX_VALUE; var MAX_UNSIGNED_VALUE = fromBits(4294967295 | 0, 4294967295 | 0, true); Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; var MIN_VALUE = fromBits(0, 2147483648 | 0, false); Long.MIN_VALUE = MIN_VALUE; var LongPrototype = Long.prototype; LongPrototype.toInt = function toInt() { return this.unsigned ? this.low >>> 0 : this.low; }; LongPrototype.toNumber = function toNumber() { if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); return this.high * TWO_PWR_32_DBL + (this.low >>> 0); }; LongPrototype.toString = function toString(radix) { radix = radix || 10; if (radix < 2 || 36 < radix) throw RangeError("radix"); if (this.isZero()) return "0"; if (this.isNegative()) { if (this.eq(MIN_VALUE)) { var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this); return div.toString(radix) + rem1.toInt().toString(radix); } else return "-" + this.neg().toString(radix); } var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this; var result = ""; while (true) { var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix); rem = remDiv; if (rem.isZero()) return digits + result; else { while (digits.length < 6) digits = "0" + digits; result = "" + digits + result; } } }; LongPrototype.getHighBits = function getHighBits() { return this.high; }; LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { return this.high >>> 0; }; LongPrototype.getLowBits = function getLowBits() { return this.low; }; LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { return this.low >>> 0; }; LongPrototype.getNumBitsAbs = function getNumBitsAbs() { if (this.isNegative()) return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); var val = this.high != 0 ? this.high : this.low; for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break; return this.high != 0 ? bit + 33 : bit + 1; }; LongPrototype.isSafeInteger = function isSafeInteger() { var top11Bits = this.high >> 21; if (!top11Bits) return true; if (this.unsigned) return false; return top11Bits === -1 && !(this.low === 0 && this.high === -2097152); }; LongPrototype.isZero = function isZero() { return this.high === 0 && this.low === 0; }; LongPrototype.eqz = LongPrototype.isZero; LongPrototype.isNegative = function isNegative() { return !this.unsigned && this.high < 0; }; LongPrototype.isPositive = function isPositive() { return this.unsigned || this.high >= 0; }; LongPrototype.isOdd = function isOdd() { return (this.low & 1) === 1; }; LongPrototype.isEven = function isEven() { return (this.low & 1) === 0; }; LongPrototype.equals = function equals(other) { if (!isLong(other)) other = fromValue(other); if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false; return this.high === other.high && this.low === other.low; }; LongPrototype.eq = LongPrototype.equals; LongPrototype.notEquals = function notEquals(other) { return !this.eq( /* validates */ other ); }; LongPrototype.neq = LongPrototype.notEquals; LongPrototype.ne = LongPrototype.notEquals; LongPrototype.lessThan = function lessThan(other) { return this.comp( /* validates */ other ) < 0; }; LongPrototype.lt = LongPrototype.lessThan; LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { return this.comp( /* validates */ other ) <= 0; }; LongPrototype.lte = LongPrototype.lessThanOrEqual; LongPrototype.le = LongPrototype.lessThanOrEqual; LongPrototype.greaterThan = function greaterThan(other) { return this.comp( /* validates */ other ) > 0; }; LongPrototype.gt = LongPrototype.greaterThan; LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { return this.comp( /* validates */ other ) >= 0; }; LongPrototype.gte = LongPrototype.greaterThanOrEqual; LongPrototype.ge = LongPrototype.greaterThanOrEqual; LongPrototype.compare = function compare(other) { if (!isLong(other)) other = fromValue(other); if (this.eq(other)) return 0; var thisNeg = this.isNegative(), otherNeg = other.isNegative(); if (thisNeg && !otherNeg) return -1; if (!thisNeg && otherNeg) return 1; if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1; }; LongPrototype.comp = LongPrototype.compare; LongPrototype.negate = function negate() { if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE; return this.not().add(ONE); }; LongPrototype.neg = LongPrototype.negate; LongPrototype.add = function add(addend) { if (!isLong(addend)) addend = fromValue(addend); var a48 = this.high >>> 16; var a32 = this.high & 65535; var a16 = this.low >>> 16; var a00 = this.low & 65535; var b48 = addend.high >>> 16; var b32 = addend.high & 65535; var b16 = addend.low >>> 16; var b00 = addend.low & 65535; var c48 = 0, c32 = 0, c16 = 0, c00 = 0; c00 += a00 + b00; c16 += c00 >>> 16; c00 &= 65535; c16 += a16 + b16; c32 += c16 >>> 16; c16 &= 65535; c32 += a32 + b32; c48 += c32 >>> 16; c32 &= 65535; c48 += a48 + b48; c48 &= 65535; return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); }; LongPrototype.subtract = function subtract(subtrahend) { if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend); return this.add(subtrahend.neg()); }; LongPrototype.sub = LongPrototype.subtract; LongPrototype.multiply = function multiply(multiplier) { if (this.isZero()) return this; if (!isLong(multiplier)) multiplier = fromValue(multiplier); if (wasm) { var low = wasm["mul"]( this.low, this.high, multiplier.low, multiplier.high ); return fromBits(low, wasm["get_high"](), this.unsigned); } if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO; if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO; if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO; if (this.isNegative()) { if (multiplier.isNegative()) return this.neg().mul(multiplier.neg()); else return this.neg().mul(multiplier).neg(); } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) return fromNumber( this.toNumber() * multiplier.toNumber(), this.unsigned ); var a48 = this.high >>> 16; var a32 = this.high & 65535; var a16 = this.low >>> 16; var a00 = this.low & 65535; var b48 = multiplier.high >>> 16; var b32 = multiplier.high & 65535; var b16 = multiplier.low >>> 16; var b00 = multiplier.low & 65535; var c48 = 0, c32 = 0, c16 = 0, c00 = 0; c00 += a00 * b00; c16 += c00 >>> 16; c00 &= 65535; c16 += a16 * b00; c32 += c16 >>> 16; c16 &= 65535; c16 += a00 * b16; c32 += c16 >>> 16; c16 &= 65535; c32 += a32 * b00; c48 += c32 >>> 16; c32 &= 65535; c32 += a16 * b16; c48 += c32 >>> 16; c32 &= 65535; c32 += a00 * b32; c48 += c32 >>> 16; c32 &= 65535; c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; c48 &= 65535; return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); }; LongPrototype.mul = LongPrototype.multiply; LongPrototype.divide = function divide(divisor) { if (!isLong(divisor)) divisor = fromValue(divisor); if (divisor.isZero()) throw Error("division by zero"); if (wasm) { if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) { return this; } var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])( this.low, this.high, divisor.low, divisor.high ); return fromBits(low, wasm["get_high"](), this.unsigned); } if (this.isZero()) return this.unsigned ? UZERO : ZERO; var approx, rem, res; if (!this.unsigned) { if (this.eq(MIN_VALUE)) { if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) return MIN_VALUE; else if (divisor.eq(MIN_VALUE)) return ONE; else { var halfThis = this.shr(1); approx = halfThis.div(divisor).shl(1); if (approx.eq(ZERO)) { return divisor.isNegative() ? ONE : NEG_ONE; } else { rem = this.sub(divisor.mul(approx)); res = approx.add(rem.div(divisor)); return res; } } } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO; if (this.isNegative()) { if (divisor.isNegative()) return this.neg().div(divisor.neg()); return this.neg().div(divisor).neg(); } else if (divisor.isNegative()) return this.div(divisor.neg()).neg(); res = ZERO; } else { if (!divisor.unsigned) divisor = divisor.toUnsigned(); if (divisor.gt(this)) return UZERO; if (divisor.gt(this.shru(1))) return UONE; res = UZERO; } rem = this; while (rem.gte(divisor)) { approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48), approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor); while (approxRem.isNegative() || approxRem.gt(rem)) { approx -= delta; approxRes = fromNumber(approx, this.unsigned); approxRem = approxRes.mul(divisor); } if (approxRes.isZero()) approxRes = ONE; res = res.add(approxRes); rem = rem.sub(approxRem); } return res; }; LongPrototype.div = LongPrototype.divide; LongPrototype.modulo = function modulo(divisor) { if (!isLong(divisor)) divisor = fromValue(divisor); if (wasm) { var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])( this.low, this.high, divisor.low, divisor.high ); return fromBits(low, wasm["get_high"](), this.unsigned); } return this.sub(this.div(divisor).mul(divisor)); }; LongPrototype.mod = LongPrototype.modulo; LongPrototype.rem = LongPrototype.modulo; LongPrototype.not = function not() { return fromBits(~this.low, ~this.high, this.unsigned); }; LongPrototype.countLeadingZeros = function countLeadingZeros() { return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32; }; LongPrototype.clz = LongPrototype.countLeadingZeros; LongPrototype.countTrailingZeros = function countTrailingZeros() { return this.low ? ctz32(this.low) : ctz32(this.high) + 32; }; LongPrototype.ctz = LongPrototype.countTrailingZeros; LongPrototype.and = function and(other) { if (!isLong(other)) other = fromValue(other); return fromBits( this.low & other.low, this.high & other.high, this.unsigned ); }; LongPrototype.or = function or(other) { if (!isLong(other)) other = fromValue(other); return fromBits( this.low | other.low, this.high | other.high, this.unsigned ); }; LongPrototype.xor = function xor(other) { if (!isLong(other)) other = fromValue(other); return fromBits( this.low ^ other.low, this.high ^ other.high, this.unsigned ); }; LongPrototype.shiftLeft = function shiftLeft(numBits) { if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; else if (numBits < 32) return fromBits( this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned ); else return fromBits(0, this.low << numBits - 32, this.unsigned); }; LongPrototype.shl = LongPrototype.shiftLeft; LongPrototype.shiftRight = function shiftRight(numBits) { if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; else if (numBits < 32) return fromBits( this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned ); else return fromBits( this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned ); }; LongPrototype.shr = LongPrototype.shiftRight; LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; if (numBits < 32) return fromBits( this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned ); if (numBits === 32) return fromBits(this.high, 0, this.unsigned); return fromBits(this.high >>> numBits - 32, 0, this.unsigned); }; LongPrototype.shru = LongPrototype.shiftRightUnsigned; LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; LongPrototype.rotateLeft = function rotateLeft(numBits) { var b; if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); if (numBits < 32) { b = 32 - numBits; return fromBits( this.low << numBits | this.high >>> b, this.high << numBits | this.low >>> b, this.unsigned ); } numBits -= 32; b = 32 - numBits; return fromBits( this.high << numBits | this.low >>> b, this.low << numBits | this.high >>> b, this.unsigned ); }; LongPrototype.rotl = LongPrototype.rotateLeft; LongPrototype.rotateRight = function rotateRight(numBits) { var b; if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); if (numBits < 32) { b = 32 - numBits; return fromBits( this.high << b | this.low >>> numBits, this.low << b | this.high >>> numBits, this.unsigned ); } numBits -= 32; b = 32 - numBits; return fromBits( this.low << b | this.high >>> numBits, this.high << b | this.low >>> numBits, this.unsigned ); }; LongPrototype.rotr = LongPrototype.rotateRight; LongPrototype.toSigned = function toSigned() { if (!this.unsigned) return this; return fromBits(this.low, this.high, false); }; LongPrototype.toUnsigned = function toUnsigned() { if (this.unsigned) return this; return fromBits(this.low, this.high, true); }; LongPrototype.toBytes = function toBytes(le) { return le ? this.toBytesLE() : this.toBytesBE(); }; LongPrototype.toBytesLE = function toBytesLE() { var hi = this.high, lo = this.low; return [ lo & 255, lo >>> 8 & 255, lo >>> 16 & 255, lo >>> 24, hi & 255, hi >>> 8 & 255, hi >>> 16 & 255, hi >>> 24 ]; }; LongPrototype.toBytesBE = function toBytesBE() { var hi = this.high, lo = this.low; return [ hi >>> 24, hi >>> 16 & 255, hi >>> 8 & 255, hi & 255, lo >>> 24, lo >>> 16 & 255, lo >>> 8 & 255, lo & 255 ]; }; Long.fromBytes = function fromBytes(bytes, unsigned, le) { return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); }; Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { return new Long( bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, unsigned ); }; Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { return new Long( bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], unsigned ); }; if (typeof BigInt === "function") { Long.fromBigInt = function fromBigInt(value, unsigned) { var lowBits = Number(BigInt.asIntN(32, value)); var highBits = Number(BigInt.asIntN(32, value >> BigInt(32))); return fromBits(lowBits, highBits, unsigned); }; Long.fromValue = function fromValueWithBigInt(value, unsigned) { if (typeof value === "bigint") return Long.fromBigInt(value, unsigned); return fromValue(value, unsigned); }; LongPrototype.toBigInt = function toBigInt() { var lowBigInt = BigInt(this.low >>> 0); var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high); return highBigInt << BigInt(32) | lowBigInt; }; } var _default = _exports.default = Long; } ); } }); // node_modules/protobufjs/src/util/minimal.js var require_minimal = __commonJS({ "node_modules/protobufjs/src/util/minimal.js"(exports) { "use strict"; init_inject_buffer(); var util = exports; util.asPromise = require_aspromise(); util.base64 = require_base64(); util.EventEmitter = require_eventemitter(); util.float = require_float(); util.utf8 = require_utf8(); util.pool = require_pool(); util.LongBits = require_longbits(); function isUnsafeProperty(key) { return key === "__proto__" || key === "prototype" || key === "constructor"; } util.isUnsafeProperty = isUnsafeProperty; util.isNode = Boolean(typeof globalThis !== "undefined" && globalThis && globalThis.process && globalThis.process.versions && globalThis.process.versions.node); util.global = util.isNode && globalThis || typeof window !== "undefined" && window || typeof self !== "undefined" && self || exports; util.emptyArray = Object.freeze ? Object.freeze([]) : ( /* istanbul ignore next */ [] ); util.emptyObject = Object.freeze ? Object.freeze({}) : ( /* istanbul ignore next */ {} ); util.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) { return typeof value === "number" && isFinite(value) && Math.floor(value) === value; }; util.isString = function isString(value) { return typeof value === "string" || value instanceof String; }; util.isObject = function isObject(value) { return value && typeof value === "object"; }; util.isset = /** * Checks if a property on a message is considered to be present. * @param {Object} obj Plain object or message instance * @param {string} prop Property name * @returns {boolean} `true` if considered to be present, otherwise `false` */ util.isSet = function isSet(obj, prop) { var value = obj[prop]; if (value != null && Object.hasOwnProperty.call(obj, prop)) return typeof value !== "object" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0; return false; }; util.Buffer = (function() { try { var Buffer2 = util.global.Buffer; return Buffer2.prototype.utf8Write ? Buffer2 : ( /* istanbul ignore next */ null ); } catch (e) { return null; } })(); util._Buffer_from = null; util._Buffer_allocUnsafe = null; util.newBuffer = function newBuffer(sizeOrArray) { return typeof sizeOrArray === "number" ? util.Buffer ? util._Buffer_allocUnsafe(sizeOrArray) : new util.Array(sizeOrArray) : util.Buffer ? util._Buffer_from(sizeOrArray) : typeof Uint8Array === "undefined" ? sizeOrArray : new Uint8Array(sizeOrArray); }; util.Array = typeof Uint8Array !== "undefined" ? Uint8Array : Array; util.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long || /* istanbul ignore next */ util.global.Long || (function() { try { var Long = require_umd(); return Long && Long.isLong ? Long : null; } catch (e) { return null; } })(); util.key2Re = /^true|false|0|1$/; util.key32Re = /^-?(?:0|[1-9][0-9]*)$/; util.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; util.longToHash = function longToHash(value) { return value ? util.LongBits.from(value).toHash() : util.LongBits.zeroHash; }; util.longFromHash = function longFromHash(hash, unsigned) { var bits = util.LongBits.fromHash(hash); if (util.Long) return util.Long.fromBits(bits.lo, bits.hi, unsigned); return bits.toNumber(Boolean(unsigned)); }; function merge(dst) { var ifNotSet = typeof arguments[arguments.length - 1] === "boolean", limit = ifNotSet ? arguments.length - 1 : arguments.length; ifNotSet = ifNotSet && arguments[arguments.length - 1]; for (var a = 1; a < limit; ++a) { var src = arguments[a]; if (!src) continue; for (var keys = Object.keys(src), i2 = 0; i2 < keys.length; ++i2) if (!isUnsafeProperty(keys[i2]) && (dst[keys[i2]] === void 0 || !ifNotSet)) dst[keys[i2]] = src[keys[i2]]; } return dst; } util.merge = merge; util.nestingLimit = 32; util.recursionLimit = 100; util.makeProp = function makeProp(obj, key) { Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true }); }; util.lcFirst = function lcFirst(str) { return str.charAt(0).toLowerCase() + str.substring(1); }; function newError(name) { function CustomError(message, properties) { if (!(this instanceof CustomError)) return new CustomError(message, properties); Object.defineProperty(this, "message", { get: function() { return message; } }); if (Error.captureStackTrace) Error.captureStackTrace(this, CustomError); else Object.defineProperty(this, "stack", { value: new Error().stack || "" }); if (properties) merge(this, properties); } CustomError.prototype = Object.create(Error.prototype, { constructor: { value: CustomError, writable: true, enumerable: false, configurable: true }, name: { get: function get() { return name; }, set: void 0, enumerable: false, // configurable: false would accurately preserve the behavior of // the original, but I'm guessing that was not intentional. // For an actual error subclass, this property would // be configurable. configurable: true }, toString: { value: function value() { return this.name + ": " + this.message; }, writable: true, enumerable: false, configurable: true } }); return CustomError; } util.newError = newError; util.ProtocolError = newError("ProtocolError"); util.oneOfGetter = function getOneOf(fieldNames) { var fieldMap = {}; for (var i2 = 0; i2 < fieldNames.length; ++i2) fieldMap[fieldNames[i2]] = 1; return function() { for (var keys = Object.keys(this), i3 = keys.length - 1; i3 > -1; --i3) if (fieldMap[keys[i3]] === 1 && this[keys[i3]] !== void 0 && this[keys[i3]] !== null) return keys[i3]; }; }; util.oneOfSetter = function setOneOf(fieldNames) { return function(name) { for (var i2 = 0; i2 < fieldNames.length; ++i2) if (fieldNames[i2] !== name) delete this[fieldNames[i2]]; }; }; util.toJSONOptions = { longs: String, enums: String, bytes: String, json: true }; util._configure = function() { var Buffer2 = util.Buffer; if (!Buffer2) { util._Buffer_from = util._Buffer_allocUnsafe = null; return; } util._Buffer_from = Buffer2.from !== Uint8Array.from && Buffer2.from || /* istanbul ignore next */ function Buffer_from(value, encoding) { return new Buffer2(value, encoding); }; util._Buffer_allocUnsafe = Buffer2.allocUnsafe || /* istanbul ignore next */ function Buffer_allocUnsafe(size) { return new Buffer2(size); }; }; } }); // node_modules/protobufjs/src/writer.js var require_writer = __commonJS({ "node_modules/protobufjs/src/writer.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = Writer; var util = require_minimal(); var BufferWriter; var LongBits = util.LongBits; var base64 = util.base64; var utf8 = util.utf8; function Op(fn, len, val) { this.fn = fn; this.len = len; this.next = void 0; this.val = val; } function noop() { } function State(writer) { this.head = writer.head; this.tail = writer.tail; this.len = writer.len; this.next = writer.states; } function Writer() { this.len = 0; this.head = new Op(noop, 0, 0); this.tail = this.head; this.states = null; } var create = function create2() { return util.Buffer ? function create_buffer_setup() { return (Writer.create = function create_buffer() { return new BufferWriter(); })(); } : function create_array() { return new Writer(); }; }; Writer.create = create(); Writer.alloc = function alloc(size) { return new util.Array(size); }; if (util.Array !== Array) Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray); Writer.prototype._push = function push(fn, len, val) { this.tail = this.tail.next = new Op(fn, len, val); this.len += len; return this; }; function writeByte(val, buf, pos) { buf[pos] = val & 255; } function writeVarint32(val, buf, pos) { while (val > 127) { buf[pos++] = val & 127 | 128; val >>>= 7; } buf[pos] = val; } function VarintOp(len, val) { this.len = len; this.next = void 0; this.val = val; } VarintOp.prototype = Object.create(Op.prototype); VarintOp.prototype.fn = writeVarint32; Writer.prototype.uint32 = function write_uint32(value) { this.len += (this.tail = this.tail.next = new VarintOp( (value = value >>> 0) < 128 ? 1 : value < 16384 ? 2 : value < 2097152 ? 3 : value < 268435456 ? 4 : 5, value )).len; return this; }; Writer.prototype.int32 = function write_int32(value) { return (value |= 0) < 0 ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) : this.uint32(value); }; Writer.prototype.sint32 = function write_sint32(value) { return this.uint32((value << 1 ^ value >> 31) >>> 0); }; function writeVarint64(val, buf, pos) { var lo = val.lo, hi = val.hi; while (hi) { buf[pos++] = lo & 127 | 128; lo = (lo >>> 7 | hi << 25) >>> 0; hi >>>= 7; } while (lo > 127) { buf[pos++] = lo & 127 | 128; lo = lo >>> 7; } buf[pos++] = lo; } Writer.prototype.uint64 = function write_uint64(value) { var bits = LongBits.from(value); return this._push(writeVarint64, bits.length(), bits); }; Writer.prototype.int64 = Writer.prototype.uint64; Writer.prototype.sint64 = function write_sint64(value) { var bits = LongBits.from(value).zzEncode(); return this._push(writeVarint64, bits.length(), bits); }; Writer.prototype.bool = function write_bool(value) { return this._push(writeByte, 1, value ? 1 : 0); }; function writeFixed32(val, buf, pos) { buf[pos] = val & 255; buf[pos + 1] = val >>> 8 & 255; buf[pos + 2] = val >>> 16 & 255; buf[pos + 3] = val >>> 24; } Writer.prototype.fixed32 = function write_fixed32(value) { return this._push(writeFixed32, 4, value >>> 0); }; Writer.prototype.sfixed32 = Writer.prototype.fixed32; Writer.prototype.fixed64 = function write_fixed64(value) { var bits = LongBits.from(value); return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi); }; Writer.prototype.sfixed64 = Writer.prototype.fixed64; Writer.prototype.float = function write_float(value) { return this._push(util.float.writeFloatLE, 4, value); }; Writer.prototype.double = function write_double(value) { return this._push(util.float.writeDoubleLE, 8, value); }; var writeBytes = util.Array.prototype.set ? function writeBytes_set(val, buf, pos) { buf.set(val, pos); } : function writeBytes_for(val, buf, pos) { for (var i2 = 0; i2 < val.length; ++i2) buf[pos + i2] = val[i2]; }; Writer.prototype.bytes = function write_bytes(value) { var len = value.length >>> 0; if (!len) return this._push(writeByte, 1, 0); if (util.isString(value)) { var buf = Writer.alloc(len = base64.length(value)); base64.decode(value, buf, 0); value = buf; } return this.uint32(len)._push(writeBytes, len, value); }; Writer.prototype.string = function write_string(value) { var len = utf8.length(value); return len ? this.uint32(len)._push(utf8.write, len, value) : this._push(writeByte, 1, 0); }; Writer.prototype.fork = function fork() { this.states = new State(this); this.head = this.tail = new Op(noop, 0, 0); this.len = 0; return this; }; Writer.prototype.reset = function reset() { if (this.states) { this.head = this.states.head; this.tail = this.states.tail; this.len = this.states.len; this.states = this.states.next; } else { this.head = this.tail = new Op(noop, 0, 0); this.len = 0; } return this; }; Writer.prototype.ldelim = function ldelim() { var head = this.head, tail = this.tail, len = this.len; this.reset().uint32(len); if (len) { this.tail.next = head.next; this.tail = tail; this.len += len; } return this; }; Writer.prototype.finish = function finish() { var head = this.head.next, buf = this.constructor.alloc(this.len), pos = 0; while (head) { head.fn(head.val, buf, pos); pos += head.len; head = head.next; } return buf; }; Writer._configure = function(BufferWriter_) { BufferWriter = BufferWriter_; Writer.create = create(); BufferWriter._configure(); }; } }); // node_modules/protobufjs/src/writer_buffer.js var require_writer_buffer = __commonJS({ "node_modules/protobufjs/src/writer_buffer.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = BufferWriter; var Writer = require_writer(); (BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter; var util = require_minimal(); function BufferWriter() { Writer.call(this); } BufferWriter._configure = function() { BufferWriter.alloc = util._Buffer_allocUnsafe; BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set" ? function writeBytesBuffer_set(val, buf, pos) { buf.set(val, pos); } : function writeBytesBuffer_copy(val, buf, pos) { if (val.copy) val.copy(buf, pos, 0, val.length); else for (var i2 = 0; i2 < val.length; ) buf[pos++] = val[i2++]; }; }; BufferWriter.prototype.bytes = function write_bytes_buffer(value) { if (util.isString(value)) value = util._Buffer_from(value, "base64"); var len = value.length >>> 0; this.uint32(len); if (len) this._push(BufferWriter.writeBytesBuffer, len, value); return this; }; function writeStringBuffer(val, buf, pos) { if (val.length < 40) util.utf8.write(val, buf, pos); else if (buf.utf8Write) buf.utf8Write(val, pos); else buf.write(val, pos); } BufferWriter.prototype.string = function write_string_buffer(value) { var len = util.Buffer.byteLength(value); this.uint32(len); if (len) this._push(writeStringBuffer, len, value); return this; }; BufferWriter._configure(); } }); // node_modules/protobufjs/src/reader.js var require_reader = __commonJS({ "node_modules/protobufjs/src/reader.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = Reader; var util = require_minimal(); var BufferReader; var LongBits = util.LongBits; var utf8 = util.utf8; function indexOutOfRange(reader, writeLength) { return RangeError("index out of range: " + reader.pos + " + " + (writeLength || 1) + " > " + reader.len); } function Reader(buffer) { this.buf = buffer; this.pos = 0; this.len = buffer.length; } var create_array = typeof Uint8Array !== "undefined" ? function create_typed_array(buffer) { if (buffer instanceof Uint8Array || Array.isArray(buffer)) return new Reader(buffer); throw Error("illegal buffer"); } : function create_array2(buffer) { if (Array.isArray(buffer)) return new Reader(buffer); throw Error("illegal buffer"); }; var create = function create2() { return util.Buffer ? function create_buffer_setup(buffer) { return (Reader.create = function create_buffer(buffer2) { return util.Buffer.isBuffer(buffer2) ? new BufferReader(buffer2) : create_array(buffer2); })(buffer); } : create_array; }; Reader.create = create(); Reader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice; Reader.prototype.uint32 = /* @__PURE__ */ (function read_uint32_setup() { var value = 4294967295; return function read_uint32() { value = (this.buf[this.pos] & 127) >>> 0; if (this.buf[this.pos++] < 128) return value; value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value; value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value; value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value; value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value; if ((this.pos += 5) > this.len) { this.pos = this.len; throw indexOutOfRange(this, 10); } return value; }; })(); Reader.prototype.int32 = function read_int32() { return this.uint32() | 0; }; Reader.prototype.sint32 = function read_sint32() { var value = this.uint32(); return value >>> 1 ^ -(value & 1) | 0; }; function readLongVarint() { var bits = new LongBits(0, 0); var i2 = 0; if (this.len - this.pos > 4) { for (; i2 < 4; ++i2) { bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i2 * 7) >>> 0; if (this.buf[this.pos++] < 128) return bits; } bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0; bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0; if (this.buf[this.pos++] < 128) return bits; i2 = 0; } else { for (; i2 < 3; ++i2) { if (this.pos >= this.len) throw indexOutOfRange(this); bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i2 * 7) >>> 0; if (this.buf[this.pos++] < 128) return bits; } bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i2 * 7) >>> 0; return bits; } if (this.len - this.pos > 4) { for (; i2 < 5; ++i2) { bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i2 * 7 + 3) >>> 0; if (this.buf[this.pos++] < 128) return bits; } } else { for (; i2 < 5; ++i2) { if (this.pos >= this.len) throw indexOutOfRange(this); bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i2 * 7 + 3) >>> 0; if (this.buf[this.pos++] < 128) return bits; } } throw Error("invalid varint encoding"); } Reader.prototype.bool = function read_bool() { return this.uint32() !== 0; }; function readFixed32_end(buf, end) { return (buf[end - 4] | buf[end - 3] << 8 | buf[end - 2] << 16 | buf[end - 1] << 24) >>> 0; } Reader.prototype.fixed32 = function read_fixed32() { if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); return readFixed32_end(this.buf, this.pos += 4); }; Reader.prototype.sfixed32 = function read_sfixed32() { if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); return readFixed32_end(this.buf, this.pos += 4) | 0; }; function readFixed64() { if (this.pos + 8 > this.len) throw indexOutOfRange(this, 8); return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4)); } Reader.prototype.float = function read_float() { if (this.pos + 4 > this.len) throw indexOutOfRange(this, 4); var value = util.float.readFloatLE(this.buf, this.pos); this.pos += 4; return value; }; Reader.prototype.double = function read_double() { if (this.pos + 8 > this.len) throw indexOutOfRange(this, 4); var value = util.float.readDoubleLE(this.buf, this.pos); this.pos += 8; return value; }; Reader.prototype.bytes = function read_bytes() { var length = this.uint32(), start = this.pos, end = this.pos + length; if (end > this.len) throw indexOutOfRange(this, length); this.pos += length; if (Array.isArray(this.buf)) return this.buf.slice(start, end); if (start === end) { var nativeBuffer = util.Buffer; return nativeBuffer ? nativeBuffer.alloc(0) : new this.buf.constructor(0); } return this._slice.call(this.buf, start, end); }; Reader.prototype.string = function read_string() { var bytes = this.bytes(); return utf8.read(bytes, 0, bytes.length); }; Reader.prototype.skip = function skip(length) { if (typeof length === "number") { if (this.pos + length > this.len) throw indexOutOfRange(this, length); this.pos += length; } else { do { if (this.pos >= this.len) throw indexOutOfRange(this); } while (this.buf[this.pos++] & 128); } return this; }; Reader.recursionLimit = util.recursionLimit; Reader.prototype.skipType = function(wireType, depth) { if (depth === void 0) depth = 0; if (depth > Reader.recursionLimit) throw Error("maximum nesting depth exceeded"); switch (wireType) { case 0: this.skip(); break; case 1: this.skip(8); break; case 2: this.skip(this.uint32()); break; case 3: while ((wireType = this.uint32() & 7) !== 4) { this.skipType(wireType, depth + 1); } break; case 5: this.skip(4); break; /* istanbul ignore next */ default: throw Error("invalid wire type " + wireType + " at offset " + this.pos); } return this; }; Reader._configure = function(BufferReader_) { BufferReader = BufferReader_; Reader.create = create(); BufferReader._configure(); var fn = util.Long ? "toLong" : ( /* istanbul ignore next */ "toNumber" ); util.merge(Reader.prototype, { int64: function read_int64() { return readLongVarint.call(this)[fn](false); }, uint64: function read_uint64() { return readLongVarint.call(this)[fn](true); }, sint64: function read_sint64() { return readLongVarint.call(this).zzDecode()[fn](false); }, fixed64: function read_fixed64() { return readFixed64.call(this)[fn](true); }, sfixed64: function read_sfixed64() { return readFixed64.call(this)[fn](false); } }); }; } }); // node_modules/protobufjs/src/reader_buffer.js var require_reader_buffer = __commonJS({ "node_modules/protobufjs/src/reader_buffer.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = BufferReader; var Reader = require_reader(); (BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader; var util = require_minimal(); function BufferReader(buffer) { Reader.call(this, buffer); } BufferReader._configure = function() { if (util.Buffer) BufferReader.prototype._slice = util.Buffer.prototype.slice; }; BufferReader.prototype.string = function read_string_buffer() { var len = this.uint32(); return this.buf.utf8Slice ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)) : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + len, this.len)); }; BufferReader._configure(); } }); // node_modules/protobufjs/src/rpc/service.js var require_service = __commonJS({ "node_modules/protobufjs/src/rpc/service.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = Service; var util = require_minimal(); (Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service; function Service(rpcImpl, requestDelimited, responseDelimited) { if (typeof rpcImpl !== "function") throw TypeError("rpcImpl must be a function"); util.EventEmitter.call(this); this.rpcImpl = rpcImpl; this.requestDelimited = Boolean(requestDelimited); this.responseDelimited = Boolean(responseDelimited); } Service.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) { if (!request) throw TypeError("request must be specified"); var self2 = this; if (!callback) return util.asPromise(rpcCall, self2, method, requestCtor, responseCtor, request); if (!self2.rpcImpl) { setTimeout(function() { callback(Error("already ended")); }, 0); return void 0; } try { return self2.rpcImpl( method, requestCtor[self2.requestDelimited ? "encodeDelimited" : "encode"](request).finish(), function rpcCallback(err, response) { if (err) { self2.emit("error", err, method); return callback(err); } if (response === null) { self2.end( /* endedByRPC */ true ); return void 0; } if (!(response instanceof responseCtor)) { try { response = responseCtor[self2.responseDelimited ? "decodeDelimited" : "decode"](response); } catch (err2) { self2.emit("error", err2, method); return callback(err2); } } self2.emit("data", response, method); return callback(null, response); } ); } catch (err) { self2.emit("error", err, method); setTimeout(function() { callback(err); }, 0); return void 0; } }; Service.prototype.end = function end(endedByRPC) { if (this.rpcImpl) { if (!endedByRPC) this.rpcImpl(null, null, null); this.rpcImpl = null; this.emit("end").off(); } return this; }; } }); // node_modules/protobufjs/src/rpc.js var require_rpc = __commonJS({ "node_modules/protobufjs/src/rpc.js"(exports) { "use strict"; init_inject_buffer(); var rpc = exports; rpc.Service = require_service(); } }); // node_modules/protobufjs/src/roots.js var require_roots = __commonJS({ "node_modules/protobufjs/src/roots.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = /* @__PURE__ */ Object.create(null); } }); // node_modules/protobufjs/src/index-minimal.js var require_index_minimal = __commonJS({ "node_modules/protobufjs/src/index-minimal.js"(exports) { "use strict"; init_inject_buffer(); var protobuf = exports; protobuf.build = "minimal"; protobuf.Writer = require_writer(); protobuf.BufferWriter = require_writer_buffer(); protobuf.Reader = require_reader(); protobuf.BufferReader = require_reader_buffer(); protobuf.util = require_minimal(); protobuf.rpc = require_rpc(); protobuf.roots = require_roots(); protobuf.configure = configure; function configure() { protobuf.util._configure(); protobuf.Writer._configure(protobuf.BufferWriter); protobuf.Reader._configure(protobuf.BufferReader); } configure(); } }); // node_modules/protobufjs/minimal.js var require_minimal2 = __commonJS({ "node_modules/protobufjs/minimal.js"(exports, module) { "use strict"; init_inject_buffer(); module.exports = require_index_minimal(); } }); // node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/generated/protos/PushMessages.js var require_PushMessages = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/generated/protos/PushMessages.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.PushMessageContent_GroupContext = exports.PushMessageContent_AttachmentPointer = exports.PushMessageContent = exports.IncomingPushMessageSignal = exports.PushMessageContent_GroupContext_Type = exports.PushMessageContent_Flags = exports.IncomingPushMessageSignal_Type = void 0; var minimal_1 = require_minimal2(); var baseIncomingPushMessageSignal = { type: 0, source: "", sourceDevice: 0, relay: "", timestamp: 0 }; var basePushMessageContent = { body: "", flags: 0 }; var basePushMessageContent_AttachmentPointer = { id: 0, contentType: "" }; var basePushMessageContent_GroupContext = { type: 0, name: "", members: "" }; function longToNumber(long) { if (long.gt(Number.MAX_SAFE_INTEGER)) { throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); } return long.toNumber(); } exports.IncomingPushMessageSignal_Type = { UNKNOWN: 0, CIPHERTEXT: 1, KEY_EXCHANGE: 2, PREKEY_BUNDLE: 3, PLAINTEXT: 4, RECEIPT: 5, PREKEY_BUNDLE_DEVICE_CONTROL: 6, DEVICE_CONTROL: 7, UNRECOGNIZED: -1, fromJSON(object) { switch (object) { case 0: case "UNKNOWN": return exports.IncomingPushMessageSignal_Type.UNKNOWN; case 1: case "CIPHERTEXT": return exports.IncomingPushMessageSignal_Type.CIPHERTEXT; case 2: case "KEY_EXCHANGE": return exports.IncomingPushMessageSignal_Type.KEY_EXCHANGE; case 3: case "PREKEY_BUNDLE": return exports.IncomingPushMessageSignal_Type.PREKEY_BUNDLE; case 4: case "PLAINTEXT": return exports.IncomingPushMessageSignal_Type.PLAINTEXT; case 5: case "RECEIPT": return exports.IncomingPushMessageSignal_Type.RECEIPT; case 6: case "PREKEY_BUNDLE_DEVICE_CONTROL": return exports.IncomingPushMessageSignal_Type.PREKEY_BUNDLE_DEVICE_CONTROL; case 7: case "DEVICE_CONTROL": return exports.IncomingPushMessageSignal_Type.DEVICE_CONTROL; case -1: case "UNRECOGNIZED": default: return exports.IncomingPushMessageSignal_Type.UNRECOGNIZED; } }, toJSON(object) { switch (object) { case exports.IncomingPushMessageSignal_Type.UNKNOWN: return "UNKNOWN"; case exports.IncomingPushMessageSignal_Type.CIPHERTEXT: return "CIPHERTEXT"; case exports.IncomingPushMessageSignal_Type.KEY_EXCHANGE: return "KEY_EXCHANGE"; case exports.IncomingPushMessageSignal_Type.PREKEY_BUNDLE: return "PREKEY_BUNDLE"; case exports.IncomingPushMessageSignal_Type.PLAINTEXT: return "PLAINTEXT"; case exports.IncomingPushMessageSignal_Type.RECEIPT: return "RECEIPT"; case exports.IncomingPushMessageSignal_Type.PREKEY_BUNDLE_DEVICE_CONTROL: return "PREKEY_BUNDLE_DEVICE_CONTROL"; case exports.IncomingPushMessageSignal_Type.DEVICE_CONTROL: return "DEVICE_CONTROL"; default: return "UNKNOWN"; } } }; exports.PushMessageContent_Flags = { END_SESSION: 1, UNRECOGNIZED: -1, fromJSON(object) { switch (object) { case 1: case "END_SESSION": return exports.PushMessageContent_Flags.END_SESSION; case -1: case "UNRECOGNIZED": default: return exports.PushMessageContent_Flags.UNRECOGNIZED; } }, toJSON(object) { switch (object) { case exports.PushMessageContent_Flags.END_SESSION: return "END_SESSION"; default: return "UNKNOWN"; } } }; exports.PushMessageContent_GroupContext_Type = { UNKNOWN: 0, UPDATE: 1, DELIVER: 2, QUIT: 3, UNRECOGNIZED: -1, fromJSON(object) { switch (object) { case 0: case "UNKNOWN": return exports.PushMessageContent_GroupContext_Type.UNKNOWN; case 1: case "UPDATE": return exports.PushMessageContent_GroupContext_Type.UPDATE; case 2: case "DELIVER": return exports.PushMessageContent_GroupContext_Type.DELIVER; case 3: case "QUIT": return exports.PushMessageContent_GroupContext_Type.QUIT; case -1: case "UNRECOGNIZED": default: return exports.PushMessageContent_GroupContext_Type.UNRECOGNIZED; } }, toJSON(object) { switch (object) { case exports.PushMessageContent_GroupContext_Type.UNKNOWN: return "UNKNOWN"; case exports.PushMessageContent_GroupContext_Type.UPDATE: return "UPDATE"; case exports.PushMessageContent_GroupContext_Type.DELIVER: return "DELIVER"; case exports.PushMessageContent_GroupContext_Type.QUIT: return "QUIT"; default: return "UNKNOWN"; } } }; exports.IncomingPushMessageSignal = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(8).int32(message.type); writer.uint32(18).string(message.source); writer.uint32(56).uint32(message.sourceDevice); writer.uint32(26).string(message.relay); writer.uint32(40).uint64(message.timestamp); writer.uint32(50).bytes(message.message); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, baseIncomingPushMessageSignal); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.type = reader.int32(); break; case 2: message.source = reader.string(); break; case 7: message.sourceDevice = reader.uint32(); break; case 3: message.relay = reader.string(); break; case 5: message.timestamp = longToNumber(reader.uint64()); break; case 6: message.message = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, baseIncomingPushMessageSignal); if (object.type !== void 0 && object.type !== null) { message.type = exports.IncomingPushMessageSignal_Type.fromJSON(object.type); } else { message.type = 0; } if (object.source !== void 0 && object.source !== null) { message.source = String(object.source); } else { message.source = ""; } if (object.sourceDevice !== void 0 && object.sourceDevice !== null) { message.sourceDevice = Number(object.sourceDevice); } else { message.sourceDevice = 0; } if (object.relay !== void 0 && object.relay !== null) { message.relay = String(object.relay); } else { message.relay = ""; } if (object.timestamp !== void 0 && object.timestamp !== null) { message.timestamp = Number(object.timestamp); } else { message.timestamp = 0; } if (object.message !== void 0 && object.message !== null) { message.message = bytesFromBase64(object.message); } return message; }, fromPartial(object) { const message = Object.assign({}, baseIncomingPushMessageSignal); if (object.type !== void 0 && object.type !== null) { message.type = object.type; } else { message.type = 0; } if (object.source !== void 0 && object.source !== null) { message.source = object.source; } else { message.source = ""; } if (object.sourceDevice !== void 0 && object.sourceDevice !== null) { message.sourceDevice = object.sourceDevice; } else { message.sourceDevice = 0; } if (object.relay !== void 0 && object.relay !== null) { message.relay = object.relay; } else { message.relay = ""; } if (object.timestamp !== void 0 && object.timestamp !== null) { message.timestamp = object.timestamp; } else { message.timestamp = 0; } if (object.message !== void 0 && object.message !== null) { message.message = object.message; } return message; }, toJSON(message) { const obj = {}; obj.type = exports.IncomingPushMessageSignal_Type.toJSON(message.type); obj.source = message.source || ""; obj.sourceDevice = message.sourceDevice || 0; obj.relay = message.relay || ""; obj.timestamp = message.timestamp || 0; obj.message = message.message !== void 0 ? base64FromBytes(message.message) : void 0; return obj; } }; exports.PushMessageContent = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(10).string(message.body); for (const v of message.attachments) { exports.PushMessageContent_AttachmentPointer.encode(v, writer.uint32(18).fork()).ldelim(); } if (message.group !== void 0 && message.group !== void 0) { exports.PushMessageContent_GroupContext.encode(message.group, writer.uint32(26).fork()).ldelim(); } writer.uint32(32).uint32(message.flags); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, basePushMessageContent); message.attachments = []; while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.body = reader.string(); break; case 2: message.attachments.push(exports.PushMessageContent_AttachmentPointer.decode(reader, reader.uint32())); break; case 3: message.group = exports.PushMessageContent_GroupContext.decode(reader, reader.uint32()); break; case 4: message.flags = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, basePushMessageContent); message.attachments = []; if (object.body !== void 0 && object.body !== null) { message.body = String(object.body); } else { message.body = ""; } if (object.attachments !== void 0 && object.attachments !== null) { for (const e of object.attachments) { message.attachments.push(exports.PushMessageContent_AttachmentPointer.fromJSON(e)); } } if (object.group !== void 0 && object.group !== null) { message.group = exports.PushMessageContent_GroupContext.fromJSON(object.group); } else { message.group = void 0; } if (object.flags !== void 0 && object.flags !== null) { message.flags = Number(object.flags); } else { message.flags = 0; } return message; }, fromPartial(object) { const message = Object.assign({}, basePushMessageContent); message.attachments = []; if (object.body !== void 0 && object.body !== null) { message.body = object.body; } else { message.body = ""; } if (object.attachments !== void 0 && object.attachments !== null) { for (const e of object.attachments) { message.attachments.push(exports.PushMessageContent_AttachmentPointer.fromPartial(e)); } } if (object.group !== void 0 && object.group !== null) { message.group = exports.PushMessageContent_GroupContext.fromPartial(object.group); } else { message.group = void 0; } if (object.flags !== void 0 && object.flags !== null) { message.flags = object.flags; } else { message.flags = 0; } return message; }, toJSON(message) { const obj = {}; obj.body = message.body || ""; if (message.attachments) { obj.attachments = message.attachments.map((e) => e ? exports.PushMessageContent_AttachmentPointer.toJSON(e) : void 0); } else { obj.attachments = []; } obj.group = message.group ? exports.PushMessageContent_GroupContext.toJSON(message.group) : void 0; obj.flags = message.flags || 0; return obj; } }; exports.PushMessageContent_AttachmentPointer = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(9).fixed64(message.id); writer.uint32(18).string(message.contentType); writer.uint32(26).bytes(message.key); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, basePushMessageContent_AttachmentPointer); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.id = longToNumber(reader.fixed64()); break; case 2: message.contentType = reader.string(); break; case 3: message.key = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, basePushMessageContent_AttachmentPointer); if (object.id !== void 0 && object.id !== null) { message.id = Number(object.id); } else { message.id = 0; } if (object.contentType !== void 0 && object.contentType !== null) { message.contentType = String(object.contentType); } else { message.contentType = ""; } if (object.key !== void 0 && object.key !== null) { message.key = bytesFromBase64(object.key); } return message; }, fromPartial(object) { const message = Object.assign({}, basePushMessageContent_AttachmentPointer); if (object.id !== void 0 && object.id !== null) { message.id = object.id; } else { message.id = 0; } if (object.contentType !== void 0 && object.contentType !== null) { message.contentType = object.contentType; } else { message.contentType = ""; } if (object.key !== void 0 && object.key !== null) { message.key = object.key; } return message; }, toJSON(message) { const obj = {}; obj.id = message.id || 0; obj.contentType = message.contentType || ""; obj.key = message.key !== void 0 ? base64FromBytes(message.key) : void 0; return obj; } }; exports.PushMessageContent_GroupContext = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(10).bytes(message.id); writer.uint32(16).int32(message.type); writer.uint32(26).string(message.name); for (const v of message.members) { writer.uint32(34).string(v); } if (message.avatar !== void 0 && message.avatar !== void 0) { exports.PushMessageContent_AttachmentPointer.encode(message.avatar, writer.uint32(42).fork()).ldelim(); } return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, basePushMessageContent_GroupContext); message.members = []; while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.id = reader.bytes(); break; case 2: message.type = reader.int32(); break; case 3: message.name = reader.string(); break; case 4: message.members.push(reader.string()); break; case 5: message.avatar = exports.PushMessageContent_AttachmentPointer.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, basePushMessageContent_GroupContext); message.members = []; if (object.id !== void 0 && object.id !== null) { message.id = bytesFromBase64(object.id); } if (object.type !== void 0 && object.type !== null) { message.type = exports.PushMessageContent_GroupContext_Type.fromJSON(object.type); } else { message.type = 0; } if (object.name !== void 0 && object.name !== null) { message.name = String(object.name); } else { message.name = ""; } if (object.members !== void 0 && object.members !== null) { for (const e of object.members) { message.members.push(String(e)); } } if (object.avatar !== void 0 && object.avatar !== null) { message.avatar = exports.PushMessageContent_AttachmentPointer.fromJSON(object.avatar); } else { message.avatar = void 0; } return message; }, fromPartial(object) { const message = Object.assign({}, basePushMessageContent_GroupContext); message.members = []; if (object.id !== void 0 && object.id !== null) { message.id = object.id; } if (object.type !== void 0 && object.type !== null) { message.type = object.type; } else { message.type = 0; } if (object.name !== void 0 && object.name !== null) { message.name = object.name; } else { message.name = ""; } if (object.members !== void 0 && object.members !== null) { for (const e of object.members) { message.members.push(e); } } if (object.avatar !== void 0 && object.avatar !== null) { message.avatar = exports.PushMessageContent_AttachmentPointer.fromPartial(object.avatar); } else { message.avatar = void 0; } return message; }, toJSON(message) { const obj = {}; obj.id = message.id !== void 0 ? base64FromBytes(message.id) : void 0; obj.type = exports.PushMessageContent_GroupContext_Type.toJSON(message.type); obj.name = message.name || ""; if (message.members) { obj.members = message.members.map((e) => e || ""); } else { obj.members = []; } obj.avatar = message.avatar ? exports.PushMessageContent_AttachmentPointer.toJSON(message.avatar) : void 0; return obj; } }; var windowBase64 = globalThis; var atob2 = windowBase64.atob || ((b64) => import_buffer.Buffer.from(b64, "base64").toString("binary")); var btoa = windowBase64.btoa || ((bin) => import_buffer.Buffer.from(bin, "binary").toString("base64")); function bytesFromBase64(b64) { const bin = atob2(b64); const arr = new Uint8Array(bin.length); for (let i2 = 0; i2 < bin.length; ++i2) { arr[i2] = bin.charCodeAt(i2); } return arr; } function base64FromBytes(arr) { const bin = []; for (let i2 = 0; i2 < arr.byteLength; ++i2) { bin.push(String.fromCharCode(arr[i2])); } return btoa(bin.join("")); } } }); // node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/generated/protos/WhisperTextProtocol.js var require_WhisperTextProtocol = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/generated/protos/WhisperTextProtocol.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.KeyExchangeMessage = exports.PreKeyWhisperMessage = exports.WhisperMessage = void 0; var minimal_1 = require_minimal2(); var baseWhisperMessage = { counter: 0, previousCounter: 0 }; var basePreKeyWhisperMessage = { registrationId: 0, preKeyId: 0, signedPreKeyId: 0 }; var baseKeyExchangeMessage = { id: 0 }; exports.WhisperMessage = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(10).bytes(message.ephemeralKey); writer.uint32(16).uint32(message.counter); writer.uint32(24).uint32(message.previousCounter); writer.uint32(34).bytes(message.ciphertext); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, baseWhisperMessage); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.ephemeralKey = reader.bytes(); break; case 2: message.counter = reader.uint32(); break; case 3: message.previousCounter = reader.uint32(); break; case 4: message.ciphertext = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, baseWhisperMessage); if (object.ephemeralKey !== void 0 && object.ephemeralKey !== null) { message.ephemeralKey = bytesFromBase64(object.ephemeralKey); } if (object.counter !== void 0 && object.counter !== null) { message.counter = Number(object.counter); } else { message.counter = 0; } if (object.previousCounter !== void 0 && object.previousCounter !== null) { message.previousCounter = Number(object.previousCounter); } else { message.previousCounter = 0; } if (object.ciphertext !== void 0 && object.ciphertext !== null) { message.ciphertext = bytesFromBase64(object.ciphertext); } return message; }, fromPartial(object) { const message = Object.assign({}, baseWhisperMessage); if (object.ephemeralKey !== void 0 && object.ephemeralKey !== null) { message.ephemeralKey = object.ephemeralKey; } if (object.counter !== void 0 && object.counter !== null) { message.counter = object.counter; } else { message.counter = 0; } if (object.previousCounter !== void 0 && object.previousCounter !== null) { message.previousCounter = object.previousCounter; } else { message.previousCounter = 0; } if (object.ciphertext !== void 0 && object.ciphertext !== null) { message.ciphertext = object.ciphertext; } return message; }, toJSON(message) { const obj = {}; obj.ephemeralKey = message.ephemeralKey !== void 0 ? base64FromBytes(message.ephemeralKey) : void 0; obj.counter = message.counter || 0; obj.previousCounter = message.previousCounter || 0; obj.ciphertext = message.ciphertext !== void 0 ? base64FromBytes(message.ciphertext) : void 0; return obj; } }; exports.PreKeyWhisperMessage = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(40).uint32(message.registrationId); writer.uint32(8).uint32(message.preKeyId); writer.uint32(48).uint32(message.signedPreKeyId); writer.uint32(18).bytes(message.baseKey); writer.uint32(26).bytes(message.identityKey); writer.uint32(34).bytes(message.message); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, basePreKeyWhisperMessage); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 5: message.registrationId = reader.uint32(); break; case 1: message.preKeyId = reader.uint32(); break; case 6: message.signedPreKeyId = reader.uint32(); break; case 2: message.baseKey = reader.bytes(); break; case 3: message.identityKey = reader.bytes(); break; case 4: message.message = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, basePreKeyWhisperMessage); if (object.registrationId !== void 0 && object.registrationId !== null) { message.registrationId = Number(object.registrationId); } else { message.registrationId = 0; } if (object.preKeyId !== void 0 && object.preKeyId !== null) { message.preKeyId = Number(object.preKeyId); } else { message.preKeyId = 0; } if (object.signedPreKeyId !== void 0 && object.signedPreKeyId !== null) { message.signedPreKeyId = Number(object.signedPreKeyId); } else { message.signedPreKeyId = 0; } if (object.baseKey !== void 0 && object.baseKey !== null) { message.baseKey = bytesFromBase64(object.baseKey); } if (object.identityKey !== void 0 && object.identityKey !== null) { message.identityKey = bytesFromBase64(object.identityKey); } if (object.message !== void 0 && object.message !== null) { message.message = bytesFromBase64(object.message); } return message; }, fromPartial(object) { const message = Object.assign({}, basePreKeyWhisperMessage); if (object.registrationId !== void 0 && object.registrationId !== null) { message.registrationId = object.registrationId; } else { message.registrationId = 0; } if (object.preKeyId !== void 0 && object.preKeyId !== null) { message.preKeyId = object.preKeyId; } else { message.preKeyId = 0; } if (object.signedPreKeyId !== void 0 && object.signedPreKeyId !== null) { message.signedPreKeyId = object.signedPreKeyId; } else { message.signedPreKeyId = 0; } if (object.baseKey !== void 0 && object.baseKey !== null) { message.baseKey = object.baseKey; } if (object.identityKey !== void 0 && object.identityKey !== null) { message.identityKey = object.identityKey; } if (object.message !== void 0 && object.message !== null) { message.message = object.message; } return message; }, toJSON(message) { const obj = {}; obj.registrationId = message.registrationId || 0; obj.preKeyId = message.preKeyId || 0; obj.signedPreKeyId = message.signedPreKeyId || 0; obj.baseKey = message.baseKey !== void 0 ? base64FromBytes(message.baseKey) : void 0; obj.identityKey = message.identityKey !== void 0 ? base64FromBytes(message.identityKey) : void 0; obj.message = message.message !== void 0 ? base64FromBytes(message.message) : void 0; return obj; } }; exports.KeyExchangeMessage = { encode(message, writer = minimal_1.Writer.create()) { writer.uint32(8).uint32(message.id); writer.uint32(18).bytes(message.baseKey); writer.uint32(26).bytes(message.ephemeralKey); writer.uint32(34).bytes(message.identityKey); writer.uint32(42).bytes(message.baseKeySignature); return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; let end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, baseKeyExchangeMessage); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.id = reader.uint32(); break; case 2: message.baseKey = reader.bytes(); break; case 3: message.ephemeralKey = reader.bytes(); break; case 4: message.identityKey = reader.bytes(); break; case 5: message.baseKeySignature = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, baseKeyExchangeMessage); if (object.id !== void 0 && object.id !== null) { message.id = Number(object.id); } else { message.id = 0; } if (object.baseKey !== void 0 && object.baseKey !== null) { message.baseKey = bytesFromBase64(object.baseKey); } if (object.ephemeralKey !== void 0 && object.ephemeralKey !== null) { message.ephemeralKey = bytesFromBase64(object.ephemeralKey); } if (object.identityKey !== void 0 && object.identityKey !== null) { message.identityKey = bytesFromBase64(object.identityKey); } if (object.baseKeySignature !== void 0 && object.baseKeySignature !== null) { message.baseKeySignature = bytesFromBase64(object.baseKeySignature); } return message; }, fromPartial(object) { const message = Object.assign({}, baseKeyExchangeMessage); if (object.id !== void 0 && object.id !== null) { message.id = object.id; } else { message.id = 0; } if (object.baseKey !== void 0 && object.baseKey !== null) { message.baseKey = object.baseKey; } if (object.ephemeralKey !== void 0 && object.ephemeralKey !== null) { message.ephemeralKey = object.ephemeralKey; } if (object.identityKey !== void 0 && object.identityKey !== null) { message.identityKey = object.identityKey; } if (object.baseKeySignature !== void 0 && object.baseKeySignature !== null) { message.baseKeySignature = object.baseKeySignature; } return message; }, toJSON(message) { const obj = {}; obj.id = message.id || 0; obj.baseKey = message.baseKey !== void 0 ? base64FromBytes(message.baseKey) : void 0; obj.ephemeralKey = message.ephemeralKey !== void 0 ? base64FromBytes(message.ephemeralKey) : void 0; obj.identityKey = message.identityKey !== void 0 ? base64FromBytes(message.identityKey) : void 0; obj.baseKeySignature = message.baseKeySignature !== void 0 ? base64FromBytes(message.baseKeySignature) : void 0; return obj; } }; var windowBase64 = globalThis; var atob2 = windowBase64.atob || ((b64) => import_buffer.Buffer.from(b64, "base64").toString("binary")); var btoa = windowBase64.btoa || ((bin) => import_buffer.Buffer.from(bin, "binary").toString("base64")); function bytesFromBase64(b64) { const bin = atob2(b64); const arr = new Uint8Array(bin.length); for (let i2 = 0; i2 < bin.length; ++i2) { arr[i2] = bin.charCodeAt(i2); } return arr; } function base64FromBytes(arr) { const bin = []; for (let i2 = 0; i2 < arr.byteLength; ++i2) { bin.push(String.fromCharCode(arr[i2])); } return btoa(bin.join("")); } } }); // node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/push-message-content-compatible.js var require_push_message_content_compatible = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/push-message-content-compatible.js"(exports) { "use strict"; init_inject_buffer(); Object.defineProperty(exports, "__esModule", { value: true }); exports.PushMessageContentCompatible = void 0; var minimal_1 = require_minimal2(); var _1 = require_lib2(); var basePushMessageContent = {}; exports.PushMessageContentCompatible = { encode(message, writer = minimal_1.Writer.create()) { if (!("body" in message) && !("flags" in message)) { throw new Error("Invalid protobuf"); } if (message.body) { writer.uint32(10).string(message.body); } for (const v of message.attachments) { _1.PushMessageContent_AttachmentPointer.encode(v, writer.uint32(18).fork()).ldelim(); } if (message.group !== void 0 && message.group !== void 0) { _1.PushMessageContent_GroupContext.encode(message.group, writer.uint32(26).fork()).ldelim(); } if (message.flags) { writer.uint32(32).uint32(message.flags); } return writer; }, decode(input, length) { const reader = input instanceof Uint8Array ? new minimal_1.Reader(input) : input; const end = length === void 0 ? reader.len : reader.pos + length; const message = Object.assign({}, basePushMessageContent); message.attachments = []; while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.body = reader.string(); break; case 2: message.attachments.push(_1.PushMessageContent_AttachmentPointer.decode(reader, reader.uint32())); break; case 3: message.group = _1.PushMessageContent_GroupContext.decode(reader, reader.uint32()); break; case 4: message.flags = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object) { const message = Object.assign({}, basePushMessageContent); message.attachments = []; if (object.body !== void 0 && object.body !== null) { message.body = String(object.body); } else { message.body = object.flags ? void 0 : ""; } if (object.attachments !== void 0 && object.attachments !== null) { for (const e of object.attachments) { message.attachments.push(_1.PushMessageContent_AttachmentPointer.fromJSON(e)); } } if (object.group !== void 0 && object.group !== null) { message.group = _1.PushMessageContent_GroupContext.fromJSON(object.group); } else { message.group = void 0; } if (object.flags !== void 0 && object.flags !== null) { message.flags = Number(object.flags); } else { message.flags = 0; } return message; }, fromPartial(object) { const message = Object.assign({}, basePushMessageContent); message.attachments = []; if (object.body !== void 0 && object.body !== null) { message.body = object.body; } else { message.body = ""; } if (object.attachments !== void 0 && object.attachments !== null) { for (const e of object.attachments) { message.attachments.push(_1.PushMessageContent_AttachmentPointer.fromPartial(e)); } } if (object.group !== void 0 && object.group !== null) { message.group = _1.PushMessageContent_GroupContext.fromPartial(object.group); } else { message.group = void 0; } if (object.flags !== void 0 && object.flags !== null) { message.flags = object.flags; } else { message.flags = 0; } return message; }, toJSON(message) { const obj = {}; obj.body = message.body || ""; if (message.attachments) { obj.attachments = message.attachments.map((e) => e ? _1.PushMessageContent_AttachmentPointer.toJSON(e) : void 0); } else { obj.attachments = []; } obj.group = message.group ? _1.PushMessageContent_GroupContext.toJSON(message.group) : void 0; obj.flags = message.flags || 0; return obj; } }; } }); // node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/index.js var require_lib2 = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-protobuf-ts/lib/index.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_PushMessages(), exports); __exportStar(require_WhisperTextProtocol(), exports); __exportStar(require_push_message_content_compatible(), exports); } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-cipher.js var require_session_cipher = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/session-cipher.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.SessionCipher = void 0; var types_1 = require_types2(); var session_types_1 = require_session_types(); var signal_protocol_address_1 = require_signal_protocol_address(); var libsignal_protocol_protobuf_ts_1 = require_lib2(); var base64 = __importStar(require_base64_js()); var util = __importStar(require_helpers()); var Internal = __importStar(require_internal()); var session_record_1 = require_session_record(); var session_lock_1 = require_session_lock(); var session_builder_1 = require_session_builder(); var helpers_1 = require_helpers(); var SessionCipher3 = class { constructor(storage, remoteAddress) { this.encryptJob = (buffer) => __awaiter(this, void 0, void 0, function* () { if (!(buffer instanceof ArrayBuffer)) { throw new Error("Expected buffer to be an ArrayBuffer"); } const address = this.remoteAddress.toString(); const msg = libsignal_protocol_protobuf_ts_1.WhisperMessage.fromJSON({}); const [ourIdentityKey, myRegistrationId, record] = yield this.loadKeysAndRecord(address); if (!record) { throw new Error("No record for " + address); } if (!ourIdentityKey) { throw new Error(`cannot encrypt without identity key`); } const { session, chain } = yield this.prepareChain(address, record, msg); const keys = yield Internal.HKDF(chain.messageKeys[chain.chainKey.counter], new ArrayBuffer(32), "WhisperMessageKeys"); delete chain.messageKeys[chain.chainKey.counter]; msg.counter = chain.chainKey.counter; msg.previousCounter = session.currentRatchet.previousCounter; const ciphertext = yield Internal.crypto.encrypt(keys[0], buffer, keys[2].slice(0, 16)); msg.ciphertext = new Uint8Array(ciphertext); const encodedMsg = libsignal_protocol_protobuf_ts_1.WhisperMessage.encode(msg).finish(); const macInput = new Uint8Array(encodedMsg.byteLength + 33 * 2 + 1); macInput.set(new Uint8Array(ourIdentityKey.pubKey)); macInput.set(new Uint8Array(session.indexInfo.remoteIdentityKey), 33); macInput[33 * 2] = 3 << 4 | 3; macInput.set(new Uint8Array(encodedMsg), 33 * 2 + 1); const mac = yield Internal.crypto.sign(keys[1], macInput.buffer); const encodedMsgWithMAC = new Uint8Array(encodedMsg.byteLength + 9); encodedMsgWithMAC[0] = 3 << 4 | 3; encodedMsgWithMAC.set(new Uint8Array(encodedMsg), 1); encodedMsgWithMAC.set(new Uint8Array(mac, 0, 8), encodedMsg.byteLength + 1); const trusted = yield this.storage.isTrustedIdentity(this.remoteAddress.getName(), session.indexInfo.remoteIdentityKey, types_1.Direction.SENDING); if (!trusted) { throw new Error("Identity key changed"); } this.storage.saveIdentity(this.remoteAddress.toString(), session.indexInfo.remoteIdentityKey); record.updateSessionState(session); yield this.storage.storeSession(address, record.serialize()); if (session.pendingPreKey !== void 0) { const preKeyMsg = libsignal_protocol_protobuf_ts_1.PreKeyWhisperMessage.fromJSON({}); preKeyMsg.identityKey = new Uint8Array(ourIdentityKey.pubKey); preKeyMsg.registrationId = myRegistrationId; preKeyMsg.baseKey = new Uint8Array(session.pendingPreKey.baseKey); if (session.pendingPreKey.preKeyId) { preKeyMsg.preKeyId = session.pendingPreKey.preKeyId; } preKeyMsg.signedPreKeyId = session.pendingPreKey.signedKeyId; preKeyMsg.message = encodedMsgWithMAC; const encodedPreKeyMsg = libsignal_protocol_protobuf_ts_1.PreKeyWhisperMessage.encode(preKeyMsg).finish(); const result = String.fromCharCode(3 << 4 | 3) + util.uint8ArrayToString(encodedPreKeyMsg); return { type: 3, body: result, registrationId: session.registrationId }; } else { return { type: 1, body: util.uint8ArrayToString(encodedMsgWithMAC), registrationId: session.registrationId }; } }); this.loadKeysAndRecord = (address) => { return Promise.all([ this.storage.getIdentityKeyPair(), this.storage.getLocalRegistrationId(), this.getRecord(address) ]); }; this.prepareChain = (address, record, msg) => __awaiter(this, void 0, void 0, function* () { const session = record.getOpenSession(); if (!session) { throw new Error("No session to encrypt message for " + address); } if (!session.currentRatchet.ephemeralKeyPair) { throw new Error(`ratchet missing ephemeralKeyPair`); } msg.ephemeralKey = new Uint8Array(session.currentRatchet.ephemeralKeyPair.pubKey); const searchKey = base64.fromByteArray(msg.ephemeralKey); const chain = session.chains[searchKey]; if ((chain === null || chain === void 0 ? void 0 : chain.chainType) === session_types_1.ChainType.RECEIVING) { throw new Error("Tried to encrypt on a receiving chain"); } yield this.fillMessageKeys(chain, chain.chainKey.counter + 1); return { session, chain }; }); this.fillMessageKeys = (chain, counter) => __awaiter(this, void 0, void 0, function* () { if (chain.chainKey.counter >= counter) { return Promise.resolve(); } if (counter - chain.chainKey.counter > 2e3) { throw new Error("Over 2000 messages into the future!"); } if (chain.chainKey.key === void 0) { throw new Error("Got invalid request to extend chain after it was already closed"); } const ckey = chain.chainKey.key; if (!ckey) { throw new Error(`chain key is missing`); } const byteArray = new Uint8Array(1); byteArray[0] = 1; const mac = yield Internal.crypto.sign(ckey, byteArray.buffer); byteArray[0] = 2; const key = yield Internal.crypto.sign(ckey, byteArray.buffer); chain.messageKeys[chain.chainKey.counter + 1] = mac; chain.chainKey.key = key; chain.chainKey.counter += 1; yield this.fillMessageKeys(chain, counter); }); this.storage = storage; this.remoteAddress = typeof remoteAddress === "string" ? signal_protocol_address_1.SignalProtocolAddress.fromString(remoteAddress) : remoteAddress; } getRecord(encodedNumber) { return __awaiter(this, void 0, void 0, function* () { const serialized = yield this.storage.loadSession(encodedNumber); if (serialized === void 0) { return void 0; } return session_record_1.SessionRecord.deserialize(serialized); }); } encrypt(buffer) { return session_lock_1.SessionLock.queueJobForNumber(this.remoteAddress.toString(), () => this.encryptJob(buffer)); } calculateRatchet(session, remoteKey, sending) { return __awaiter(this, void 0, void 0, function* () { const ratchet = session.currentRatchet; if (!ratchet.ephemeralKeyPair) { throw new Error(`currentRatchet has no ephemeral key. Cannot calculateRatchet.`); } const sharedSecret = yield Internal.crypto.ECDHE(remoteKey, ratchet.ephemeralKeyPair.privKey); const masterKey = yield Internal.HKDF(sharedSecret, ratchet.rootKey, "WhisperRatchet"); let ephemeralPublicKey; if (sending) { ephemeralPublicKey = ratchet.ephemeralKeyPair.pubKey; } else { ephemeralPublicKey = remoteKey; } session.chains[base64.fromByteArray(new Uint8Array(ephemeralPublicKey))] = { messageKeys: {}, chainKey: { counter: -1, key: masterKey[1] }, chainType: sending ? session_types_1.ChainType.SENDING : session_types_1.ChainType.RECEIVING }; ratchet.rootKey = masterKey[0]; }); } decryptPreKeyWhisperMessage(buff, encoding) { return __awaiter(this, void 0, void 0, function* () { encoding = encoding || "binary"; if (encoding !== "binary") { throw new Error(`unsupported encoding: ${encoding}`); } const buffer = typeof buff === "string" ? util.binaryStringToArrayBuffer(buff) : buff; const view = new Uint8Array(buffer); const version = view[0]; const messageData = view.slice(1); if ((version & 15) > 3 || version >> 4 < 3) { throw new Error("Incompatible version number on PreKeyWhisperMessage"); } const address = this.remoteAddress.toString(); const job = () => __awaiter(this, void 0, void 0, function* () { let record = yield this.getRecord(address); const preKeyProto = libsignal_protocol_protobuf_ts_1.PreKeyWhisperMessage.decode(messageData); if (!record) { if (preKeyProto.registrationId === void 0) { throw new Error("No registrationId"); } record = new session_record_1.SessionRecord(); } const builder = new session_builder_1.SessionBuilder(this.storage, this.remoteAddress); const preKeyId = yield builder.processV3(record, preKeyProto); const session = record.getSessionByBaseKey((0, helpers_1.uint8ArrayToArrayBuffer)(preKeyProto.baseKey)); if (!session) { throw new Error(`unable to find session for base key ${base64.fromByteArray(preKeyProto.baseKey)}, ${preKeyProto.baseKey.byteLength}`); } const plaintext = yield this.doDecryptWhisperMessage(preKeyProto.message, session); record.updateSessionState(session); yield this.storage.storeSession(address, record.serialize()); if (preKeyId !== void 0 && preKeyId !== null) { yield this.storage.removePreKey(preKeyId); } return plaintext; }); return session_lock_1.SessionLock.queueJobForNumber(address, job); }); } decryptWithSessionList(buffer, sessionList, errors) { return __awaiter(this, void 0, void 0, function* () { if (sessionList.length === 0) { return Promise.reject(errors[0]); } const session = sessionList.pop(); if (!session) { return Promise.reject(errors[0]); } try { const plaintext = yield this.doDecryptWhisperMessage(buffer, session); return { plaintext, session }; } catch (e) { if (e.name === "MessageCounterError") { return Promise.reject(e); } errors.push(e); return this.decryptWithSessionList(buffer, sessionList, errors); } }); } decryptWhisperMessage(buff, encoding) { encoding = encoding || "binary"; if (encoding !== "binary") { throw new Error(`unsupported encoding: ${encoding}`); } const buffer = typeof buff === "string" ? util.binaryStringToArrayBuffer(buff) : buff; const address = this.remoteAddress.toString(); const job = () => __awaiter(this, void 0, void 0, function* () { var _a; const record = yield this.getRecord(address); if (!record) { throw new Error("No record for device " + address); } const errors = []; const result = yield this.decryptWithSessionList(buffer, record.getSessions(), errors); if (result.session.indexInfo.baseKey !== ((_a = record.getOpenSession()) === null || _a === void 0 ? void 0 : _a.indexInfo.baseKey)) { record.archiveCurrentState(); record.promoteState(result.session); } const trusted = yield this.storage.isTrustedIdentity(this.remoteAddress.getName(), result.session.indexInfo.remoteIdentityKey, types_1.Direction.RECEIVING); if (!trusted) { throw new Error("Identity key changed"); } yield this.storage.saveIdentity(address, result.session.indexInfo.remoteIdentityKey); record.updateSessionState(result.session); yield this.storage.storeSession(address, record.serialize()); return result.plaintext; }); return session_lock_1.SessionLock.queueJobForNumber(address, job); } doDecryptWhisperMessage(messageBytes, session) { return __awaiter(this, void 0, void 0, function* () { const version = new Uint8Array(messageBytes)[0]; if ((version & 15) > 3 || version >> 4 < 3) { throw new Error("Incompatible version number on WhisperMessage " + version); } const messageProto = messageBytes.slice(1, messageBytes.byteLength - 8); const mac = messageBytes.slice(messageBytes.byteLength - 8, messageBytes.byteLength); const message = libsignal_protocol_protobuf_ts_1.WhisperMessage.decode(new Uint8Array(messageProto)); const remoteEphemeralKey = (0, helpers_1.uint8ArrayToArrayBuffer)(message.ephemeralKey); if (session === void 0) { return Promise.reject(new Error("No session found to decrypt message from " + this.remoteAddress.toString())); } if (session.indexInfo.closed != -1) { } yield this.maybeStepRatchet(session, remoteEphemeralKey, message.previousCounter); const chain = session.chains[base64.fromByteArray(message.ephemeralKey)]; if (!chain) { console.warn(`no chain found for key`, { key: base64.fromByteArray(message.ephemeralKey), session }); } if ((chain === null || chain === void 0 ? void 0 : chain.chainType) === session_types_1.ChainType.SENDING) { throw new Error("Tried to decrypt on a sending chain"); } yield this.fillMessageKeys(chain, message.counter); const messageKey = chain.messageKeys[message.counter]; if (messageKey === void 0) { const e = new Error("Message key not found. The counter was repeated or the key was not filled."); e.name = "MessageCounterError"; throw e; } delete chain.messageKeys[message.counter]; const keys = yield Internal.HKDF(messageKey, new ArrayBuffer(32), "WhisperMessageKeys"); const ourIdentityKey = yield this.storage.getIdentityKeyPair(); if (!ourIdentityKey) { throw new Error(`Our identity key is missing. Cannot decrypt.`); } const macInput = new Uint8Array(messageProto.byteLength + 33 * 2 + 1); macInput.set(new Uint8Array(session.indexInfo.remoteIdentityKey)); macInput.set(new Uint8Array(ourIdentityKey.pubKey), 33); macInput[33 * 2] = 3 << 4 | 3; macInput.set(new Uint8Array(messageProto), 33 * 2 + 1); yield Internal.verifyMAC(macInput.buffer, keys[1], mac, 8); const plaintext = yield Internal.crypto.decrypt(keys[0], (0, helpers_1.uint8ArrayToArrayBuffer)(message.ciphertext), keys[2].slice(0, 16)); delete session.pendingPreKey; return plaintext; }); } maybeStepRatchet(session, remoteKey, previousCounter) { return __awaiter(this, void 0, void 0, function* () { const remoteKeyString = base64.fromByteArray(new Uint8Array(remoteKey)); if (session.chains[remoteKeyString] !== void 0) { return Promise.resolve(); } const ratchet = session.currentRatchet; if (!ratchet.ephemeralKeyPair) { throw new Error(`attempting to step reatchet without ephemeral key`); } const previousRatchet = session.chains[base64.fromByteArray(new Uint8Array(ratchet.lastRemoteEphemeralKey))]; if (previousRatchet !== void 0) { yield this.fillMessageKeys(previousRatchet, previousCounter).then(function() { delete previousRatchet.chainKey.key; session.oldRatchetList[session.oldRatchetList.length] = { added: Date.now(), ephemeralKey: ratchet.lastRemoteEphemeralKey }; }); } yield this.calculateRatchet(session, remoteKey, false); const previousRatchetKey = base64.fromByteArray(new Uint8Array(ratchet.ephemeralKeyPair.pubKey)); if (session.chains[previousRatchetKey] !== void 0) { ratchet.previousCounter = session.chains[previousRatchetKey].chainKey.counter; delete session.chains[previousRatchetKey]; } const keyPair = yield Internal.crypto.createKeyPair(); ratchet.ephemeralKeyPair = keyPair; yield this.calculateRatchet(session, remoteKey, true); ratchet.lastRemoteEphemeralKey = remoteKey; }); } ///////////////////////////////////////// // session management and storage access getRemoteRegistrationId() { return session_lock_1.SessionLock.queueJobForNumber(this.remoteAddress.toString(), () => __awaiter(this, void 0, void 0, function* () { const record = yield this.getRecord(this.remoteAddress.toString()); if (record === void 0) { return void 0; } const openSession = record.getOpenSession(); if (openSession === void 0) { return void 0; } return openSession.registrationId; })); } hasOpenSession() { const job = () => __awaiter(this, void 0, void 0, function* () { const record = yield this.getRecord(this.remoteAddress.toString()); if (record === void 0) { return false; } return record.haveOpenSession(); }); return session_lock_1.SessionLock.queueJobForNumber(this.remoteAddress.toString(), job); } closeOpenSessionForDevice() { const address = this.remoteAddress.toString(); const job = () => __awaiter(this, void 0, void 0, function* () { const record = yield this.getRecord(this.remoteAddress.toString()); if (record === void 0 || record.getOpenSession() === void 0) { return; } record.archiveCurrentState(); return this.storage.storeSession(address, record.serialize()); }); return session_lock_1.SessionLock.queueJobForNumber(address, job); } deleteAllSessionsForDevice() { const address = this.remoteAddress.toString(); const job = () => __awaiter(this, void 0, void 0, function* () { const record = yield this.getRecord(this.remoteAddress.toString()); if (record === void 0) { return; } record.deleteAllSessions(); return this.storage.storeSession(address, record.serialize()); }); return session_lock_1.SessionLock.queueJobForNumber(address, job); } }; exports.SessionCipher = SessionCipher3; } }); // node_modules/@privacyresearch/libsignal-protocol-typescript/lib/index.js var require_lib3 = __commonJS({ "node_modules/@privacyresearch/libsignal-protocol-typescript/lib/index.js"(exports) { "use strict"; init_inject_buffer(); var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; var __importStar = exports && exports.__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 __awaiter = exports && exports.__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.setCurve = exports.setWebCrypto = void 0; var curve25519_typescript_1 = require_lib(); var curve_1 = require_curve2(); __exportStar(require_types2(), exports); __exportStar(require_signal_protocol_address(), exports); __exportStar(require_key_helper(), exports); __exportStar(require_fingerprint_generator(), exports); __exportStar(require_session_builder(), exports); __exportStar(require_session_cipher(), exports); __exportStar(require_session_types(), exports); __exportStar(require_curve2(), exports); var Internal = __importStar(require_internal()); var internal_1 = require_internal(); Object.defineProperty(exports, "setWebCrypto", { enumerable: true, get: function() { return internal_1.setWebCrypto; } }); Object.defineProperty(exports, "setCurve", { enumerable: true, get: function() { return internal_1.setCurve; } }); exports.default = () => __awaiter(void 0, void 0, void 0, function* () { const cw = yield curve25519_typescript_1.Curve25519Wrapper.create(); return { Curve: new curve_1.Curve(new Internal.Curve(cw)) }; }); } }); // _vendor-entry.js init_inject_buffer(); var lib = __toESM(require_lib3(), 1); var KeyHelper2 = lib.KeyHelper; var SignalProtocolAddress2 = lib.SignalProtocolAddress; var SessionBuilder2 = lib.SessionBuilder; var SessionCipher2 = lib.SessionCipher; var FingerprintGenerator2 = lib.FingerprintGenerator; export { FingerprintGenerator2 as FingerprintGenerator, KeyHelper2 as KeyHelper, SessionBuilder2 as SessionBuilder, SessionCipher2 as SessionCipher, SignalProtocolAddress2 as SignalProtocolAddress }; /*! Bundled license information: ieee754/index.js: (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) buffer/index.js: (*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT *) @privacyresearch/curve25519-typescript/lib/built/curveasm.js: (** * @license * Copyright 2010 The Emscripten Authors * SPDX-License-Identifier: MIT *) (** * @license * Copyright 2019 The Emscripten Authors * SPDX-License-Identifier: MIT *) (** * @license * Copyright 2017 The Emscripten Authors * SPDX-License-Identifier: MIT *) (** * @license * Copyright 2020 The Emscripten Authors * SPDX-License-Identifier: MIT *) (** * @license * Copyright 2015 The Emscripten Authors * SPDX-License-Identifier: MIT *) long/umd/index.js: (** * @license * Copyright 2009 The Closure Library Authors * Copyright 2020 Daniel Wirtz / The long.js Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * SPDX-License-Identifier: Apache-2.0 *) */