@onekeyfe/hwk-trezor-core 1.1.27-alpha.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/base64-js/index.js","../../../node_modules/ieee754/index.js","../../../node_modules/buffer/index.js","../src/runtime/buffer.ts","../src/index.ts","../../hwk-trezor-protobuf/src/index.ts","../../hwk-trezor-protobuf/src/manager.ts","../../../node_modules/@bufbuild/protobuf/dist/esm/index.js","../../../node_modules/@bufbuild/protobuf/dist/esm/is-message.js","../../../node_modules/@bufbuild/protobuf/dist/esm/create.js","../../../node_modules/@bufbuild/protobuf/dist/esm/descriptors.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.js","../../../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/error.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/file.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/boot.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/restore-json-names.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/names.js","../../../node_modules/@bufbuild/protobuf/dist/esm/registry.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.js","../../../node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/message.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/enum.js","../../../node_modules/@bufbuild/protobuf/dist/esm/from-binary.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wkt/any.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.js","../../../node_modules/@bufbuild/protobuf/dist/esm/to-binary.js","../../../node_modules/@bufbuild/protobuf/dist/esm/codegenv2/extension.js","../../../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.js","../../../node_modules/@bufbuild/protobuf/dist/esm/extensions.js","../../../node_modules/@bufbuild/protobuf/dist/esm/to-json.js","../../../node_modules/@bufbuild/protobuf/dist/esm/from-json.js","../../hwk-trezor-protobuf/hwk.ts","../../hwk-trezor-protobuf/src/definitions/messages-bitcoin_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-common_pb.js","../../hwk-trezor-protobuf/src/definitions/options_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-ble_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-bootloader_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-cardano_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-crypto_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-debug_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-management_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-definitions_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-eos_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-ethereum-eip712_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-ethereum_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-evolu_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-monero_pb.js","../../hwk-trezor-protobuf/src/definitions/messages_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-ripple_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-solana_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-stellar_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-telemetry_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-tezos_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-thp_pb.js","../../hwk-trezor-protobuf/src/definitions/messages-tron_pb.js","../../hwk-trezor-protocol/src/index.ts","../../hwk-trezor-protocol/src/protocol-v1/index.ts","../../hwk-trezor-protocol/src/protocol-v1/decode.ts","../../hwk-trezor-protocol/src/errors.ts","../../hwk-trezor-protocol/src/protocol-v1/constants.ts","../../hwk-trezor-protocol/src/protocol-v1/encode.ts","../../hwk-trezor-protocol/src/protocol-v2/index.ts","../../hwk-trezor-protocol/src/protocol-v2/decode.ts","../../hwk-trezor-protocol/src/protocol-v2/constants.ts","../../hwk-trezor-protocol/src/protocol-v2/encode.ts","../../hwk-trezor-protocol/src/protocol-thp/index.ts","../../hwk-trezor-protocol/src/protocol-thp/decode.ts","../../hwk-trezor-protocol/src/protocol-thp/constants.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/index.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/aesgcm.ts","../src/runtime/crypto.ts","../../../node_modules/@noble/ciphers/src/aes.ts","../../../node_modules/@noble/ciphers/src/_polyval.ts","../../../node_modules/@noble/ciphers/src/utils.ts","../../../node_modules/@noble/hashes/src/hmac.ts","../../../node_modules/@noble/hashes/src/utils.ts","../../../node_modules/@noble/hashes/src/sha2.ts","../../../node_modules/@noble/hashes/src/_md.ts","../../../node_modules/@noble/hashes/src/_u64.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/crc32.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/pairing.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/curve25519.ts","../../hwk-trezor-protocol/src/protocol-thp/crypto/tools.ts","../../hwk-trezor-protocol/src/protocol-thp/messages/protobufTypes.ts","../../hwk-trezor-protocol/src/protocol-thp/encode.ts","../../hwk-trezor-protocol/src/protocol-thp/ThpState.ts","../../hwk-trezor-protocol/src/protocol-thp/utils.ts","../../hwk-trezor-transport/hwk.ts","../../hwk-trezor-transport/src/utils/send.ts","../../hwk-trezor-transport/src/utils/receive.ts","../../hwk-trezor-transport/src/utils/result.ts","../../hwk-trezor-type-utils/src/index.ts","../../hwk-trezor-type-utils/src/result.ts","../../hwk-trezor-transport/src/errors.ts","../../hwk-trezor-transport/src/thp/index.ts","../../hwk-trezor-transport/src/thp/receive.ts","../../hwk-trezor-transport/src/thp/loop.ts","../../hwk-trezor-transport/src/thp/receiveExpectedMessage.ts","../../hwk-trezor-utils/src/index.ts","../../hwk-trezor-utils/src/scheduleAction.ts","../../hwk-trezor-transport/src/thp/call.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer as RuntimeBuffer } from 'buffer';\n\nconst globalScope = globalThis as typeof globalThis & {\n Buffer?: typeof RuntimeBuffer;\n};\n\nconst uint8ArraySubarray = Uint8Array.prototype.subarray;\n\nconst toBufferView = (view: Uint8Array): Buffer => {\n return RuntimeBuffer.from(view.buffer, view.byteOffset, view.byteLength);\n};\n\nexport const toRuntimeBuffer = (bytes: Buffer | Uint8Array | ArrayBuffer): Buffer => {\n if (bytes instanceof ArrayBuffer) {\n return RuntimeBuffer.from(bytes);\n }\n\n return RuntimeBuffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n};\n\nexport const installBufferRuntime = () => {\n globalScope.Buffer = RuntimeBuffer;\n\n RuntimeBuffer.prototype.subarray = function subarray(start?: number, end?: number) {\n return toBufferView(uint8ArraySubarray.call(this, start, end));\n } as typeof RuntimeBuffer.prototype.subarray;\n\n RuntimeBuffer.prototype.slice = function slice(start?: number, end?: number) {\n return toBufferView(uint8ArraySubarray.call(this, start, end));\n } as typeof RuntimeBuffer.prototype.slice;\n\n return RuntimeBuffer;\n};\n\ninstallBufferRuntime();\n\nexport const Buffer = RuntimeBuffer;\nexport default RuntimeBuffer;\n","import {\n type MessagesSchema as InternalMessagesSchema,\n protobufManager,\n} from '@onekeyfe/hwk-trezor-protobuf';\nimport { DefaultDefinitions } from '@onekeyfe/hwk-trezor-protobuf/hwk';\nimport {\n type TransportProtocol as InternalTransportProtocol,\n type ThpState as InternalThpState,\n type thp as internalProtocolThp,\n v1 as protocolV1,\n v2 as protocolV2,\n thp as protocolThpRuntime,\n} from '@onekeyfe/hwk-trezor-protocol';\nimport {\n buildMessage,\n callThpMessage,\n createChunks,\n parseThpMessage,\n receiveAndParse,\n} from '@onekeyfe/hwk-trezor-transport/hwk';\nimport { toRuntimeBuffer } from './runtime/buffer';\n\nexport interface TrezorByteTransport {\n write(chunk: Buffer, signal?: AbortSignal): Promise<void>;\n read(signal?: AbortSignal): Promise<Buffer>;\n}\n\nexport interface TrezorTransportProtocol {\n name: 'bridge' | 'v1' | 'v2';\n encode(\n data: Buffer,\n options: {\n messageType: number;\n header?: Buffer;\n },\n ): Buffer;\n decode(bytes: Buffer): {\n header: Buffer;\n length: number;\n messageType: number;\n payload: Buffer;\n };\n getHeaders(data: Buffer): [header: Buffer, chunkHeader: Buffer];\n}\n\nexport type TrezorThpState = {\n readonly sendNonce?: number;\n sync(direction: 'send' | 'recv', messageName: string): void;\n};\n\nexport type TrezorMessageName = string;\n\nexport type TrezorMessageResponse<T extends string = string> = {\n type: T;\n message: Record<string, unknown>;\n};\n\nexport type TrezorCoreOptions = {\n transport: TrezorByteTransport;\n protocol?: TrezorTransportProtocol;\n chunkSize?: number;\n logger?: TrezorDebugLogger;\n};\n\nexport type TrezorCallOptions = {\n signal?: AbortSignal;\n thpState?: TrezorThpState;\n};\n\nexport type TrezorThpRawTransport = {\n write?(connectId: string, data: Uint8Array): Promise<void>;\n read?(connectId: string, timeoutMs?: number): Promise<Uint8Array | undefined>;\n};\n\nexport type TrezorThpCallParams = {\n messageName: string;\n data?: Record<string, unknown>;\n skipAck?: boolean;\n};\n\nexport type TrezorDebugLogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport type TrezorDebugLogEntry = {\n level: TrezorDebugLogLevel;\n scope: string;\n event: string;\n data?: Record<string, unknown>;\n};\n\nexport type TrezorDebugLogger = (entry: TrezorDebugLogEntry) => void;\n\nexport class TrezorFailureError extends Error {\n readonly code?: unknown;\n readonly response: TrezorMessageResponse<'Failure'>;\n\n constructor(response: TrezorMessageResponse<'Failure'>) {\n const message =\n typeof response.message.message === 'string'\n ? response.message.message\n : 'Trezor Failure';\n super(message);\n this.name = 'TrezorFailureError';\n this.code = response.message.code;\n this.response = response;\n }\n}\n\nconst isFailureResponse = (response: unknown): response is TrezorMessageResponse<'Failure'> =>\n Boolean(\n response &&\n typeof response === 'object' &&\n 'type' in response &&\n response.type === 'Failure',\n );\n\nconst toBuffer = (bytes: Buffer | Uint8Array) => toRuntimeBuffer(bytes);\nconst bytesToHex = (bytes: Buffer | Uint8Array) => toBuffer(bytes).toString('hex');\nconst bytesEqual = (left: Buffer | Uint8Array, right: Buffer | Uint8Array) =>\n bytesToHex(left) === bytesToHex(right);\nconst loadTrezorDefinitions = () => protobufManager.load(DefaultDefinitions);\n\nexport class TrezorCore {\n private readonly transport: TrezorByteTransport;\n private readonly protocol: InternalTransportProtocol;\n private readonly chunkSize: number;\n private readonly logger?: TrezorDebugLogger;\n\n constructor({ transport, protocol = protocolV1, chunkSize = 64, logger }: TrezorCoreOptions) {\n loadTrezorDefinitions();\n this.transport = transport;\n this.protocol = protocol as InternalTransportProtocol;\n this.chunkSize = chunkSize;\n this.logger = logger;\n }\n\n async call(\n name: TrezorMessageName,\n data: Record<string, unknown> = {},\n options: TrezorCallOptions = {},\n ): Promise<TrezorMessageResponse> {\n const thpState = options.thpState as InternalThpState | undefined;\n const message = buildMessage({\n name: name as InternalMessagesSchema.MessageKey,\n data,\n protocol: this.protocol,\n thpState,\n });\n const [, chunkHeader] = this.protocol.getHeaders(message);\n const chunks = createChunks(message, chunkHeader, this.chunkSize);\n\n if (this.protocol.name === 'v2') {\n const previousNonce = thpState?.sendNonce;\n const response = await callThpMessage({\n thpState,\n chunks,\n apiWrite: async (chunk, signal) => {\n await this.transport.write(chunk, signal);\n\n return { success: true as const, payload: undefined };\n },\n apiRead: async signal => {\n const payload = await this.transport.read(signal);\n\n return { success: true as const, payload: toRuntimeBuffer(payload) };\n },\n signal: options.signal,\n logger: this.thpLoopLogger(),\n });\n\n if (!response.success) {\n throw new Error(response.error.message ?? response.error.code);\n }\n\n const beforeSendSync = {\n sendBit: thpState?.sendBit,\n recvBit: thpState?.recvBit,\n sendNonce: thpState?.sendNonce,\n recvNonce: thpState?.recvNonce,\n };\n if (previousNonce === thpState?.sendNonce) {\n thpState?.sync('send', name);\n }\n const afterSendSync = {\n sendBit: thpState?.sendBit,\n recvBit: thpState?.recvBit,\n sendNonce: thpState?.sendNonce,\n recvNonce: thpState?.recvNonce,\n };\n\n const parsed = parseThpMessage({\n decoded: response.payload,\n thpState,\n });\n thpState?.sync('recv', parsed.type);\n const afterRecvSync = {\n sendBit: thpState?.sendBit,\n recvBit: thpState?.recvBit,\n sendNonce: thpState?.sendNonce,\n recvNonce: thpState?.recvNonce,\n };\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] core.call.sync', {\n requestName: name,\n responseType: parsed.type,\n previousNonce,\n beforeSendSync,\n afterSendSync,\n afterRecvSync,\n didSendSync: previousNonce === thpState?.sendNonce,\n });\n\n if (isFailureResponse(parsed)) {\n throw new TrezorFailureError(parsed);\n }\n\n return parsed as TrezorMessageResponse;\n }\n\n for (const chunk of chunks) {\n await this.transport.write(chunk, options.signal);\n }\n\n const response = await receiveAndParse(async () => {\n const payload = await this.transport.read(options.signal);\n\n return {\n success: true as const,\n payload: toRuntimeBuffer(payload),\n };\n }, this.protocol);\n\n if (!response.success) {\n throw new Error(response.error.message ?? response.error.code);\n }\n\n if (isFailureResponse(response.payload)) {\n throw new TrezorFailureError(response.payload);\n }\n\n return response.payload as TrezorMessageResponse;\n }\n\n private thpLoopLogger() {\n if (!this.logger) return undefined;\n const emit = (level: TrezorDebugLogLevel, args: unknown[]) => {\n this.logger?.({\n level,\n scope: 'trezor-core',\n event: 'thp.loop',\n data: {\n message: args.map(arg => (typeof arg === 'string' ? arg : JSON.stringify(arg))).join(' '),\n },\n });\n };\n\n return {\n debug: (...args: unknown[]) => emit('debug', args),\n info: (...args: unknown[]) => emit('info', args),\n log: (...args: unknown[]) => emit('debug', args),\n warn: (...args: unknown[]) => emit('warn', args),\n error: (...args: unknown[]) => emit('error', args),\n };\n }\n}\n\nexport class TrezorThpProtocol {\n private readonly thpState = new protocolThpRuntime.ThpState();\n\n constructor() {\n loadTrezorDefinitions();\n }\n\n encode({ messageName, data = {} }: TrezorThpCallParams): Uint8Array {\n const chunk = protocolThpRuntime.encode({\n messageName,\n data,\n thpState: this.thpState,\n protobufEncoder: (name, messageData) => protobufManager.encode(name, messageData),\n });\n return Uint8Array.from(chunk);\n }\n\n async call(\n transport: TrezorThpRawTransport,\n connectId: string,\n params: TrezorThpCallParams,\n ): Promise<TrezorMessageResponse> {\n if (!transport.write || !transport.read) {\n throw new Error('Trezor THP requires transport.write/read');\n }\n\n const previousNonce = this.thpState.sendNonce;\n const chunk = toRuntimeBuffer(this.encode(params));\n const result = await callThpMessage({\n thpState: this.thpState,\n chunks: [chunk],\n skipAck: params.skipAck,\n apiWrite: async data => {\n await transport.write?.(connectId, Uint8Array.from(data));\n return { success: true, payload: undefined };\n },\n apiRead: async () => {\n const data = await transport.read?.(connectId);\n if (!data) {\n return {\n success: false,\n error: { code: 'unexpected error' as const, message: 'No data read' },\n };\n }\n return { success: true, payload: toRuntimeBuffer(data) };\n },\n });\n\n if (!result.success) {\n throw new Error(result.error.message ?? result.error.code);\n }\n\n if (previousNonce === this.thpState.sendNonce) {\n this.thpState.sync('send', params.messageName);\n }\n\n const message = parseThpMessage({\n decoded: result.payload,\n thpState: this.thpState,\n }) as TrezorMessageResponse;\n this.applyReceivedState(message);\n return message;\n }\n\n private applyReceivedState(message: TrezorMessageResponse): void {\n if (message.type === 'ThpCreateChannelResponse') {\n const channel = message.message.channel;\n const properties = message.message.properties;\n if (channel instanceof Uint8Array) {\n this.thpState.setChannel(Buffer.from(channel));\n }\n if (properties && typeof properties === 'object') {\n this.thpState.setThpProperties(properties as internalProtocolThp.ThpDeviceProperties);\n }\n }\n this.thpState.sync('recv', message.type);\n }\n}\n\nexport type TrezorCoreLike = {\n call(\n name: string,\n data?: Record<string, unknown>,\n options?: TrezorCallOptions,\n ): Promise<TrezorMessageResponse>;\n};\n\nexport type TrezorCoreFactory = (\n transport: TrezorByteTransport,\n protocol: TrezorTransportProtocol,\n chunkSize: number,\n logger?: TrezorDebugLogger,\n) => TrezorCoreLike;\n\ntype TrezorSessionProtocol = 'v1' | 'thp';\n\ntype TrezorDeviceSessionOptions = {\n transport: TrezorByteTransport;\n connectionType?: string;\n chunkSize?: number;\n coreFactory?: TrezorCoreFactory;\n initializedState?: {\n protocol: TrezorSessionProtocol;\n features: Record<string, unknown>;\n thpState?: TrezorThpState;\n };\n thp?: TrezorThpSessionOptions;\n};\n\nexport type TrezorThpPairingMethod = number | 'CodeEntry' | 'QrCode' | 'NFC' | 'SkipPairing';\n\nexport type TrezorThpCredentials = Record<string, unknown> & {\n host_static_key?: string;\n autoconnect?: boolean;\n};\n\nexport type TrezorThpHandshakeInitResponse = Record<string, unknown>;\n\nexport type TrezorPinMatrixRequestPayload = Record<string, unknown> & {\n type?: string;\n};\n\nexport type TrezorThpHandshakeCredentials = {\n pairingMethods: number[];\n handshakeHash: Buffer;\n handshakeCommitment?: Buffer;\n codeEntryChallenge?: Buffer;\n trezorEncryptedStaticPubkey: Buffer;\n hostEncryptedStaticPubkey: Buffer;\n staticKey: Buffer;\n hostStaticPublicKey?: Buffer;\n hostKey: Buffer;\n trezorKey: Buffer;\n trezorCpacePublicKey?: Buffer;\n};\n\nexport type TrezorThpHandshakeInitHandler = (args: {\n handshakeInitResponse: TrezorThpHandshakeInitResponse;\n thpState: TrezorThpState;\n knownCredentials: TrezorThpCredentials[];\n hostEphemeralKeys: {\n privateKey: Buffer;\n publicKey: Buffer;\n };\n tryToUnlock: 0 | 1;\n protobufEncoder: (name: string, data: Record<string, unknown>) => { message: Buffer };\n}) => {\n trezorMaskedStaticPubkey: Buffer;\n trezorEncryptedStaticPubkey: Buffer;\n hostEncryptedStaticPubkey: Buffer;\n hostKey: Buffer;\n trezorKey: Buffer;\n handshakeHash: Buffer;\n credentials?: TrezorThpCredentials;\n allCredentials: TrezorThpCredentials[];\n encryptedPayload: Buffer;\n staticKey: Buffer;\n hostStaticKeys: {\n privateKey: Buffer;\n publicKey: Buffer;\n };\n};\n\ntype TrezorThpPairingResponse =\n | { selectedMethod: TrezorThpPairingMethod }\n | { tag: string };\n\nexport type TrezorThpSessionOptions = {\n hostName?: string;\n appName?: string;\n pairingMethods?: TrezorThpPairingMethod[];\n knownCredentials?: TrezorThpCredentials[];\n randomBytes?: (size: number) => Buffer;\n handleHandshakeInit?: TrezorThpHandshakeInitHandler;\n onPairingRequest?: (payload: {\n availableMethods: number[];\n selectedMethod: number;\n nfcData?: string;\n }) => Promise<TrezorThpPairingResponse>;\n onButtonRequest?: (payload: Record<string, unknown>) => Promise<void> | void;\n onPinMatrixRequest?: (payload: TrezorPinMatrixRequestPayload) => Promise<string> | string;\n /**\n * Provide the passphrase for a session. Called at two points depending on\n * protocol — proactively before `ThpCreateNewSession` (THP), reactively on\n * a `PassphraseRequest` (v1). Return `{ on_device: true }` to enter the\n * passphrase on the device instead of sending a value. Empty string = the\n * standard (no-passphrase) wallet.\n */\n onPassphraseRequest?: (\n payload?: Record<string, unknown>,\n ) =>\n | Promise<{ passphrase?: string; on_device?: boolean }>\n | { passphrase?: string; on_device?: boolean };\n /**\n * Invoked after the THP handshake mints fresh pairing credentials (i.e.\n * the first successful pairing run after a wipe / new device). The host\n * should persist the full `credentials` list keyed by `deviceId` and feed\n * it back via `knownCredentials` on the next connect to skip pairing UX.\n */\n onPairingCredentialsChanged?: (payload: {\n credentials: TrezorThpCredentials[];\n }) => Promise<void> | void;\n logger?: TrezorDebugLogger;\n};\n\nconst defaultCoreFactory: TrezorCoreFactory = (transport, protocol, chunkSize, logger) =>\n new TrezorCore({ transport, protocol, chunkSize, logger }) as TrezorCoreLike;\n\nconst THP_CONTROL_METHODS = new Set([\n 'ThpCreateChannelRequest',\n 'ThpHandshakeInitRequest',\n 'ThpHandshakeCompletionRequest',\n 'ThpPairingRequest',\n 'ThpSelectMethod',\n 'ThpCodeEntryChallenge',\n 'ThpCodeEntryCpaceHostTag',\n 'ThpQrCodeTag',\n 'ThpNfcTagHost',\n 'ThpCredentialRequest',\n 'ThpEndRequest',\n 'ThpCreateNewSession',\n 'ThpAck',\n 'ButtonAck',\n]);\n\nexport class TrezorDeviceSession {\n private readonly transport: TrezorByteTransport;\n private readonly connectionType?: string;\n private readonly chunkSize: number;\n private readonly coreFactory: TrezorCoreFactory;\n private readonly thpOptions?: TrezorThpSessionOptions;\n private core?: TrezorCoreLike;\n private protocol: TrezorSessionProtocol = 'v1';\n private thpState?: InternalThpState;\n // True once a THP application session has been created OR selected on this\n // channel. The host can create/switch among multiple app sessions (one per\n // passphrase) within one channel; this flag only guards the auto-default\n // path in `call()` so it doesn't keep creating sessions on every business\n // call. The XFP↔sessionId mapping lives in the adapter — the session only\n // deals in session ids.\n private thpAppSessionActive = false;\n private currentFeatures?: Record<string, unknown>;\n\n constructor(options: TrezorDeviceSessionOptions) {\n this.transport = options.transport;\n this.connectionType = options.connectionType;\n this.chunkSize = options.chunkSize ?? 64;\n this.coreFactory = options.coreFactory ?? defaultCoreFactory;\n this.thpOptions = options.thp;\n\n if (options.initializedState) {\n this.protocol = options.initializedState.protocol;\n this.currentFeatures = options.initializedState.features;\n this.core = this.coreFactory(\n this.transport,\n this.protocol === 'thp' ? protocolV2 : protocolV1,\n this.chunkSize,\n this.thpOptions?.logger,\n );\n this.thpState = options.initializedState.thpState as InternalThpState | undefined;\n }\n }\n\n get features() {\n return this.currentFeatures;\n }\n\n /**\n * Whether this device speaks THP (v2). THP supports multiple host-managed\n * application sessions per channel (passphrase sessions); v1 does not — its\n * passphrase flow is reactive (device-driven `PassphraseRequest`). The\n * adapter branches on this to decide whether to drive app-session caching.\n */\n get isThp(): boolean {\n return this.protocol === 'thp';\n }\n\n getThpState(): TrezorThpState | undefined {\n return this.thpState;\n }\n\n async initialize(): Promise<Record<string, unknown>> {\n this.log('info', 'session.initialize.start', {\n connectionType: this.connectionType ?? 'unknown',\n chunkSize: this.chunkSize,\n thp: !!this.thpOptions,\n });\n // Unified protocol selection (mirrors trezor-suite's Device handshake\n // at packages/connect/src/device/workflow/handshake.ts):\n // 1. Always send v1 `Initialize` first, regardless of transport.\n // 2. If the device replies `Failure_InvalidProtocol`, fall back to\n // THP. That's the only signal trezor-suite itself uses — USB\n // descriptors are identical (0x1209/0x53c1) for Safe 5 (v1-only)\n // and Safe 7 (THP-only), so probing the device is the only\n // reliable way. BLE follows the same path so the dispatch stays\n // symmetric and future non-Safe-7 BLE devices keep working.\n this.protocol = 'v1';\n const optsLogger = (this.thpOptions as { logger?: TrezorThpSessionOptions['logger'] } | undefined)?.logger;\n this.core = this.coreFactory(this.transport, protocolV1, this.chunkSize, optsLogger);\n try {\n this.log('debug', 'session.call.request', { protocol: 'v1', name: 'Initialize' });\n const response = await this.core.call('Initialize', {});\n this.log('debug', 'session.call.response', { protocol: 'v1', name: 'Initialize', responseType: response.type });\n this.currentFeatures = expectMessage(response, 'Features').message;\n } catch (error) {\n // THP-only firmware (Safe 7) replies Failure { code: Failure_InvalidProtocol }\n // to v1 framing; TrezorCore.call surfaces that as a thrown\n // TrezorFailureError, never a returned response — so the fallback\n // *must* live in the catch path.\n if (error instanceof TrezorFailureError && error.code === 'Failure_InvalidProtocol') {\n this.log('info', 'session.initialize.thp.fallback', {\n reason: 'device replied Failure_InvalidProtocol to v1 Initialize',\n });\n if (!this.thpOptions) {\n throw new Error(\n 'Trezor THP required but the connector was constructed without `thp` options. ' +\n 'Pass `thp: { hostName, appName, ... }` so the device can complete pairing.'\n );\n }\n this.protocol = 'v1';\n this.core = undefined;\n return this.initializeThp();\n }\n this.log('error', 'session.initialize.error', { error: errorToLog(error) });\n throw error;\n }\n\n this.log('info', 'session.initialize.done', { protocol: this.protocol, features: summarizeFeatures(this.currentFeatures) });\n return this.currentFeatures;\n }\n\n async call(name: string, data: Record<string, unknown> = {}) {\n if (!this.core) {\n await this.initialize();\n }\n\n this.log('info', 'session.method.start', {\n name,\n protocol: this.protocol,\n dataKeys: Object.keys(data),\n });\n if (this.protocol === 'thp' && this.thpState && shouldCreateThpApplicationSession(name)) {\n await this.ensureThpApplicationSession(false);\n }\n\n let requestName = name;\n let requestData = data;\n\n while (true) {\n let response: { type: string; message: Record<string, unknown> };\n try {\n response = await this.core!.call(requestName, requestData, { thpState: this.thpState });\n } catch (error) {\n this.log('error', 'session.method.error', { name: requestName, error: errorToLog(error) });\n throw error;\n }\n this.log('info', 'session.method.response', {\n name: requestName,\n responseType: response.type,\n messageKeys: Object.keys(response.message ?? {}),\n });\n\n if (response.type === 'ButtonRequest') {\n await this.handleButtonRequest(response.message);\n requestName = 'ButtonAck';\n requestData = {};\n continue;\n }\n\n if (response.type === 'PinMatrixRequest') {\n const pin = await this.handlePinMatrixRequest(response.message as TrezorPinMatrixRequestPayload);\n requestName = 'PinMatrixAck';\n requestData = { pin };\n continue;\n }\n\n // v1 (legacy) passphrase: device asks reactively mid-call. THP\n // provides the passphrase proactively at ThpCreateNewSession, so\n // this branch only fires on v1 firmware.\n if (response.type === 'PassphraseRequest') {\n const ack = await this.handlePassphraseRequest(response.message);\n requestName = 'PassphraseAck';\n requestData = ack.on_device\n ? { on_device: true }\n : { passphrase: ack.passphrase ?? '' };\n continue;\n }\n\n if (name === 'GetFeatures') {\n this.currentFeatures = expectMessage(response, 'Features').message;\n }\n\n return response;\n }\n }\n\n private async initializeThp({\n tryToUnlock = 0,\n hasRetried = false,\n }: { tryToUnlock?: 0 | 1; hasRetried?: boolean } = {}): Promise<Record<string, unknown>> {\n this.log('info', 'thp.initialize.start', { tryToUnlock });\n this.protocol = 'thp';\n this.thpState = new protocolThpRuntime.ThpState();\n this.core = this.coreFactory(this.transport, protocolV2, this.chunkSize, this.thpOptions?.logger);\n\n const thpSession = new TrezorThpSession(this.core, this.thpState, this.chunkSize, this.thpOptions);\n try {\n await thpSession.initialize({ tryToUnlock });\n this.log('info', 'thp.getFeatures.start');\n const response = await this.core.call('GetFeatures', {}, { thpState: this.thpState });\n this.log('info', 'thp.getFeatures.response', { responseType: response.type });\n this.currentFeatures = expectMessage(response, 'Features').message;\n const f = this.currentFeatures as Record<string, unknown>;\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] features.session', {\n passphrase_protection: f.passphrase_protection,\n pin_protection: f.pin_protection,\n unlocked: f.unlocked,\n session_id: f.session_id,\n initialized: f.initialized,\n internal_model: f.internal_model,\n fw_major: f.major_version,\n fw_minor: f.minor_version,\n fw_patch: f.patch_version,\n });\n } catch (error) {\n const code = (error as { code?: string } | undefined)?.code;\n // Device-locked: synthesize a ButtonRequest_PinEntry through the\n // existing button-request channel and re-run the handshake exactly\n // once with tryToUnlock=1. Mirrors trezor-suite's `thp/index.ts`\n // getThpChannel pattern. The device itself emits no UI event during\n // the locked handshake — it just blocks the USB/BLE read until the\n // user types their PIN on the device — so the host has to surface\n // the prompt itself. If we've already retried and it's still locked,\n // propagate as `Device_InitializeFailed` so the caller doesn't loop.\n if (code === 'ThpDeviceLocked' && !hasRetried) {\n this.log('info', 'thp.initialize.deviceLocked.retry', {});\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] synth.ButtonRequest_PinEntry (host-synthesized, NOT from device)', {\n reason: 'ThpDeviceLocked caught in initializeThp catch — no wire ButtonRequest was received',\n });\n await this.thpOptions?.onButtonRequest?.({ code: 'ButtonRequest_PinEntry' });\n return this.initializeThp({ tryToUnlock: 1, hasRetried: true });\n }\n if (code === 'ThpDeviceLocked' && hasRetried) {\n this.log('error', 'thp.initialize.deviceLocked.giveUp', {});\n throw Object.assign(new Error('Trezor device still locked after PIN attempt'), {\n code: 'Device_InitializeFailed',\n });\n }\n this.log('error', 'thp.initialize.error', { error: errorToLog(error) });\n throw error;\n }\n\n this.log('info', 'thp.initialize.done', { features: summarizeFeatures(this.currentFeatures) });\n return this.currentFeatures;\n }\n\n /**\n * Create a NEW THP application session with a freshly-prompted passphrase\n * (or empty if the device has no passphrase protection). Returns the new\n * session id (hex). The session knows nothing about wallet identity (XFP) —\n * the adapter derives that (via master fingerprint) and owns the\n * XFP↔sessionId map. Multiple sessions can coexist on one channel.\n */\n async createThpAppSession(deriveCardano = false): Promise<string> {\n if (!this.thpState) {\n throw new Error('createThpAppSession requires an active THP channel');\n }\n this.log('info', 'thp.appSession.create.start', { deriveCardano });\n const sessionId = this.thpState.createNewSessionId();\n // Resolve passphrase proactively (mirrors trezor-suite createThpSession):\n // standard wallet (passphrase_protection off) → empty; else ask the host.\n const passphraseProtected =\n (this.currentFeatures as Record<string, unknown> | undefined)\n ?.passphrase_protection === true;\n let passphraseArg: { passphrase?: string; on_device?: boolean } = {\n passphrase: '',\n };\n if (passphraseProtected && this.thpOptions?.onPassphraseRequest) {\n const res = await this.thpOptions.onPassphraseRequest();\n passphraseArg = res?.on_device\n ? { on_device: true }\n : { passphrase: res?.passphrase ?? '' };\n }\n try {\n // Route through the interactive `call()` loop (NOT a bare\n // `core.call`): when passphrase protection is on, the device replies\n // to ThpCreateNewSession with a ButtonRequest (hidden-wallet confirm /\n // ButtonRequest_PassphraseEntry) that MUST be answered with ButtonAck\n // before it returns the new session. A single round-trip leaves the\n // device awaiting the ack and the next message desyncs into a\n // Failure_FirmwareError. `ThpCreateNewSession` is a THP control method\n // (THP_CONTROL_METHODS) so `call()` won't recurse into\n // ensureThpApplicationSession. The empty-passphrase (standard wallet)\n // path skips the ButtonRequest, which is why it worked without this.\n const response = await this.call('ThpCreateNewSession', {\n ...passphraseArg,\n derive_cardano: deriveCardano,\n });\n this.log('info', 'thp.appSession.create.response', { responseType: response.type });\n } catch (error) {\n this.log('error', 'thp.appSession.create.error', { error: errorToLog(error) });\n throw error;\n }\n this.thpAppSessionActive = true;\n return sessionId.toString('hex');\n }\n\n /**\n * Switch the active THP session to an existing id (host-side: just sets the\n * session-id byte in the next message header). The device must still hold\n * the session — validity is verified by the caller's next real call (an\n * evicted session surfaces as a Failure/ThpError, the adapter then recreates).\n */\n selectThpAppSession(sessionId: string): void {\n if (!this.thpState) {\n throw new Error('selectThpAppSession requires an active THP channel');\n }\n this.thpState.setSessionId(Buffer.from(sessionId, 'hex'));\n this.thpAppSessionActive = true;\n }\n\n /** Active THP session id (hex), or undefined if none created/selected. */\n getThpAppSessionId(): string | undefined {\n if (!this.thpAppSessionActive || !this.thpState) return undefined;\n return this.thpState.sessionId.toString('hex');\n }\n\n private async ensureThpApplicationSession(deriveCardano: boolean) {\n if (!this.thpState || this.thpAppSessionActive) return;\n await this.createThpAppSession(deriveCardano);\n }\n\n private async handleButtonRequest(payload: Record<string, unknown>): Promise<void> {\n this.log('info', 'session.button.request', {\n code: payload.code,\n name: payload.name,\n });\n await this.thpOptions?.onButtonRequest?.(payload);\n }\n\n private async handlePinMatrixRequest(payload: TrezorPinMatrixRequestPayload): Promise<string> {\n this.log('info', 'session.pin.request', { type: payload.type });\n const handler = this.thpOptions?.onPinMatrixRequest;\n if (!handler) {\n throw new Error('Trezor PIN request requires a UI response handler');\n }\n\n try {\n const pin = await handler(payload);\n if (typeof pin !== 'string') {\n throw new Error('Trezor PIN response must be a string');\n }\n return pin;\n } catch (error) {\n await this.cancelCurrentCall().catch(() => undefined);\n throw error;\n }\n }\n\n private async handlePassphraseRequest(\n payload: Record<string, unknown>,\n ): Promise<{ passphrase?: string; on_device?: boolean }> {\n this.log('info', 'session.passphrase.request', {\n keys: Object.keys(payload ?? {}),\n });\n const handler = this.thpOptions?.onPassphraseRequest;\n if (!handler) {\n throw new Error('Trezor passphrase request requires a UI response handler');\n }\n try {\n const res = await handler(payload);\n return res ?? { passphrase: '' };\n } catch (error) {\n await this.cancelCurrentCall().catch(() => undefined);\n throw error;\n }\n }\n\n private async cancelCurrentCall(): Promise<void> {\n if (!this.core) return;\n await this.core.call('Cancel', {}, { thpState: this.thpState });\n }\n\n private log(level: TrezorDebugLogLevel, event: string, data?: Record<string, unknown>) {\n emitDebugLog(this.thpOptions, level, 'trezor-core', event, data);\n }\n}\n\nclass TrezorThpSession {\n private readonly core: TrezorCoreLike;\n private readonly thpState: InternalThpState;\n private readonly chunkSize: number;\n private readonly options: TrezorThpSessionOptions;\n\n constructor(\n core: TrezorCoreLike,\n thpState: InternalThpState,\n chunkSize: number,\n options: TrezorThpSessionOptions = {},\n ) {\n this.core = core;\n this.thpState = thpState;\n this.chunkSize = chunkSize;\n this.options = options;\n }\n\n async initialize({ tryToUnlock = 0 }: { tryToUnlock?: 0 | 1 } = {}) {\n this.log('info', 'thp.session.start', { tryToUnlock });\n await this.createChannel();\n await this.handshake(tryToUnlock);\n\n if (this.thpState.phase === 'pairing') {\n await this.pair();\n }\n\n if (this.thpState.phase !== 'paired') {\n throw new Error('THP pairing is required before GetFeatures');\n }\n this.log('info', 'thp.session.done', { phase: this.thpState.phase });\n }\n\n private async createChannel() {\n this.log('info', 'thp.createChannel.start');\n const nonce = this.randomBytes(8);\n this.thpState.setChannel(protocolThpRuntime.constants.THP_DEFAULT_CHANNEL);\n const response = expectMessage(\n await this.thpCall('ThpCreateChannelRequest', { nonce }),\n 'ThpCreateChannelResponse',\n );\n const channel = response.message.channel as Buffer;\n const handshakeHash = response.message.handshakeHash as Buffer;\n const responseNonce = response.message.nonce as Buffer;\n const properties = response.message.properties as internalProtocolThp.ThpDeviceProperties;\n\n if (!bytesEqual(responseNonce, nonce)) {\n throw new Error('THP channel nonce mismatch');\n }\n\n const pairingMethods = getPairingMethods(\n properties.pairing_methods,\n this.options.pairingMethods ?? ['CodeEntry', 'QrCode', 'NFC', 'SkipPairing'],\n );\n if (pairingMethods.length === 0) {\n throw new Error('No compatible THP pairing method');\n }\n\n this.thpState.setChannel(channel);\n this.thpState.setThpProperties(properties);\n this.thpState.updateHandshakeCredentials({\n pairingMethods,\n handshakeHash,\n });\n this.log('info', 'thp.createChannel.done', {\n channel: bytesToHex(channel),\n deviceMethods: properties.pairing_methods,\n compatibleMethods: pairingMethods,\n protocolVersion: `${properties.protocol_version_major}.${properties.protocol_version_minor}`,\n internalModel: properties.internal_model,\n });\n }\n\n private async handshake(tryToUnlock: 0 | 1 = 0) {\n this.log('info', 'thp.handshake.start', {\n knownCredentials: this.options.knownCredentials?.length ?? 0,\n tryToUnlock,\n });\n const hostEphemeralKeys = protocolThpRuntime.getCurve25519KeyPair(this.randomBytes(32));\n const handshakeInit = expectMessage(\n await this.thpCall('ThpHandshakeInitRequest', {\n key: hostEphemeralKeys.publicKey,\n tryToUnlock,\n }),\n 'ThpHandshakeInitResponse',\n );\n const handshakeCredentials = this.options.handleHandshakeInit\n ? this.options.handleHandshakeInit({\n handshakeInitResponse: handshakeInit.message as TrezorThpHandshakeInitResponse,\n thpState: this.thpState as TrezorThpState,\n hostEphemeralKeys,\n knownCredentials: this.options.knownCredentials ?? [],\n tryToUnlock,\n protobufEncoder: (name: string, data: Record<string, unknown>) =>\n protobufManager.encode(name, data),\n })\n : protocolThpRuntime.handleHandshakeInit({\n handshakeInitResponse: handshakeInit.message as internalProtocolThp.ThpHandshakeInitResponse,\n thpState: this.thpState,\n hostEphemeralKeys,\n knownCredentials:\n (this.options.knownCredentials as internalProtocolThp.ThpCredentials[] | undefined) ??\n [],\n tryToUnlock,\n protobufEncoder: (name: string, data: Record<string, unknown>) =>\n protobufManager.encode(name, data),\n });\n\n this.thpState.updateHandshakeCredentials({\n trezorEncryptedStaticPubkey: handshakeCredentials.trezorEncryptedStaticPubkey,\n hostEncryptedStaticPubkey: handshakeCredentials.hostEncryptedStaticPubkey,\n handshakeHash: handshakeCredentials.handshakeHash,\n trezorKey: handshakeCredentials.trezorKey,\n hostKey: handshakeCredentials.hostKey,\n staticKey: handshakeCredentials.staticKey,\n hostStaticPublicKey: handshakeCredentials.hostStaticKeys.publicKey,\n });\n this.thpState.setPairingCredentials(\n handshakeCredentials.allCredentials as internalProtocolThp.ThpCredentials[],\n );\n\n const completion = expectMessage(\n await this.thpCall('ThpHandshakeCompletionRequest', {\n hostPubkey: handshakeCredentials.hostEncryptedStaticPubkey,\n encryptedPayload: handshakeCredentials.encryptedPayload,\n }),\n 'ThpHandshakeCompletionResponse',\n );\n\n const completionState = completion.message.state as number;\n this.thpState.setIsPaired(completionState !== 0);\n this.thpState.setPhase('pairing');\n this.log('info', 'thp.handshake.done', {\n completionState,\n isPaired: this.thpState.isPaired,\n isAutoconnectPaired: this.thpState.isAutoconnectPaired,\n credentials: handshakeCredentials.allCredentials.length,\n });\n if (this.thpState.isAutoconnectPaired || completionState === 2) {\n await this.endPairing();\n }\n }\n\n private async pair() {\n this.log('info', 'thp.pair.start', {\n isPaired: this.thpState.isPaired,\n pairingMethod: this.thpState.pairingMethod,\n });\n if (this.thpState.isPaired && this.thpState.pairingMethod !== protocolThpRuntime.ThpPairingMethod.SkipPairing) {\n await this.getCredentials(false);\n await this.endPairing();\n return;\n }\n\n const selectedMethod = this.thpState.handshakeCredentials!.pairingMethods[0];\n this.thpState.setPairingMethod(selectedMethod);\n this.log('info', 'thp.pair.methodSelected', { selectedMethod });\n await this.thpCall('ThpPairingRequest', {\n host_name: sanitizeString(this.options.hostName) || 'Unknown hostName',\n app_name: sanitizeString(this.options.appName) || 'Unknown appName',\n });\n const selectMethod = await this.thpCall('ThpSelectMethod', {\n selected_pairing_method: selectedMethod,\n });\n\n if (selectMethod.type === 'ThpEndResponse') {\n this.thpState.setIsPaired(true);\n this.thpState.setPhase('paired');\n this.log('info', 'thp.pair.done', { responseType: selectMethod.type });\n return;\n }\n\n if (selectMethod.type === 'ThpCodeEntryCommitment') {\n try {\n await this.finishCodeEntryPairing(selectMethod.message);\n } catch (error) {\n // A device Failure here means CodeEntry pairing didn't match —\n // e.g. the user mistyped the code shown on the device, so the\n // CPace tag was rejected (\"Unexpected Code Entry Tag\"). Re-tag\n // with a stable marker so the adapter maps it to a standard\n // HardwareErrorCode.ThpPairingFailed instead of a generic Unknown.\n this.log('error', 'thp.codeEntry.error', { error: errorToLog(error) });\n const errMessage = error instanceof Error ? error.message : String(error);\n throw Object.assign(new Error(errMessage), {\n code: 'ThpPairingFailed',\n cause: error,\n });\n }\n } else {\n throw new Error(`Unsupported THP pairing response: ${selectMethod.type}`);\n }\n\n const credentials = await this.getCredentials(false);\n this.thpState.setPairingCredentials([credentials]);\n this.thpState.setIsPaired(true);\n await this.endPairing();\n this.log('info', 'thp.pair.done', { credentials: 1 });\n await this.options.onPairingCredentialsChanged?.({\n credentials: this.thpState.pairingCredentials as TrezorThpCredentials[],\n });\n }\n\n private async finishCodeEntryPairing(message: Record<string, unknown>) {\n this.log('info', 'thp.codeEntry.start', { messageKeys: Object.keys(message) });\n const codeEntryChallenge = this.randomBytes(32);\n this.thpState.updateHandshakeCredentials({\n handshakeCommitment: Buffer.from(String(message.commitment), 'hex'),\n codeEntryChallenge,\n });\n const codeEntryCpace = expectMessage(\n await this.thpCall('ThpCodeEntryChallenge', {\n challenge: bytesToHex(codeEntryChallenge),\n }),\n 'ThpCodeEntryCpaceTrezor',\n );\n this.thpState.updateHandshakeCredentials({\n trezorCpacePublicKey: Buffer.from(String(codeEntryCpace.message.cpace_trezor_public_key), 'hex'),\n });\n const response = await this.requestPairingTag();\n if (!('tag' in response)) {\n throw new Error('THP CodeEntry pairing requires a tag');\n }\n this.log('info', 'thp.codeEntry.tagReceived', { tagLength: response.tag.length });\n\n const hostKeys = protocolThpRuntime.getCpaceHostKeys(\n Buffer.from(response.tag, 'ascii'),\n this.thpState.handshakeCredentials!.handshakeHash,\n );\n const tag = bytesToHex(\n protocolThpRuntime.getSharedSecret(\n this.thpState.handshakeCredentials!.trezorCpacePublicKey,\n hostKeys.privateKey,\n ),\n );\n const secret = expectMessage(\n await this.thpCall('ThpCodeEntryCpaceHostTag', {\n tag,\n cpace_host_public_key: bytesToHex(hostKeys.publicKey),\n }),\n 'ThpCodeEntrySecret',\n );\n protocolThpRuntime.validateCodeEntryTag(\n this.thpState.handshakeCredentials!,\n response.tag,\n String(secret.message.secret),\n );\n this.log('info', 'thp.codeEntry.done');\n }\n\n private async getCredentials(autoconnect: boolean): Promise<internalProtocolThp.ThpCredentials> {\n this.log('info', 'thp.credentials.start', { autoconnect });\n const response = expectMessage(\n await this.thpCall('ThpCredentialRequest', {\n autoconnect,\n host_static_public_key: bytesToHex(this.thpState.handshakeCredentials!.hostStaticPublicKey),\n credential: this.thpState.pairingCredentials[0]?.credential,\n }),\n 'ThpCredentialResponse',\n );\n\n const credentials = {\n ...response.message,\n autoconnect,\n host_static_key: bytesToHex(this.thpState.handshakeCredentials!.staticKey),\n } as internalProtocolThp.ThpCredentials;\n this.log('info', 'thp.credentials.done', { autoconnect });\n return credentials;\n }\n\n private async endPairing() {\n this.log('info', 'thp.endPairing.start');\n await this.thpCall('ThpEndRequest', {});\n this.thpState.setPhase('paired');\n this.log('info', 'thp.endPairing.done');\n }\n\n private async thpCall(\n name: string,\n data: Record<string, unknown>,\n ): Promise<{ type: string; message: Record<string, unknown> }> {\n this.log('debug', 'thp.call.request', { name, dataKeys: Object.keys(data) });\n if (name === 'ThpCreateChannelRequest') {\n this.logThpWirePreview(name, data);\n }\n let response: { type: string; message: Record<string, unknown> };\n try {\n response = await this.core.call(name, data, { thpState: this.thpState });\n } catch (error) {\n this.log('error', 'thp.call.error', { name, error: errorToLog(error) });\n throw error;\n }\n this.log('debug', 'thp.call.response', {\n name,\n responseType: response.type,\n messageKeys: Object.keys(response.message ?? {}),\n });\n if (response.type === 'ButtonRequest') {\n this.log('info', 'thp.button.request', { messageKeys: Object.keys(response.message ?? {}) });\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] wire.ButtonRequest from device (real protobuf message)', {\n callName: name,\n code: (response.message as { code?: string })?.code,\n messageKeys: Object.keys(response.message ?? {}),\n });\n await this.options.onButtonRequest?.(response.message);\n return this.thpCall('ButtonAck', {});\n }\n if (response.type === 'Failure' || response.type === 'ThpError') {\n this.log('error', 'thp.call.failure', { name, responseType: response.type, message: response.message });\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] wire.Failure/ThpError from device', {\n callName: name,\n responseType: response.type,\n code: (response.message as { code?: string })?.code,\n });\n // Surface the device-side `code` (e.g. 'ThpDeviceLocked', 'Failure_InvalidProtocol')\n // so the outer initializeThp() can dispatch on it — trezor-suite's swallow-\n // and-retry-with-tryToUnlock logic only works if you can tell ThpDeviceLocked\n // apart from a generic THP transport error.\n const code = (response.message as { code?: string } | undefined)?.code ?? response.type;\n const msg = String(response.message.message ?? code);\n throw Object.assign(new Error(msg), { code, response });\n }\n return response;\n }\n\n private logThpWirePreview(name: string, data: Record<string, unknown>) {\n try {\n const message = protocolThpRuntime.encode({\n messageName: name,\n data,\n thpState: this.thpState,\n protobufEncoder: (messageName, messageData) =>\n protobufManager.encode(messageName, messageData),\n });\n const messageHex = bytesToHex(message);\n const messageBytes = messageHex.length / 2;\n const firstChunkBytes = Math.max(this.chunkSize, messageBytes);\n this.log('debug', 'thp.call.wire', {\n name,\n bytes: messageBytes,\n chunkSize: this.chunkSize,\n firstChunkBytes,\n packetHex: messageHex,\n });\n } catch (error) {\n this.log('warn', 'thp.call.wire.error', { name, error: errorToLog(error) });\n }\n }\n\n private async requestPairingTag(): Promise<TrezorThpPairingResponse> {\n if (!this.options.onPairingRequest) {\n throw new Error('THP pairing requires UI response');\n }\n\n this.log('info', 'thp.pairingTag.request', {\n availableMethods: this.thpState.handshakeCredentials!.pairingMethods,\n selectedMethod: this.thpState.pairingMethod!,\n hasNfcData: Boolean(this.thpState.nfcData),\n });\n return this.options.onPairingRequest({\n availableMethods: this.thpState.handshakeCredentials!.pairingMethods,\n selectedMethod: this.thpState.pairingMethod!,\n nfcData: this.thpState.nfcData ? bytesToHex(this.thpState.nfcData) : undefined,\n });\n }\n\n private randomBytes(size: number) {\n if (this.options.randomBytes) return this.options.randomBytes(size);\n\n const bytes = new Uint8Array(size);\n const cryptoApi = globalThis.crypto;\n if (!cryptoApi?.getRandomValues) {\n throw new Error('Secure random source is unavailable');\n }\n cryptoApi.getRandomValues(bytes);\n return Buffer.from(bytes);\n }\n\n private log(level: TrezorDebugLogLevel, event: string, data?: Record<string, unknown>) {\n emitDebugLog(this.options, level, 'trezor-core', event, data);\n }\n}\n\nfunction expectMessage<T extends string>(\n response: { type: string; message: Record<string, unknown> },\n type: T,\n): { type: T; message: Record<string, unknown> } {\n if (response.type !== type) {\n throw new Error(`Expected ${type} response, received ${response.type}`);\n }\n return response as { type: T; message: Record<string, unknown> };\n}\n\nfunction getPairingMethods(\n deviceMethods: TrezorThpPairingMethod[],\n settingsMethods: TrezorThpPairingMethod[],\n) {\n return deviceMethods.flatMap(method => {\n const value = protocolThpRuntime.getThpPairingMethod(method);\n return settingsMethods.some(setting => value === protocolThpRuntime.getThpPairingMethod(setting))\n ? [value]\n : [];\n });\n}\n\nfunction sanitizeString(value?: string) {\n return typeof value === 'string' ? value.replace(/[^\\w .-]/g, '').slice(0, 32) : '';\n}\n\nfunction shouldCreateThpApplicationSession(name: string) {\n return name !== 'GetFeatures' && !THP_CONTROL_METHODS.has(name);\n}\n\n// Events promoted to console with a uniform `[TREZOR]` prefix so DevTools\n// search (\"TREZOR\") shows only the SDK's THP lifecycle in noisy multi-page\n// extension logs. Keep the list short — every entry is something you'd\n// look at while debugging a stuck handshake / unexpected message.\nconst TREZOR_CONSOLE_EVENTS: ReadonlySet<string> = new Set([\n 'session.initialize.start',\n 'session.initialize.done',\n 'session.initialize.thp.fallback',\n 'session.initialize.error',\n 'session.method.start',\n 'session.method.error',\n 'thp.initialize.start',\n 'thp.initialize.done',\n 'thp.initialize.error',\n 'thp.initialize.deviceLocked.retry',\n 'thp.initialize.deviceLocked.giveUp',\n 'thp.createChannel.start',\n 'thp.createChannel.done',\n 'thp.handshake.start',\n 'thp.handshake.done',\n 'thp.pair.start',\n 'thp.pair.done',\n 'thp.pair.methodSelected',\n 'thp.endPairing.start',\n 'thp.endPairing.done',\n 'thp.getFeatures.start',\n 'thp.getFeatures.response',\n 'thp.appSession.create.start',\n 'thp.appSession.create.response',\n 'thp.appSession.create.error',\n 'thp.codeEntry.start',\n 'thp.codeEntry.done',\n 'thp.pairingTag.request',\n 'thp.credentials.start',\n 'thp.credentials.done',\n 'thp.button.request',\n]);\n\nfunction emitDebugLog(\n options: TrezorThpSessionOptions | undefined,\n level: TrezorDebugLogLevel,\n scope: string,\n event: string,\n data?: Record<string, unknown>,\n) {\n try {\n options?.logger?.({ level, scope, event, data });\n } catch {\n // Debug logging must not affect protocol execution.\n }\n // Surface a small whitelist of high-signal events to plain console with\n // a fixed prefix. Filter DevTools by \"TREZOR\" to see the THP lifecycle\n // without the surrounding extension noise. Always-on (not gated by\n // logger option) — the structured logger above is separate from this\n // human-debugging channel.\n if (TREZOR_CONSOLE_EVENTS.has(event)) {\n try {\n const tag = `[TREZOR] ${event}`;\n // eslint-disable-next-line no-console\n if (level === 'error') console.error(tag, data ?? '');\n // eslint-disable-next-line no-console\n else if (level === 'warn') console.warn(tag, data ?? '');\n // eslint-disable-next-line no-console\n else console.log(tag, data ?? '');\n } catch {\n // Same guard — never let logging affect protocol execution.\n }\n }\n}\n\nfunction errorToLog(error: unknown) {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n }\n return String(error);\n}\n\nfunction summarizeFeatures(features: Record<string, unknown> | undefined) {\n if (!features) return undefined;\n return {\n vendor: features.vendor,\n device_id: features.device_id,\n model: features.model,\n label: features.label,\n major_version: features.major_version,\n minor_version: features.minor_version,\n patch_version: features.patch_version,\n };\n}\n","import { ProtobufManager } from './manager';\n\nexport { ProtobufManager } from './manager';\nexport const protobufManager = ProtobufManager();\n\nexport * as MessagesSchema from './definitions';\nexport * from './definitions';\nexport type { FailureType, Nonce } from './definitions';\n","import {\n type AnyDesc,\n type DescEnum,\n type DescExtension,\n type DescField,\n type DescMessage,\n ScalarType,\n fromBinary,\n fromJson,\n toBinary,\n toJson,\n} from '@bufbuild/protobuf';\n\nimport type { MessageResponse } from './definitions';\n\nconst patchLongValue = (value: unknown) => {\n if (typeof value === 'number') {\n return value;\n }\n\n const numericValue = Number(value);\n if (typeof value === 'bigint') {\n return Number.isSafeInteger(numericValue) ? numericValue : value.toString();\n }\n\n if (typeof value === 'string') {\n if (Number.isSafeInteger(numericValue)) {\n try {\n if (BigInt(value) === BigInt(numericValue)) {\n return numericValue;\n }\n } catch {\n return value;\n }\n }\n\n return value;\n }\n\n return value;\n};\n\nconst patchFieldForEncode = (field: DescField, value: unknown) => {\n if (value === undefined) {\n return value;\n }\n\n if (field.scalar === ScalarType.STRING) {\n if (typeof value === 'number') {\n return value.toString(); // Features.model\n }\n\n return value;\n }\n\n if (field.scalar === ScalarType.BYTES) {\n // Protobuf bytes fields are represented as hex strings in Suite payloads.\n // Convert to raw bytes before calling fromJson().\n if (typeof value === 'string') {\n return value.length === 0 ? Buffer.alloc(0) : Buffer.from(value, 'hex');\n }\n\n return Buffer.from(value as Uint8Array | number[]);\n }\n\n return value;\n};\n\nconst patchFieldForDecode = (field: DescField, value: unknown) => {\n // [compatibility]: optional undefined keys should be null. Example: Features.fw_major.\n if (value === undefined) {\n return null;\n }\n\n if (field.scalar === ScalarType.BYTES) {\n // Keep backward compatibility: consumers expect bytes as lower-level hex strings.\n if (typeof value === 'string') {\n return Buffer.from(value, 'base64').toString('hex');\n }\n\n return Buffer.from(value as Uint8Array | number[]).toString('hex');\n }\n\n if (field.scalar === ScalarType.UINT32 || field.scalar === ScalarType.SINT32) {\n return Number(value);\n }\n\n if (\n field.scalar === ScalarType.INT64 ||\n field.scalar === ScalarType.UINT64 ||\n field.scalar === ScalarType.SINT64 ||\n field.scalar === ScalarType.FIXED64 ||\n field.scalar === ScalarType.SFIXED64\n ) {\n return patchLongValue(value);\n }\n\n return value;\n};\n\nconst transformSchemaFields = (\n operation: 'encode' | 'decode',\n schema: DescMessage,\n sourceData: Record<string, unknown> | undefined,\n) => {\n const transformedData: Record<string, unknown> = {};\n const transformField = operation === 'encode' ? patchFieldForEncode : patchFieldForDecode;\n\n schema.fields.forEach(schemaField => {\n const fieldValue = sourceData?.[schemaField.name];\n\n if (schemaField.fieldKind === 'list') {\n if (!Array.isArray(fieldValue)) {\n transformedData[schemaField.name] = [];\n } else if (schemaField.listKind === 'message') {\n transformedData[schemaField.name] = fieldValue.map(item =>\n transformSchemaFields(\n operation,\n schemaField.message,\n item as Record<string, unknown> | undefined,\n ),\n );\n } else if (schemaField.listKind === 'scalar') {\n transformedData[schemaField.name] = fieldValue.map(item =>\n transformField(schemaField, item),\n );\n } else {\n transformedData[schemaField.name] = fieldValue; // enum\n }\n } else if (schemaField.fieldKind === 'message') {\n if (!fieldValue) {\n // [compatibility]: protobufjs decode returns {} for absent optional message fields.\n transformedData[schemaField.name] = operation === 'decode' ? {} : undefined;\n } else {\n transformedData[schemaField.name] = transformSchemaFields(\n operation,\n schemaField.message,\n fieldValue as Record<string, unknown>,\n );\n }\n } else if (schemaField.fieldKind === 'scalar') {\n transformedData[schemaField.name] = transformField(schemaField, fieldValue);\n } else if (schemaField.fieldKind === 'enum') {\n transformedData[schemaField.name] = fieldValue;\n } else {\n transformedData[schemaField.name] = fieldValue; // map\n }\n\n if (transformedData[schemaField.name] === undefined) {\n delete transformedData[schemaField.name];\n }\n });\n\n return transformedData;\n};\n\nexport const ProtobufManager = () => {\n const messages: Record<string, DescMessage | undefined> = {};\n const extensions: Record<string, DescExtension | undefined> = {};\n const enums: Record<string, DescEnum | undefined> = {};\n\n const load = (modules: Record<string, AnyDesc> | Record<string, AnyDesc>[]) => {\n if (Array.isArray(modules)) {\n modules.forEach(m => load(m));\n } else {\n Object.keys(modules).forEach(key => {\n const def = modules[key];\n if (def.kind && def.kind !== 'file') {\n if (def.kind === 'message') {\n messages[key] = def;\n } else if (def.kind === 'extension') {\n extensions[key] = def;\n } else if (def.kind === 'enum') {\n enums[def.name] = def;\n }\n }\n });\n }\n };\n\n // (wire_type) is a custom option this is why it is to be found in '$unknown' options\n // as { no: option_id, data: Uint8Array }\n const getWireTypeOverride = (schema: AnyDesc) => {\n const unknownOptions = schema.proto.options?.['$unknown'] ?? [];\n if (unknownOptions.length === 0) {\n return;\n }\n\n const wireTypeExtension = extensions['wire_type'];\n const wireTypeOption = unknownOptions.find(o => o.no === wireTypeExtension?.number);\n\n return wireTypeOption ? wireTypeOption.data[0] : undefined;\n };\n\n const findEnum = (enumName: string) => enums[enumName];\n\n const findSchema = (nameOrId: number | string) => {\n const messageTypeEnum = findEnum('MessageType');\n const thpMessageTypeEnum = findEnum('ThpMessageType');\n\n if (typeof nameOrId === 'string') {\n const schemaKey = `${nameOrId}Schema`;\n const schema = messages[schemaKey];\n\n if (!schema) {\n throw new Error(`Schema ${nameOrId} not found`);\n }\n\n // Try to find message type enum value\n // -1 is expected for ThpMessageType and other non-standard messages\n let messageType = -1;\n if (thpMessageTypeEnum) {\n const thpEnum = thpMessageTypeEnum.values.find(\n k => k.name === 'ThpMessageType_' + schema.name,\n );\n if (thpEnum) {\n messageType = thpEnum.number;\n }\n }\n\n if (messageType === -1 && messageTypeEnum) {\n const mtEnum = messageTypeEnum.values.find(\n k => k.name === 'MessageType_' + schema.name,\n );\n if (mtEnum) {\n messageType = mtEnum.number;\n }\n }\n\n return {\n schema,\n messageType: getWireTypeOverride(schema) || messageType,\n messageName: nameOrId,\n };\n }\n\n // Lookup by numeric ID\n let matchedMessageType = messageTypeEnum?.value[nameOrId];\n if (!matchedMessageType && thpMessageTypeEnum) {\n matchedMessageType = thpMessageTypeEnum.value[nameOrId];\n }\n\n if (!matchedMessageType) {\n throw new Error(\n `MessageType with ID ${nameOrId} not found. Check MessageType and ThpMessageType enums.`,\n );\n }\n\n const messageName = matchedMessageType.name\n .replace('ThpMessageType_', '')\n .replace('MessageType_', '');\n const schemaKey = messageName + 'Schema';\n const schema = messages[schemaKey];\n\n if (!schema) {\n throw new Error(\n `Schema \"${messageName}\" (from ID ${nameOrId}) not found. Available: ${Object.keys(messages).length}`,\n );\n }\n\n return {\n schema,\n messageType: getWireTypeOverride(schema) || nameOrId,\n messageName,\n };\n };\n\n const encode = (messageName: string, data: Record<string, unknown>) => {\n const { schema, messageType } = findSchema(messageName);\n\n const normalizedPayload = transformSchemaFields('encode', schema, data);\n let messageJson: ReturnType<typeof fromJson>;\n let encodedBytes: Uint8Array;\n try {\n messageJson = fromJson(schema, normalizedPayload as Parameters<typeof fromJson>[1]);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] protobuf.encode.fromJson FAILED', {\n messageName,\n inputData: data,\n normalizedPayload,\n error: (err as Error).message,\n });\n throw err;\n }\n try {\n encodedBytes = toBinary(schema, messageJson);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] protobuf.encode.toBinary FAILED', {\n messageName,\n messageJson,\n error: (err as Error).message,\n });\n throw err;\n }\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] protobuf.encode.ok', {\n messageName,\n messageType,\n inputDataKeys: Object.keys(data),\n normalizedKeys: Object.keys(normalizedPayload),\n jsonKeys: typeof messageJson === 'object' && messageJson ? Object.keys(messageJson) : [],\n outputBytes: encodedBytes.length,\n outputHex: Buffer.from(encodedBytes).toString('hex'),\n });\n\n return {\n messageType,\n message: Buffer.from(encodedBytes),\n };\n };\n\n const decode = (type: string | number, data: Buffer | Uint8Array) => {\n const { schema, messageName } = findSchema(type);\n const binaryPayload = Buffer.isBuffer(data) ? data : Buffer.from(data);\n\n // FW issue: THP codec_v1 sends Failure_InvalidProtocol as 20 bytes instead of 2\n // https://github.com/trezor/trezor-firmware/pull/6549\n const patchedPayload =\n messageName === 'Failure' &&\n binaryPayload.subarray(0, 2).compare(Buffer.from('0811', 'hex')) === 0\n ? binaryPayload.subarray(0, 2)\n : binaryPayload;\n\n let decoded: ReturnType<typeof fromBinary>;\n try {\n decoded = fromBinary(schema, patchedPayload, { readUnknownFields: false });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] protobuf.decode.fromBinary FAILED', {\n messageName,\n type,\n inputHex: binaryPayload.toString('hex'),\n error: (err as Error).message,\n });\n throw err;\n }\n const json = toJson(schema, decoded, { useProtoFieldName: true });\n const message = transformSchemaFields('decode', schema, json as Record<string, unknown>);\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] protobuf.decode.ok', {\n messageName,\n type,\n inputBytes: binaryPayload.length,\n inputHex: binaryPayload.toString('hex'),\n outputKeys: typeof message === 'object' && message ? Object.keys(message) : [],\n });\n\n return {\n type: messageName,\n message,\n } as MessageResponse;\n };\n\n return {\n load,\n findSchema,\n findEnum,\n encode,\n decode,\n };\n};\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nexport * from \"./types.js\";\nexport * from \"./is-message.js\";\nexport * from \"./create.js\";\nexport * from \"./clone.js\";\nexport * from \"./descriptors.js\";\nexport * from \"./equals.js\";\nexport * from \"./fields.js\";\nexport * from \"./registry.js\";\nexport { toBinary } from \"./to-binary.js\";\nexport { fromBinary, mergeFromBinary } from \"./from-binary.js\";\nexport * from \"./to-json.js\";\nexport * from \"./from-json.js\";\nexport * from \"./merge.js\";\nexport { hasExtension, getExtension, setExtension, clearExtension, hasOption, getOption, } from \"./extensions.js\";\nexport * from \"./proto-int64.js\";\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Determine whether the given `arg` is a message.\n * If `desc` is set, determine whether `arg` is this specific message.\n */\nexport function isMessage(arg, schema) {\n const isMessage = arg !== null &&\n typeof arg == \"object\" &&\n \"$typeName\" in arg &&\n typeof arg.$typeName == \"string\";\n if (!isMessage) {\n return false;\n }\n if (schema === undefined) {\n return true;\n }\n return schema.typeName === arg.$typeName;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { isMessage } from \"./is-message.js\";\nimport { ScalarType, } from \"./descriptors.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { isObject } from \"./reflect/guard.js\";\nimport { unsafeGet, unsafeOneofCase, unsafeSet } from \"./reflect/unsafe.js\";\nimport { isWrapperDesc } from \"./wkt/wrappers.js\";\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;\nconst EDITION_PROTO3 = 999;\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;\nconst EDITION_PROTO2 = 998;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n/**\n * Create a new message instance.\n *\n * The second argument is an optional initializer object, where all fields are\n * optional.\n */\nexport function create(schema, init) {\n if (isMessage(init, schema)) {\n return init;\n }\n const message = createZeroMessage(schema);\n if (init !== undefined) {\n initMessage(schema, message, init);\n }\n return message;\n}\n/**\n * Sets field values from a MessageInitShape on a zero message.\n */\nfunction initMessage(messageDesc, message, init) {\n for (const member of messageDesc.members) {\n let value = init[member.localName];\n if (value == null) {\n // intentionally ignore undefined and null\n continue;\n }\n let field;\n if (member.kind == \"oneof\") {\n const oneofField = unsafeOneofCase(init, member);\n if (!oneofField) {\n continue;\n }\n field = oneofField;\n value = unsafeGet(init, oneofField);\n }\n else {\n field = member;\n }\n switch (field.fieldKind) {\n case \"message\":\n value = toMessage(field, value);\n break;\n case \"scalar\":\n value = initScalar(field, value);\n break;\n case \"list\":\n value = initList(field, value);\n break;\n case \"map\":\n value = initMap(field, value);\n break;\n }\n unsafeSet(message, field, value);\n }\n return message;\n}\nfunction initScalar(field, value) {\n if (field.scalar == ScalarType.BYTES) {\n return toU8Arr(value);\n }\n return value;\n}\nfunction initMap(field, value) {\n if (isObject(value)) {\n if (field.scalar == ScalarType.BYTES) {\n return convertObjectValues(value, toU8Arr);\n }\n if (field.mapKind == \"message\") {\n return convertObjectValues(value, (val) => toMessage(field, val));\n }\n }\n return value;\n}\nfunction initList(field, value) {\n if (Array.isArray(value)) {\n if (field.scalar == ScalarType.BYTES) {\n return value.map(toU8Arr);\n }\n if (field.listKind == \"message\") {\n return value.map((item) => toMessage(field, item));\n }\n }\n return value;\n}\nfunction toMessage(field, value) {\n if (field.fieldKind == \"message\" &&\n !field.oneof &&\n isWrapperDesc(field.message)) {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n return initScalar(field.message.fields[0], value);\n }\n if (isObject(value)) {\n if (field.message.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName !== \"google.protobuf.Value\") {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n return value;\n }\n if (!isMessage(value, field.message)) {\n return create(field.message, value);\n }\n }\n return value;\n}\n// converts any ArrayLike<number> to Uint8Array if necessary.\nfunction toU8Arr(value) {\n return Array.isArray(value) ? new Uint8Array(value) : value;\n}\nfunction convertObjectValues(obj, fn) {\n const ret = {};\n for (const entry of Object.entries(obj)) {\n ret[entry[0]] = fn(entry[1]);\n }\n return ret;\n}\nconst tokenZeroMessageField = Symbol();\nconst messagePrototypes = new WeakMap();\n/**\n * Create a zero message.\n */\nfunction createZeroMessage(desc) {\n let msg;\n if (!needsPrototypeChain(desc)) {\n msg = {\n $typeName: desc.typeName,\n };\n for (const member of desc.members) {\n if (member.kind == \"oneof\" || member.presence == IMPLICIT) {\n msg[member.localName] = createZeroField(member);\n }\n }\n }\n else {\n // Support default values and track presence via the prototype chain\n const cached = messagePrototypes.get(desc);\n let prototype;\n let members;\n if (cached) {\n ({ prototype, members } = cached);\n }\n else {\n prototype = {};\n members = new Set();\n for (const member of desc.members) {\n if (member.kind == \"oneof\") {\n // we can only put immutable values on the prototype,\n // oneof ADTs are mutable\n continue;\n }\n if (member.fieldKind != \"scalar\" && member.fieldKind != \"enum\") {\n // only scalar and enum values are immutable, map, list, and message\n // are not\n continue;\n }\n if (member.presence == IMPLICIT) {\n // implicit presence tracks field presence by zero values - e.g. 0, false, \"\", are unset, 1, true, \"x\" are set.\n // message, map, list fields are mutable, and also have IMPLICIT presence.\n continue;\n }\n members.add(member);\n prototype[member.localName] = createZeroField(member);\n }\n messagePrototypes.set(desc, { prototype, members });\n }\n msg = Object.create(prototype);\n msg.$typeName = desc.typeName;\n for (const member of desc.members) {\n if (members.has(member)) {\n continue;\n }\n if (member.kind == \"field\") {\n if (member.fieldKind == \"message\") {\n continue;\n }\n if (member.fieldKind == \"scalar\" || member.fieldKind == \"enum\") {\n if (member.presence != IMPLICIT) {\n continue;\n }\n }\n }\n msg[member.localName] = createZeroField(member);\n }\n }\n return msg;\n}\n/**\n * Do we need the prototype chain to track field presence?\n */\nfunction needsPrototypeChain(desc) {\n switch (desc.file.edition) {\n case EDITION_PROTO3:\n // proto3 always uses implicit presence, we never need the prototype chain.\n return false;\n case EDITION_PROTO2:\n // proto2 never uses implicit presence, we always need the prototype chain.\n return true;\n default:\n // If a message uses scalar or enum fields with explicit presence, we need\n // the prototype chain to track presence. This rule does not apply to fields\n // in a oneof group - they use a different mechanism to track presence.\n return desc.fields.some((f) => f.presence != IMPLICIT && f.fieldKind != \"message\" && !f.oneof);\n }\n}\n/**\n * Returns a zero value for oneof groups, and for every field kind except\n * messages. Scalar and enum fields can have default values.\n */\nfunction createZeroField(field) {\n if (field.kind == \"oneof\") {\n return { case: undefined };\n }\n if (field.fieldKind == \"list\") {\n return [];\n }\n if (field.fieldKind == \"map\") {\n return {}; // Object.create(null) would be desirable here, but is unsupported by react https://react.dev/reference/react/use-server#serializable-parameters-and-return-values\n }\n if (field.fieldKind == \"message\") {\n return tokenZeroMessageField;\n }\n const defaultValue = field.getDefaultValue();\n if (defaultValue !== undefined) {\n return field.fieldKind == \"scalar\" && field.longAsString\n ? defaultValue.toString()\n : defaultValue;\n }\n return field.fieldKind == \"scalar\"\n ? scalarZeroValue(field.scalar, field.longAsString)\n : field.enum.values[0].number;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Scalar value types. This is a subset of field types declared by protobuf\n * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE\n * are omitted, but the numerical values are identical.\n */\nexport var ScalarType;\n(function (ScalarType) {\n // 0 is reserved for errors.\n // Order is weird for historical reasons.\n ScalarType[ScalarType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n ScalarType[ScalarType[\"FLOAT\"] = 2] = \"FLOAT\";\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n // negative values are likely.\n ScalarType[ScalarType[\"INT64\"] = 3] = \"INT64\";\n ScalarType[ScalarType[\"UINT64\"] = 4] = \"UINT64\";\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n // negative values are likely.\n ScalarType[ScalarType[\"INT32\"] = 5] = \"INT32\";\n ScalarType[ScalarType[\"FIXED64\"] = 6] = \"FIXED64\";\n ScalarType[ScalarType[\"FIXED32\"] = 7] = \"FIXED32\";\n ScalarType[ScalarType[\"BOOL\"] = 8] = \"BOOL\";\n ScalarType[ScalarType[\"STRING\"] = 9] = \"STRING\";\n // Tag-delimited aggregate.\n // Group type is deprecated and not supported in proto3. However, Proto3\n // implementations should still be able to parse the group wire format and\n // treat group fields as unknown fields.\n // TYPE_GROUP = 10,\n // TYPE_MESSAGE = 11, // Length-delimited aggregate.\n // New in version 2.\n ScalarType[ScalarType[\"BYTES\"] = 12] = \"BYTES\";\n ScalarType[ScalarType[\"UINT32\"] = 13] = \"UINT32\";\n // TYPE_ENUM = 14,\n ScalarType[ScalarType[\"SFIXED32\"] = 15] = \"SFIXED32\";\n ScalarType[ScalarType[\"SFIXED64\"] = 16] = \"SFIXED64\";\n ScalarType[ScalarType[\"SINT32\"] = 17] = \"SINT32\";\n ScalarType[ScalarType[\"SINT64\"] = 18] = \"SINT64\";\n})(ScalarType || (ScalarType = {}));\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { ScalarType } from \"../descriptors.js\";\n/**\n * Returns true if both scalar values are equal.\n */\nexport function scalarEquals(type, a, b) {\n if (a === b) {\n // This correctly matches equal values except BYTES and (possibly) 64-bit integers.\n return true;\n }\n // Special case BYTES - we need to compare each byte individually\n if (type == ScalarType.BYTES) {\n if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n // Special case 64-bit integers - we support number, string and bigint representation.\n switch (type) {\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // Loose comparison will match between 0n, 0 and \"0\".\n return a == b;\n }\n // Anything that hasn't been caught by strict comparison or special cased\n // BYTES and 64-bit integers is not equal.\n return false;\n}\n/**\n * Returns the zero value for the given scalar type.\n */\nexport function scalarZeroValue(type, longAsString) {\n switch (type) {\n case ScalarType.STRING:\n return \"\";\n case ScalarType.BOOL:\n return false;\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n return 0.0;\n case ScalarType.INT64:\n case ScalarType.UINT64:\n case ScalarType.SFIXED64:\n case ScalarType.FIXED64:\n case ScalarType.SINT64:\n return (longAsString ? \"0\" : protoInt64.zero);\n case ScalarType.BYTES:\n return new Uint8Array(0);\n default:\n // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.\n // We do not use individual cases to save a few bytes code size.\n return 0;\n }\n}\n/**\n * Returns true for a zero-value. For example, an integer has the zero-value `0`,\n * a boolean is `false`, a string is `\"\"`, and bytes is an empty Uint8Array.\n *\n * In proto3, zero-values are not written to the wire, unless the field is\n * optional or repeated.\n */\nexport function isScalarZeroValue(type, value) {\n switch (type) {\n case ScalarType.BOOL:\n return value === false;\n case ScalarType.STRING:\n return value === \"\";\n case ScalarType.BYTES:\n return value instanceof Uint8Array && !value.byteLength;\n default:\n return value == 0; // Loose comparison matches 0n, 0 and \"0\"\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./wire/varint.js\";\n/**\n * Int64Support for the current environment.\n */\nexport const protoInt64 = /*@__PURE__*/ makeInt64Support();\nfunction makeInt64Support() {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok = typeof BigInt === \"function\" &&\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\" &&\n (!!globalThis.Deno ||\n typeof process != \"object\" ||\n typeof process.env != \"object\" ||\n process.env.BUF_BIGINT_DISABLE !== \"1\");\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\");\n const MAX = BigInt(\"9223372036854775807\");\n const UMIN = BigInt(\"0\");\n const UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`invalid int64: ${value}`);\n }\n return bi;\n },\n uParse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`invalid uint64: ${value}`);\n }\n return bi;\n },\n enc(value) {\n dv.setBigInt64(0, this.parse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n uEnc(value) {\n dv.setBigInt64(0, this.uParse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n dec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigUint64(0, true);\n },\n };\n }\n return {\n zero: \"0\",\n supported: false,\n parse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return value;\n },\n uParse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return value;\n },\n enc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return int64FromString(value);\n },\n uEnc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return int64FromString(value);\n },\n dec(lo, hi) {\n return int64ToString(lo, hi);\n },\n uDec(lo, hi) {\n return uInt64ToString(lo, hi);\n },\n };\n}\nfunction assertInt64String(value) {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(\"invalid int64: \" + value);\n }\n}\nfunction assertUInt64String(value) {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(\"invalid uint64: \" + value);\n }\n}\n","// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error(\"invalid varint\");\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !(shift >>> 7 == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !(shift >>> 7 == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = bits.hi & 0x80000000;\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1fffff) {\n return String(TWO_PWR_32_DBL * hi + lo);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n const low = lo & 0xffffff;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n const high = (hi >> 16) & 0xffff;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + mid * 6777216 + high * 6710656;\n let digitB = mid + high * 8147497;\n let digitC = high * 2;\n // Apply carries from A to B and from B to C.\n const base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return (digitC.toString() +\n decimalFrom1e7WithLeadingZeros(digitB) +\n decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push((value & 127) | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7f;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error(\"invalid varint\");\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { unsafeLocal } from \"./unsafe.js\";\nexport function isObject(arg) {\n return arg !== null && typeof arg == \"object\" && !Array.isArray(arg);\n}\nexport function isOneofADT(arg) {\n return (arg !== null &&\n typeof arg == \"object\" &&\n \"case\" in arg &&\n ((typeof arg.case == \"string\" && \"value\" in arg && arg.value != null) ||\n (arg.case === undefined &&\n (!(\"value\" in arg) || arg.value === undefined))));\n}\nexport function isReflectList(arg, field) {\n var _a, _b, _c, _d;\n if (isObject(arg) &&\n unsafeLocal in arg &&\n \"add\" in arg &&\n \"field\" in arg &&\n typeof arg.field == \"function\") {\n if (field !== undefined) {\n const a = field;\n const b = arg.field();\n return (a.listKind == b.listKind &&\n a.scalar === b.scalar &&\n ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n }\n return true;\n }\n return false;\n}\nexport function isReflectMap(arg, field) {\n var _a, _b, _c, _d;\n if (isObject(arg) &&\n unsafeLocal in arg &&\n \"has\" in arg &&\n \"field\" in arg &&\n typeof arg.field == \"function\") {\n if (field !== undefined) {\n const a = field, b = arg.field();\n return (a.mapKey === b.mapKey &&\n a.mapKind == b.mapKind &&\n a.scalar === b.scalar &&\n ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n }\n return true;\n }\n return false;\n}\nexport function isReflectMessage(arg, messageDesc) {\n return (isObject(arg) &&\n unsafeLocal in arg &&\n \"desc\" in arg &&\n isObject(arg.desc) &&\n arg.desc.kind === \"message\" &&\n (messageDesc === undefined || arg.desc.typeName == messageDesc.typeName));\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { isScalarZeroValue, scalarZeroValue } from \"./scalar.js\";\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\nexport const unsafeLocal = Symbol.for(\"reflect unsafe local\");\n/**\n * Return the selected field of a oneof group.\n *\n * @private\n */\nexport function unsafeOneofCase(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, oneof) {\n const c = target[oneof.localName].case;\n if (c === undefined) {\n return c;\n }\n return oneof.fields.find((f) => f.localName === c);\n}\n/**\n * Returns true if the field is set.\n *\n * @private\n */\nexport function unsafeIsSet(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, field) {\n const name = field.localName;\n if (field.oneof) {\n return target[field.oneof.localName].case === name;\n }\n if (field.presence != IMPLICIT) {\n // Fields with explicit presence have properties on the prototype chain\n // for default / zero values (except for proto3).\n return (target[name] !== undefined &&\n Object.prototype.hasOwnProperty.call(target, name));\n }\n switch (field.fieldKind) {\n case \"list\":\n return target[name].length > 0;\n case \"map\":\n return Object.keys(target[name]).length > 0;\n case \"scalar\":\n return !isScalarZeroValue(field.scalar, target[name]);\n case \"enum\":\n return target[name] !== field.enum.values[0].number;\n }\n throw new Error(\"message field with implicit presence\");\n}\n/**\n * Returns true if the field is set, but only for singular fields with explicit\n * presence (proto2).\n *\n * @private\n */\nexport function unsafeIsSetExplicit(target, localName) {\n return (Object.prototype.hasOwnProperty.call(target, localName) &&\n target[localName] !== undefined);\n}\n/**\n * Return a field value, respecting oneof groups.\n *\n * @private\n */\nexport function unsafeGet(target, field) {\n if (field.oneof) {\n const oneof = target[field.oneof.localName];\n if (oneof.case === field.localName) {\n return oneof.value;\n }\n return undefined;\n }\n return target[field.localName];\n}\n/**\n * Set a field value, respecting oneof groups.\n *\n * @private\n */\nexport function unsafeSet(target, field, value) {\n if (field.oneof) {\n target[field.oneof.localName] = {\n case: field.localName,\n value: value,\n };\n }\n else {\n target[field.localName] = value;\n }\n}\n/**\n * Resets the field, so that unsafeIsSet() will return false.\n *\n * @private\n */\nexport function unsafeClear(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, field) {\n const name = field.localName;\n if (field.oneof) {\n const oneofLocalName = field.oneof.localName;\n if (target[oneofLocalName].case === name) {\n target[oneofLocalName] = { case: undefined };\n }\n }\n else if (field.presence != IMPLICIT) {\n // Fields with explicit presence have properties on the prototype chain\n // for default / zero values (except for proto3). By deleting their own\n // property, the field is reset.\n delete target[name];\n }\n else {\n switch (field.fieldKind) {\n case \"map\":\n target[name] = {};\n break;\n case \"list\":\n target[name] = [];\n break;\n case \"enum\":\n target[name] = field.enum.values[0].number;\n break;\n case \"scalar\":\n target[name] = scalarZeroValue(field.scalar, field.longAsString);\n break;\n }\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nexport function isWrapper(arg) {\n return isWrapperTypeName(arg.$typeName);\n}\nexport function isWrapperDesc(messageDesc) {\n const f = messageDesc.fields[0];\n return (isWrapperTypeName(messageDesc.typeName) &&\n f !== undefined &&\n f.fieldKind == \"scalar\" &&\n f.name == \"value\" &&\n f.number == 1);\n}\n/**\n * Returns true if the descriptor is a well-known type with a custom JSON\n * representation per the protobuf JSON spec. Examples: Timestamp as an\n * RFC 3339 string, Duration as \"5s\", wrappers as the unwrapped scalar.\n *\n * When packed inside `google.protobuf.Any`, these messages are serialized\n * as `{\"@type\": ..., \"value\": <custom form>}`; all other messages embed\n * their fields directly.\n */\nexport function hasCustomJsonRepresentation(desc) {\n switch (desc.typeName) {\n case \"google.protobuf.Any\":\n case \"google.protobuf.Timestamp\":\n case \"google.protobuf.Duration\":\n case \"google.protobuf.FieldMask\":\n case \"google.protobuf.Struct\":\n case \"google.protobuf.Value\":\n case \"google.protobuf.ListValue\":\n return true;\n default:\n return isWrapperDesc(desc);\n }\n}\nfunction isWrapperTypeName(name) {\n return (name.startsWith(\"google.protobuf.\") &&\n [\n \"DoubleValue\",\n \"FloatValue\",\n \"Int64Value\",\n \"UInt64Value\",\n \"Int32Value\",\n \"UInt32Value\",\n \"BoolValue\",\n \"StringValue\",\n \"BytesValue\",\n ].includes(name.substring(16)));\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType, } from \"../descriptors.js\";\nimport { checkField, checkListItem, checkMapEntry } from \"./reflect-check.js\";\nimport { FieldError } from \"./error.js\";\nimport { unsafeClear, unsafeGet, unsafeIsSet, unsafeLocal, unsafeOneofCase, unsafeSet, } from \"./unsafe.js\";\nimport { create } from \"../create.js\";\nimport { isWrapper, isWrapperDesc } from \"../wkt/wrappers.js\";\nimport { scalarZeroValue } from \"./scalar.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { isObject, isReflectList, isReflectMap, isReflectMessage, } from \"./guard.js\";\n/**\n * Create a ReflectMessage.\n */\nexport function reflect(messageDesc, message, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectMessageImpl(messageDesc, message, check);\n}\nconst messageSortedFields = new WeakMap();\nclass ReflectMessageImpl {\n get sortedFields() {\n const cached = messageSortedFields.get(this.desc);\n if (cached) {\n return cached;\n }\n const sortedFields = this.desc.fields\n .concat()\n .sort((a, b) => a.number - b.number);\n messageSortedFields.set(this.desc, sortedFields);\n return sortedFields;\n }\n constructor(messageDesc, message, check = true) {\n this.lists = new Map();\n this.maps = new Map();\n this.check = check;\n this.desc = messageDesc;\n this.message = this[unsafeLocal] = message !== null && message !== void 0 ? message : create(messageDesc);\n this.fields = messageDesc.fields;\n this.oneofs = messageDesc.oneofs;\n this.members = messageDesc.members;\n }\n findNumber(number) {\n if (!this._fieldsByNumber) {\n this._fieldsByNumber = new Map(this.desc.fields.map((f) => [f.number, f]));\n }\n return this._fieldsByNumber.get(number);\n }\n oneofCase(oneof) {\n assertOwn(this.message, oneof);\n return unsafeOneofCase(this.message, oneof);\n }\n isSet(field) {\n assertOwn(this.message, field);\n return unsafeIsSet(this.message, field);\n }\n clear(field) {\n assertOwn(this.message, field);\n unsafeClear(this.message, field);\n }\n get(field) {\n assertOwn(this.message, field);\n const value = unsafeGet(this.message, field);\n switch (field.fieldKind) {\n case \"list\":\n // eslint-disable-next-line no-case-declarations\n let list = this.lists.get(field);\n if (!list || list[unsafeLocal] !== value) {\n this.lists.set(field, \n // biome-ignore lint/suspicious/noAssignInExpressions: no\n (list = new ReflectListImpl(field, value, this.check)));\n }\n return list;\n case \"map\":\n let map = this.maps.get(field);\n if (!map || map[unsafeLocal] !== value) {\n this.maps.set(field, \n // biome-ignore lint/suspicious/noAssignInExpressions: no\n (map = new ReflectMapImpl(field, value, this.check)));\n }\n return map;\n case \"message\":\n return messageToReflect(field, value, this.check);\n case \"scalar\":\n return (value === undefined\n ? scalarZeroValue(field.scalar, false)\n : longToReflect(field, value));\n case \"enum\":\n return (value !== null && value !== void 0 ? value : field.enum.values[0].number);\n }\n }\n set(field, value) {\n assertOwn(this.message, field);\n if (this.check) {\n const err = checkField(field, value);\n if (err) {\n throw err;\n }\n }\n let local;\n if (field.fieldKind == \"message\") {\n local = messageToLocal(field, value);\n }\n else if (isReflectMap(value) || isReflectList(value)) {\n local = value[unsafeLocal];\n }\n else {\n local = longToLocal(field, value);\n }\n unsafeSet(this.message, field, local);\n }\n getUnknown() {\n return this.message.$unknown;\n }\n setUnknown(value) {\n this.message.$unknown = value;\n }\n}\nfunction assertOwn(owner, member) {\n if (member.parent.typeName !== owner.$typeName) {\n throw new FieldError(member, `cannot use ${member.toString()} with message ${owner.$typeName}`, \"ForeignFieldError\");\n }\n}\n/**\n * Create a ReflectList.\n */\nexport function reflectList(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectListImpl(field, unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [], check);\n}\nclass ReflectListImpl {\n field() {\n return this._field;\n }\n get size() {\n return this._arr.length;\n }\n constructor(field, unsafeInput, check) {\n this._field = field;\n this._arr = this[unsafeLocal] = unsafeInput;\n this.check = check;\n }\n get(index) {\n const item = this._arr[index];\n return item === undefined\n ? undefined\n : listItemToReflect(this._field, item, this.check);\n }\n set(index, item) {\n if (index < 0 || index >= this._arr.length) {\n throw new FieldError(this._field, `list item #${index + 1}: out of range`);\n }\n if (this.check) {\n const err = checkListItem(this._field, index, item);\n if (err) {\n throw err;\n }\n }\n this._arr[index] = listItemToLocal(this._field, item);\n }\n add(item) {\n if (this.check) {\n const err = checkListItem(this._field, this._arr.length, item);\n if (err) {\n throw err;\n }\n }\n this._arr.push(listItemToLocal(this._field, item));\n return undefined;\n }\n clear() {\n this._arr.splice(0, this._arr.length);\n }\n [Symbol.iterator]() {\n return this.values();\n }\n keys() {\n return this._arr.keys();\n }\n *values() {\n for (const item of this._arr) {\n yield listItemToReflect(this._field, item, this.check);\n }\n }\n *entries() {\n for (let i = 0; i < this._arr.length; i++) {\n yield [i, listItemToReflect(this._field, this._arr[i], this.check)];\n }\n }\n}\n/**\n * Create a ReflectMap.\n */\nexport function reflectMap(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectMapImpl(field, unsafeInput, check);\n}\nclass ReflectMapImpl {\n constructor(field, unsafeInput, check = true) {\n this.obj = this[unsafeLocal] = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};\n this.check = check;\n this._field = field;\n }\n field() {\n return this._field;\n }\n set(key, value) {\n if (this.check) {\n const err = checkMapEntry(this._field, key, value);\n if (err) {\n throw err;\n }\n }\n this.obj[mapKeyToLocal(key)] = mapValueToLocal(this._field, value);\n return this;\n }\n delete(key) {\n const k = mapKeyToLocal(key);\n const has = Object.prototype.hasOwnProperty.call(this.obj, k);\n if (has) {\n delete this.obj[k];\n }\n return has;\n }\n clear() {\n for (const key of Object.keys(this.obj)) {\n delete this.obj[key];\n }\n }\n get(key) {\n let val = this.obj[mapKeyToLocal(key)];\n if (val !== undefined) {\n val = mapValueToReflect(this._field, val, this.check);\n }\n return val;\n }\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.obj, mapKeyToLocal(key));\n }\n *keys() {\n for (const objKey of Object.keys(this.obj)) {\n yield mapKeyToReflect(objKey, this._field.mapKey);\n }\n }\n *entries() {\n for (const objEntry of Object.entries(this.obj)) {\n yield [\n mapKeyToReflect(objEntry[0], this._field.mapKey),\n mapValueToReflect(this._field, objEntry[1], this.check),\n ];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n get size() {\n return Object.keys(this.obj).length;\n }\n *values() {\n for (const val of Object.values(this.obj)) {\n yield mapValueToReflect(this._field, val, this.check);\n }\n }\n forEach(callbackfn, thisArg) {\n for (const mapEntry of this.entries()) {\n callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);\n }\n }\n}\nfunction messageToLocal(field, value) {\n if (!isReflectMessage(value)) {\n return value;\n }\n if (isWrapper(value.message) &&\n !field.oneof &&\n field.fieldKind == \"message\") {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n return value.message.value;\n }\n if (value.desc.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName != \"google.protobuf.Value\") {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n return wktStructToLocal(value.message);\n }\n return value.message;\n}\nfunction messageToReflect(field, value, check) {\n if (value !== undefined) {\n if (isWrapperDesc(field.message) &&\n !field.oneof &&\n field.fieldKind == \"message\") {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n value = {\n $typeName: field.message.typeName,\n value: longToReflect(field.message.fields[0], value),\n };\n }\n else if (field.message.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName != \"google.protobuf.Value\" &&\n isObject(value)) {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n value = wktStructToReflect(value);\n }\n }\n return new ReflectMessageImpl(field.message, value, check);\n}\nfunction listItemToLocal(field, value) {\n if (field.listKind == \"message\") {\n return messageToLocal(field, value);\n }\n return longToLocal(field, value);\n}\nfunction listItemToReflect(field, value, check) {\n if (field.listKind == \"message\") {\n return messageToReflect(field, value, check);\n }\n return longToReflect(field, value);\n}\nfunction mapValueToLocal(field, value) {\n if (field.mapKind == \"message\") {\n return messageToLocal(field, value);\n }\n return longToLocal(field, value);\n}\nfunction mapValueToReflect(field, value, check) {\n if (field.mapKind == \"message\") {\n return messageToReflect(field, value, check);\n }\n return value;\n}\nfunction mapKeyToLocal(key) {\n return typeof key == \"string\" || typeof key == \"number\" ? key : String(key);\n}\n/**\n * Converts a map key (any scalar value except float, double, or bytes) from its\n * representation in a message (string or number, the only possible object key\n * types) to the closest possible type in ECMAScript.\n */\nfunction mapKeyToReflect(key, type) {\n switch (type) {\n case ScalarType.STRING:\n return key;\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32: {\n const n = Number.parseInt(key);\n if (Number.isFinite(n)) {\n return n;\n }\n break;\n }\n case ScalarType.BOOL:\n switch (key) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n }\n break;\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n try {\n return protoInt64.uParse(key);\n }\n catch (_a) {\n //\n }\n break;\n default:\n // INT64, SFIXED64, SINT64\n try {\n return protoInt64.parse(key);\n }\n catch (_b) {\n //\n }\n break;\n }\n return key;\n}\nfunction longToReflect(field, value) {\n switch (field.scalar) {\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (\"longAsString\" in field &&\n field.longAsString &&\n typeof value == \"string\") {\n value = protoInt64.parse(value);\n }\n break;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (\"longAsString\" in field &&\n field.longAsString &&\n typeof value == \"string\") {\n value = protoInt64.uParse(value);\n }\n break;\n }\n return value;\n}\nfunction longToLocal(field, value) {\n switch (field.scalar) {\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (\"longAsString\" in field && field.longAsString) {\n value = String(value);\n }\n else if (typeof value == \"string\" || typeof value == \"number\") {\n value = protoInt64.parse(value);\n }\n break;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (\"longAsString\" in field && field.longAsString) {\n value = String(value);\n }\n else if (typeof value == \"string\" || typeof value == \"number\") {\n value = protoInt64.uParse(value);\n }\n break;\n }\n return value;\n}\nfunction wktStructToReflect(json) {\n const struct = {\n $typeName: \"google.protobuf.Struct\",\n fields: {},\n };\n if (isObject(json)) {\n for (const [k, v] of Object.entries(json)) {\n struct.fields[k] = wktValueToReflect(v);\n }\n }\n return struct;\n}\nfunction wktStructToLocal(val) {\n const json = {};\n for (const [k, v] of Object.entries(val.fields)) {\n json[k] = wktValueToLocal(v);\n }\n return json;\n}\nfunction wktValueToLocal(val) {\n switch (val.kind.case) {\n case \"structValue\":\n return wktStructToLocal(val.kind.value);\n case \"listValue\":\n return val.kind.value.values.map(wktValueToLocal);\n case \"nullValue\":\n case undefined:\n return null;\n default:\n return val.kind.value;\n }\n}\nfunction wktValueToReflect(json) {\n const value = {\n $typeName: \"google.protobuf.Value\",\n kind: { case: undefined },\n };\n switch (typeof json) {\n case \"number\":\n value.kind = { case: \"numberValue\", value: json };\n break;\n case \"string\":\n value.kind = { case: \"stringValue\", value: json };\n break;\n case \"boolean\":\n value.kind = { case: \"boolValue\", value: json };\n break;\n case \"object\":\n if (json === null) {\n const nullValue = 0;\n value.kind = { case: \"nullValue\", value: nullValue };\n }\n else if (Array.isArray(json)) {\n const listValue = {\n $typeName: \"google.protobuf.ListValue\",\n values: [],\n };\n if (Array.isArray(json)) {\n for (const e of json) {\n listValue.values.push(wktValueToReflect(e));\n }\n }\n value.kind = {\n case: \"listValue\",\n value: listValue,\n };\n }\n else {\n value.kind = {\n case: \"structValue\",\n value: wktStructToReflect(json),\n };\n }\n break;\n }\n return value;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType, } from \"../descriptors.js\";\nimport { isMessage } from \"../is-message.js\";\nimport { FieldError } from \"./error.js\";\nimport { isReflectList, isReflectMap, isReflectMessage } from \"./guard.js\";\nimport { FLOAT32_MAX, FLOAT32_MIN, INT32_MAX, INT32_MIN, UINT32_MAX, } from \"../wire/binary-encoding.js\";\nimport { getTextEncoding } from \"../wire/text-encoding.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\n/**\n * Check whether the given field value is valid for the reflect API.\n */\nexport function checkField(field, value) {\n const check = field.fieldKind == \"list\"\n ? isReflectList(value, field)\n : field.fieldKind == \"map\"\n ? isReflectMap(value, field)\n : checkSingular(field, value);\n if (check === true) {\n return undefined;\n }\n let reason;\n switch (field.fieldKind) {\n case \"list\":\n reason = `expected ${formatReflectList(field)}, got ${formatVal(value)}`;\n break;\n case \"map\":\n reason = `expected ${formatReflectMap(field)}, got ${formatVal(value)}`;\n break;\n default: {\n reason = reasonSingular(field, value, check);\n }\n }\n return new FieldError(field, reason);\n}\n/**\n * Check whether the given list item is valid for the reflect API.\n */\nexport function checkListItem(field, index, value) {\n const check = checkSingular(field, value);\n if (check !== true) {\n return new FieldError(field, `list item #${index + 1}: ${reasonSingular(field, value, check)}`);\n }\n return undefined;\n}\n/**\n * Check whether the given map key and value are valid for the reflect API.\n */\nexport function checkMapEntry(field, key, value) {\n const checkKey = checkScalarValue(key, field.mapKey);\n if (checkKey !== true) {\n return new FieldError(field, `invalid map key: ${reasonSingular({ scalar: field.mapKey }, key, checkKey)}`);\n }\n const checkVal = checkSingular(field, value);\n if (checkVal !== true) {\n return new FieldError(field, `map entry ${formatVal(key)}: ${reasonSingular(field, value, checkVal)}`);\n }\n return undefined;\n}\nfunction checkSingular(field, value) {\n if (field.scalar !== undefined) {\n return checkScalarValue(value, field.scalar);\n }\n if (field.enum !== undefined) {\n if (field.enum.open) {\n return Number.isInteger(value);\n }\n return field.enum.values.some((v) => v.number === value);\n }\n return isReflectMessage(value, field.message);\n}\nfunction checkScalarValue(value, scalar) {\n switch (scalar) {\n case ScalarType.DOUBLE:\n return typeof value == \"number\";\n case ScalarType.FLOAT:\n if (typeof value != \"number\") {\n return false;\n }\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n return true;\n }\n if (value > FLOAT32_MAX || value < FLOAT32_MIN) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n // signed\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return false;\n }\n if (value > INT32_MAX || value < INT32_MIN) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n // unsigned\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return false;\n }\n if (value > UINT32_MAX || value < 0) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.BOOL:\n return typeof value == \"boolean\";\n case ScalarType.STRING:\n if (typeof value != \"string\") {\n return false;\n }\n return getTextEncoding().checkUtf8(value) || \"invalid UTF8\";\n case ScalarType.BYTES:\n return value instanceof Uint8Array;\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // signed\n if (typeof value == \"bigint\" ||\n typeof value == \"number\" ||\n (typeof value == \"string\" && value.length > 0)) {\n try {\n protoInt64.parse(value);\n return true;\n }\n catch (_) {\n return `${value} out of range`;\n }\n }\n return false;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n // unsigned\n if (typeof value == \"bigint\" ||\n typeof value == \"number\" ||\n (typeof value == \"string\" && value.length > 0)) {\n try {\n protoInt64.uParse(value);\n return true;\n }\n catch (_) {\n return `${value} out of range`;\n }\n }\n return false;\n }\n}\nfunction reasonSingular(field, val, details) {\n details =\n typeof details == \"string\" ? `: ${details}` : `, got ${formatVal(val)}`;\n if (field.scalar !== undefined) {\n return `expected ${scalarTypeDescription(field.scalar)}` + details;\n }\n if (field.enum !== undefined) {\n return `expected ${field.enum.toString()}` + details;\n }\n return `expected ${formatReflectMessage(field.message)}` + details;\n}\nexport function formatVal(val) {\n switch (typeof val) {\n case \"object\":\n if (val === null) {\n return \"null\";\n }\n if (val instanceof Uint8Array) {\n return `Uint8Array(${val.length})`;\n }\n if (Array.isArray(val)) {\n return `Array(${val.length})`;\n }\n if (isReflectList(val)) {\n return formatReflectList(val.field());\n }\n if (isReflectMap(val)) {\n return formatReflectMap(val.field());\n }\n if (isReflectMessage(val)) {\n return formatReflectMessage(val.desc);\n }\n if (isMessage(val)) {\n return `message ${val.$typeName}`;\n }\n return \"object\";\n case \"string\":\n return val.length > 30 ? \"string\" : `\"${val.split('\"').join('\\\\\"')}\"`;\n case \"boolean\":\n return String(val);\n case \"number\":\n return String(val);\n case \"bigint\":\n return String(val) + \"n\";\n default:\n // \"symbol\" | \"undefined\" | \"object\" | \"function\"\n return typeof val;\n }\n}\nfunction formatReflectMessage(desc) {\n return `ReflectMessage (${desc.typeName})`;\n}\nfunction formatReflectList(field) {\n switch (field.listKind) {\n case \"message\":\n return `ReflectList (${field.message.toString()})`;\n case \"enum\":\n return `ReflectList (${field.enum.toString()})`;\n case \"scalar\":\n return `ReflectList (${ScalarType[field.scalar]})`;\n }\n}\nfunction formatReflectMap(field) {\n switch (field.mapKind) {\n case \"message\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${field.message.toString()})`;\n case \"enum\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${field.enum.toString()})`;\n case \"scalar\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${ScalarType[field.scalar]})`;\n }\n}\nfunction scalarTypeDescription(scalar) {\n switch (scalar) {\n case ScalarType.STRING:\n return \"string\";\n case ScalarType.BOOL:\n return \"boolean\";\n case ScalarType.INT64:\n case ScalarType.SINT64:\n case ScalarType.SFIXED64:\n return \"bigint (int64)\";\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n return \"bigint (uint64)\";\n case ScalarType.BYTES:\n return \"Uint8Array\";\n case ScalarType.DOUBLE:\n return \"number (float64)\";\n case ScalarType.FLOAT:\n return \"number (float32)\";\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n return \"number (uint32)\";\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n return \"number (int32)\";\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst errorNames = [\n \"FieldValueInvalidError\",\n \"FieldListRangeError\",\n \"ForeignFieldError\",\n];\nexport class FieldError extends Error {\n constructor(fieldOrOneof, message, name = \"FieldValueInvalidError\") {\n super(message);\n this.name = name;\n this.field = () => fieldOrOneof;\n }\n}\nexport function isFieldError(arg) {\n return (arg instanceof Error &&\n errorNames.includes(arg.name) &&\n \"field\" in arg &&\n typeof arg.field == \"function\");\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./varint.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { getTextEncoding } from \"./text-encoding.js\";\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n * in editions with message_encoding = DELIMITED.\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * End of a tag-delimited aggregate.\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexport const UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MIN = -0x80000000;\nexport class BinaryWriter {\n constructor(encodeUtf8 = getTextEncoding().encodeUtf8) {\n this.encodeUtf8 = encodeUtf8;\n /**\n * Previous fork states.\n */\n this.stack = [];\n this.chunks = [];\n this.buf = [];\n }\n /**\n * Return all bytes written and reset this writer.\n */\n finish() {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n this.buf = [];\n }\n let len = 0;\n for (let i = 0; i < this.chunks.length; i++)\n len += this.chunks[i].length;\n let bytes = new Uint8Array(len);\n let offset = 0;\n for (let i = 0; i < this.chunks.length; i++) {\n bytes.set(this.chunks[i], offset);\n offset += this.chunks[i].length;\n }\n this.chunks = [];\n return bytes;\n }\n /**\n * Start a new fork for length-delimited data like a message\n * or a packed repeated field.\n *\n * Must be joined later with `join()`.\n */\n fork() {\n this.stack.push({ chunks: this.chunks, buf: this.buf });\n this.chunks = [];\n this.buf = [];\n return this;\n }\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join() {\n // get chunk of fork\n let chunk = this.finish();\n // restore previous state\n let prev = this.stack.pop();\n if (!prev)\n throw new Error(\"invalid state, fork stack empty\");\n this.chunks = prev.chunks;\n this.buf = prev.buf;\n // write length of chunk as varint\n this.uint32(chunk.byteLength);\n return this.raw(chunk);\n }\n /**\n * Writes a tag (field number and wire type).\n *\n * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n *\n * Generated code should compute the tag ahead of time and call `uint32()`.\n */\n tag(fieldNo, type) {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk) {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf));\n this.buf = [];\n }\n this.chunks.push(chunk);\n return this;\n }\n /**\n * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value) {\n assertUInt32(value);\n // write value as varint 32, inlined for speed\n while (value > 0x7f) {\n this.buf.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n this.buf.push(value);\n return this;\n }\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value) {\n assertInt32(value);\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `bool` value, a varint.\n */\n bool(value) {\n this.buf.push(value ? 1 : 0);\n return this;\n }\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value) {\n this.uint32(value.byteLength); // write length of chunk as varint\n return this.raw(value);\n }\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value) {\n let chunk = this.encodeUtf8(value);\n this.uint32(chunk.byteLength); // write length of chunk as varint\n return this.raw(chunk);\n }\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value) {\n assertFloat32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setFloat32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `double` value, a 64-bit floating point number.\n */\n double(value) {\n let chunk = new Uint8Array(8);\n new DataView(chunk.buffer).setFloat64(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value) {\n assertUInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setUint32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value) {\n assertInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setInt32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value) {\n assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `sfixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.enc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value) {\n let tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value) {\n const tc = protoInt64.enc(value), \n // zigzag encode\n sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n varint64write(lo, hi, this.buf);\n return this;\n }\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value) {\n const tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\nexport class BinaryReader {\n constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) {\n this.decodeUtf8 = decodeUtf8;\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read;\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Reads a tag - field number and wire type. Tags are uint32 varints; values\n * that do not fit in uint32 are rejected.\n */\n tag() {\n const start = this.pos;\n const tag = this.uint32();\n const bytesRead = this.pos - start;\n if (bytesRead > 5 || (bytesRead == 5 && this.buf[this.pos - 1] > 0x0f)) {\n throw new Error(\"illegal tag: varint overflows uint32\");\n }\n const fieldNo = tag >>> 3;\n const wireType = tag & 7;\n if (fieldNo <= 0 || wireType > 5) {\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n }\n return [fieldNo, wireType];\n }\n /**\n * Skip one element and return the skipped data.\n *\n * When skipping StartGroup, provide the tags field number to check for\n * matching field number in the EndGroup tag.\n */\n skip(wireType, fieldNo) {\n let start = this.pos;\n switch (wireType) {\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n case WireType.Bit64:\n this.pos += 4;\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.StartGroup:\n for (;;) {\n const [fn, wt] = this.tag();\n if (wt === WireType.EndGroup) {\n if (fieldNo !== undefined && fn !== fieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n break;\n }\n this.skip(wt, fn);\n }\n break;\n default:\n throw new Error(\"cant skip wire type \" + wireType);\n }\n this.assertBounds();\n return this.buf.subarray(start, this.pos);\n }\n /**\n * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return protoInt64.dec(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return protoInt64.uDec(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n hi = (hi >>> 1) ^ s;\n return protoInt64.dec(lo, hi);\n }\n /**\n * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return protoInt64.dec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32(), start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text. If\n * `strict` is true, throw on invalid UTF-8 instead of substituting U+FFFD.\n */\n string(strict) {\n return this.decodeUtf8(this.bytes(), strict);\n }\n}\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid int32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > INT32_MAX ||\n arg < INT32_MIN)\n throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid uint32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > UINT32_MAX ||\n arg < 0)\n throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n if (typeof arg == \"string\") {\n const o = arg;\n arg = Number(arg);\n if (Number.isNaN(arg) && o !== \"NaN\") {\n throw new Error(\"invalid float32: \" + o);\n }\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid float32: \" + typeof arg);\n }\n if (Number.isFinite(arg) &&\n (arg > FLOAT32_MAX || arg < FLOAT32_MIN))\n throw new Error(\"invalid float32: \" + arg);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nexport function configureTextEncoding(textEncoding) {\n globalThis[symbol] = textEncoding;\n}\nexport function getTextEncoding() {\n if (globalThis[symbol] == undefined) {\n const te = new globalThis.TextEncoder();\n const td = new globalThis.TextDecoder();\n let tdStrict;\n globalThis[symbol] = {\n encodeUtf8(text) {\n return te.encode(text);\n },\n decodeUtf8(bytes, strict) {\n if (strict) {\n if (tdStrict === undefined) {\n tdStrict = new globalThis.TextDecoder(\"utf-8\", { fatal: true });\n }\n return tdStrict.decode(bytes);\n }\n return td.decode(bytes);\n },\n checkUtf8(text) {\n try {\n encodeURIComponent(text);\n return true;\n }\n catch (_) {\n return false;\n }\n },\n };\n }\n return globalThis[symbol];\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { base64Decode } from \"../wire/base64-encoding.js\";\nimport { FileDescriptorProtoSchema } from \"../wkt/gen/google/protobuf/descriptor_pb.js\";\nimport { createFileRegistry } from \"../registry.js\";\nimport { restoreJsonNames } from \"./restore-json-names.js\";\nimport { fromBinary } from \"../from-binary.js\";\n/**\n * Hydrate a file descriptor.\n *\n * @private\n */\nexport function fileDesc(b64, imports) {\n var _a;\n const root = fromBinary(FileDescriptorProtoSchema, base64Decode(b64));\n root.messageType.forEach(restoreJsonNames);\n root.dependency = (_a = imports === null || imports === void 0 ? void 0 : imports.map((f) => f.proto.name)) !== null && _a !== void 0 ? _a : [];\n const reg = createFileRegistry(root, (protoFileName) => imports === null || imports === void 0 ? void 0 : imports.find((f) => f.proto.name === protoFileName));\n // biome-ignore lint/style/noNonNullAssertion: non-null assertion because we just created the registry from the file we look up\n return reg.getFile(root.name);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Decodes a base64 string to a byte array.\n *\n * - ignores white-space, including line breaks and tabs\n * - allows inner padding (can decode concatenated base64 strings)\n * - does not require padding\n * - understands base64url encoding:\n * \"-\" instead of \"+\",\n * \"_\" instead of \"/\",\n * no padding\n */\nexport function base64Decode(base64Str) {\n const table = getDecodeTable();\n // estimate byte size, not accounting for inner padding and whitespace\n let es = (base64Str.length * 3) / 4;\n if (base64Str[base64Str.length - 2] == \"=\")\n es -= 2;\n else if (base64Str[base64Str.length - 1] == \"=\")\n es -= 1;\n let bytes = new Uint8Array(es), bytePos = 0, // position in byte array\n groupPos = 0, // position in base64 group\n b, // current byte\n p = 0; // previous byte\n for (let i = 0; i < base64Str.length; i++) {\n b = table[base64Str.charCodeAt(i)];\n if (b === undefined) {\n switch (base64Str[i]) {\n // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n case \"=\":\n groupPos = 0; // reset state when padding found\n case \"\\n\":\n case \"\\r\":\n case \"\\t\":\n case \" \":\n continue; // skip white-space, and padding\n default:\n throw Error(\"invalid base64 string\");\n }\n }\n switch (groupPos) {\n case 0:\n p = b;\n groupPos = 1;\n break;\n case 1:\n bytes[bytePos++] = (p << 2) | ((b & 48) >> 4);\n p = b;\n groupPos = 2;\n break;\n case 2:\n bytes[bytePos++] = ((p & 15) << 4) | ((b & 60) >> 2);\n p = b;\n groupPos = 3;\n break;\n case 3:\n bytes[bytePos++] = ((p & 3) << 6) | b;\n groupPos = 0;\n break;\n }\n }\n if (groupPos == 1)\n throw Error(\"invalid base64 string\");\n return bytes.subarray(0, bytePos);\n}\n/**\n * Encode a byte array to a base64 string.\n *\n * By default, this function uses the standard base64 encoding with padding.\n *\n * To encode without padding, use encoding = \"std_raw\".\n *\n * To encode with the URL encoding, use encoding = \"url\", which replaces the\n * characters +/ by their URL-safe counterparts -_, and omits padding.\n */\nexport function base64Encode(bytes, encoding = \"std\") {\n const table = getEncodeTable(encoding);\n const pad = encoding == \"std\";\n let base64 = \"\", groupPos = 0, // position in base64 group\n b, // current byte\n p = 0; // carry over from previous byte\n for (let i = 0; i < bytes.length; i++) {\n b = bytes[i];\n switch (groupPos) {\n case 0:\n base64 += table[b >> 2];\n p = (b & 3) << 4;\n groupPos = 1;\n break;\n case 1:\n base64 += table[p | (b >> 4)];\n p = (b & 15) << 2;\n groupPos = 2;\n break;\n case 2:\n base64 += table[p | (b >> 6)];\n base64 += table[b & 63];\n groupPos = 0;\n break;\n }\n }\n // add output padding\n if (groupPos) {\n base64 += table[p];\n if (pad) {\n base64 += \"=\";\n if (groupPos == 1)\n base64 += \"=\";\n }\n }\n return base64;\n}\n// lookup table from base64 character to byte\nlet encodeTableStd;\nlet encodeTableUrl;\n// lookup table from base64 character *code* to byte because lookup by number is fast\nlet decodeTable;\nfunction getEncodeTable(encoding) {\n if (!encodeTableStd) {\n encodeTableStd =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");\n encodeTableUrl = encodeTableStd.slice(0, -2).concat(\"-\", \"_\");\n }\n return encoding == \"url\"\n ? // biome-ignore lint/style/noNonNullAssertion: TS fails to narrow down\n encodeTableUrl\n : encodeTableStd;\n}\nfunction getDecodeTable() {\n if (!decodeTable) {\n decodeTable = [];\n const encodeTable = getEncodeTable(\"std\");\n for (let i = 0; i < encodeTable.length; i++)\n decodeTable[encodeTable[i].charCodeAt(0)] = i;\n // support base64url variants\n decodeTable[\"-\".charCodeAt(0)] = encodeTable.indexOf(\"+\");\n decodeTable[\"_\".charCodeAt(0)] = encodeTable.indexOf(\"/\");\n }\n return decodeTable;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { boot } from \"../../../../codegenv2/boot.js\";\nimport { messageDesc } from \"../../../../codegenv2/message.js\";\nimport { enumDesc } from \"../../../../codegenv2/enum.js\";\n/**\n * Describes the file google/protobuf/descriptor.proto.\n */\nexport const file_google_protobuf_descriptor = /*@__PURE__*/ boot({ \"name\": \"google/protobuf/descriptor.proto\", \"package\": \"google.protobuf\", \"messageType\": [{ \"name\": \"FileDescriptorSet\", \"field\": [{ \"name\": \"file\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FileDescriptorProto\" }], \"extensionRange\": [{ \"start\": 536000000, \"end\": 536000001 }] }, { \"name\": \"FileDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"package\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"dependency\", \"number\": 3, \"type\": 9, \"label\": 3 }, { \"name\": \"public_dependency\", \"number\": 10, \"type\": 5, \"label\": 3 }, { \"name\": \"weak_dependency\", \"number\": 11, \"type\": 5, \"label\": 3 }, { \"name\": \"option_dependency\", \"number\": 15, \"type\": 9, \"label\": 3 }, { \"name\": \"message_type\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto\" }, { \"name\": \"enum_type\", \"number\": 5, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto\" }, { \"name\": \"service\", \"number\": 6, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.ServiceDescriptorProto\" }, { \"name\": \"extension\", \"number\": 7, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"options\", \"number\": 8, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FileOptions\" }, { \"name\": \"source_code_info\", \"number\": 9, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.SourceCodeInfo\" }, { \"name\": \"syntax\", \"number\": 12, \"type\": 9, \"label\": 1 }, { \"name\": \"edition\", \"number\": 14, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }] }, { \"name\": \"DescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"field\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"extension\", \"number\": 6, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"nested_type\", \"number\": 3, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto\" }, { \"name\": \"enum_type\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto\" }, { \"name\": \"extension_range\", \"number\": 5, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto.ExtensionRange\" }, { \"name\": \"oneof_decl\", \"number\": 8, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.OneofDescriptorProto\" }, { \"name\": \"options\", \"number\": 7, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.MessageOptions\" }, { \"name\": \"reserved_range\", \"number\": 9, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto.ReservedRange\" }, { \"name\": \"reserved_name\", \"number\": 10, \"type\": 9, \"label\": 3 }, { \"name\": \"visibility\", \"number\": 11, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.SymbolVisibility\" }], \"nestedType\": [{ \"name\": \"ExtensionRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.ExtensionRangeOptions\" }] }, { \"name\": \"ReservedRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }] }] }, { \"name\": \"ExtensionRangeOptions\", \"field\": [{ \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }, { \"name\": \"declaration\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.ExtensionRangeOptions.Declaration\", \"options\": { \"retention\": 2 } }, { \"name\": \"features\", \"number\": 50, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"verification\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.ExtensionRangeOptions.VerificationState\", \"defaultValue\": \"UNVERIFIED\", \"options\": { \"retention\": 2 } }], \"nestedType\": [{ \"name\": \"Declaration\", \"field\": [{ \"name\": \"number\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"full_name\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"type\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"reserved\", \"number\": 5, \"type\": 8, \"label\": 1 }, { \"name\": \"repeated\", \"number\": 6, \"type\": 8, \"label\": 1 }] }], \"enumType\": [{ \"name\": \"VerificationState\", \"value\": [{ \"name\": \"DECLARATION\", \"number\": 0 }, { \"name\": \"UNVERIFIED\", \"number\": 1 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"FieldDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"number\", \"number\": 3, \"type\": 5, \"label\": 1 }, { \"name\": \"label\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldDescriptorProto.Label\" }, { \"name\": \"type\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldDescriptorProto.Type\" }, { \"name\": \"type_name\", \"number\": 6, \"type\": 9, \"label\": 1 }, { \"name\": \"extendee\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"default_value\", \"number\": 7, \"type\": 9, \"label\": 1 }, { \"name\": \"oneof_index\", \"number\": 9, \"type\": 5, \"label\": 1 }, { \"name\": \"json_name\", \"number\": 10, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 8, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions\" }, { \"name\": \"proto3_optional\", \"number\": 17, \"type\": 8, \"label\": 1 }], \"enumType\": [{ \"name\": \"Type\", \"value\": [{ \"name\": \"TYPE_DOUBLE\", \"number\": 1 }, { \"name\": \"TYPE_FLOAT\", \"number\": 2 }, { \"name\": \"TYPE_INT64\", \"number\": 3 }, { \"name\": \"TYPE_UINT64\", \"number\": 4 }, { \"name\": \"TYPE_INT32\", \"number\": 5 }, { \"name\": \"TYPE_FIXED64\", \"number\": 6 }, { \"name\": \"TYPE_FIXED32\", \"number\": 7 }, { \"name\": \"TYPE_BOOL\", \"number\": 8 }, { \"name\": \"TYPE_STRING\", \"number\": 9 }, { \"name\": \"TYPE_GROUP\", \"number\": 10 }, { \"name\": \"TYPE_MESSAGE\", \"number\": 11 }, { \"name\": \"TYPE_BYTES\", \"number\": 12 }, { \"name\": \"TYPE_UINT32\", \"number\": 13 }, { \"name\": \"TYPE_ENUM\", \"number\": 14 }, { \"name\": \"TYPE_SFIXED32\", \"number\": 15 }, { \"name\": \"TYPE_SFIXED64\", \"number\": 16 }, { \"name\": \"TYPE_SINT32\", \"number\": 17 }, { \"name\": \"TYPE_SINT64\", \"number\": 18 }] }, { \"name\": \"Label\", \"value\": [{ \"name\": \"LABEL_OPTIONAL\", \"number\": 1 }, { \"name\": \"LABEL_REPEATED\", \"number\": 3 }, { \"name\": \"LABEL_REQUIRED\", \"number\": 2 }] }] }, { \"name\": \"OneofDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 2, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.OneofOptions\" }] }, { \"name\": \"EnumDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"value\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumValueDescriptorProto\" }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.EnumOptions\" }, { \"name\": \"reserved_range\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto.EnumReservedRange\" }, { \"name\": \"reserved_name\", \"number\": 5, \"type\": 9, \"label\": 3 }, { \"name\": \"visibility\", \"number\": 6, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.SymbolVisibility\" }], \"nestedType\": [{ \"name\": \"EnumReservedRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }] }] }, { \"name\": \"EnumValueDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"number\", \"number\": 2, \"type\": 5, \"label\": 1 }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.EnumValueOptions\" }] }, { \"name\": \"ServiceDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"method\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.MethodDescriptorProto\" }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.ServiceOptions\" }] }, { \"name\": \"MethodDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"input_type\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"output_type\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.MethodOptions\" }, { \"name\": \"client_streaming\", \"number\": 5, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"server_streaming\", \"number\": 6, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }] }, { \"name\": \"FileOptions\", \"field\": [{ \"name\": \"java_package\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"java_outer_classname\", \"number\": 8, \"type\": 9, \"label\": 1 }, { \"name\": \"java_multiple_files\", \"number\": 10, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\", \"options\": {} }, { \"name\": \"java_generate_equals_and_hash\", \"number\": 20, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"java_string_check_utf8\", \"number\": 27, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"optimize_for\", \"number\": 9, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FileOptions.OptimizeMode\", \"defaultValue\": \"SPEED\" }, { \"name\": \"go_package\", \"number\": 11, \"type\": 9, \"label\": 1 }, { \"name\": \"cc_generic_services\", \"number\": 16, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"java_generic_services\", \"number\": 17, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"py_generic_services\", \"number\": 18, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 23, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"cc_enable_arenas\", \"number\": 31, \"type\": 8, \"label\": 1, \"defaultValue\": \"true\" }, { \"name\": \"objc_class_prefix\", \"number\": 36, \"type\": 9, \"label\": 1 }, { \"name\": \"csharp_namespace\", \"number\": 37, \"type\": 9, \"label\": 1 }, { \"name\": \"swift_prefix\", \"number\": 39, \"type\": 9, \"label\": 1 }, { \"name\": \"php_class_prefix\", \"number\": 40, \"type\": 9, \"label\": 1 }, { \"name\": \"php_namespace\", \"number\": 41, \"type\": 9, \"label\": 1 }, { \"name\": \"php_metadata_namespace\", \"number\": 44, \"type\": 9, \"label\": 1 }, { \"name\": \"ruby_package\", \"number\": 45, \"type\": 9, \"label\": 1 }, { \"name\": \"features\", \"number\": 50, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"enumType\": [{ \"name\": \"OptimizeMode\", \"value\": [{ \"name\": \"SPEED\", \"number\": 1 }, { \"name\": \"CODE_SIZE\", \"number\": 2 }, { \"name\": \"LITE_RUNTIME\", \"number\": 3 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"MessageOptions\", \"field\": [{ \"name\": \"message_set_wire_format\", \"number\": 1, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"no_standard_descriptor_accessor\", \"number\": 2, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"map_entry\", \"number\": 7, \"type\": 8, \"label\": 1 }, { \"name\": \"deprecated_legacy_json_field_conflicts\", \"number\": 11, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"features\", \"number\": 12, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"FieldOptions\", \"field\": [{ \"name\": \"ctype\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.CType\", \"defaultValue\": \"STRING\" }, { \"name\": \"packed\", \"number\": 2, \"type\": 8, \"label\": 1 }, { \"name\": \"jstype\", \"number\": 6, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.JSType\", \"defaultValue\": \"JS_NORMAL\" }, { \"name\": \"lazy\", \"number\": 5, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"unverified_lazy\", \"number\": 15, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"weak\", \"number\": 10, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\", \"options\": { \"deprecated\": true } }, { \"name\": \"debug_redact\", \"number\": 16, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"retention\", \"number\": 17, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.OptionRetention\" }, { \"name\": \"targets\", \"number\": 19, \"type\": 14, \"label\": 3, \"typeName\": \".google.protobuf.FieldOptions.OptionTargetType\" }, { \"name\": \"edition_defaults\", \"number\": 20, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldOptions.EditionDefault\" }, { \"name\": \"features\", \"number\": 21, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"feature_support\", \"number\": 22, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.FeatureSupport\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"nestedType\": [{ \"name\": \"EditionDefault\", \"field\": [{ \"name\": \"edition\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"value\", \"number\": 2, \"type\": 9, \"label\": 1 }] }, { \"name\": \"FeatureSupport\", \"field\": [{ \"name\": \"edition_introduced\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"edition_deprecated\", \"number\": 2, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"deprecation_warning\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"edition_removed\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"removal_error\", \"number\": 5, \"type\": 9, \"label\": 1 }] }], \"enumType\": [{ \"name\": \"CType\", \"value\": [{ \"name\": \"STRING\", \"number\": 0 }, { \"name\": \"CORD\", \"number\": 1 }, { \"name\": \"STRING_PIECE\", \"number\": 2 }] }, { \"name\": \"JSType\", \"value\": [{ \"name\": \"JS_NORMAL\", \"number\": 0 }, { \"name\": \"JS_STRING\", \"number\": 1 }, { \"name\": \"JS_NUMBER\", \"number\": 2 }] }, { \"name\": \"OptionRetention\", \"value\": [{ \"name\": \"RETENTION_UNKNOWN\", \"number\": 0 }, { \"name\": \"RETENTION_RUNTIME\", \"number\": 1 }, { \"name\": \"RETENTION_SOURCE\", \"number\": 2 }] }, { \"name\": \"OptionTargetType\", \"value\": [{ \"name\": \"TARGET_TYPE_UNKNOWN\", \"number\": 0 }, { \"name\": \"TARGET_TYPE_FILE\", \"number\": 1 }, { \"name\": \"TARGET_TYPE_EXTENSION_RANGE\", \"number\": 2 }, { \"name\": \"TARGET_TYPE_MESSAGE\", \"number\": 3 }, { \"name\": \"TARGET_TYPE_FIELD\", \"number\": 4 }, { \"name\": \"TARGET_TYPE_ONEOF\", \"number\": 5 }, { \"name\": \"TARGET_TYPE_ENUM\", \"number\": 6 }, { \"name\": \"TARGET_TYPE_ENUM_ENTRY\", \"number\": 7 }, { \"name\": \"TARGET_TYPE_SERVICE\", \"number\": 8 }, { \"name\": \"TARGET_TYPE_METHOD\", \"number\": 9 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"OneofOptions\", \"field\": [{ \"name\": \"features\", \"number\": 1, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"EnumOptions\", \"field\": [{ \"name\": \"allow_alias\", \"number\": 2, \"type\": 8, \"label\": 1 }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated_legacy_json_field_conflicts\", \"number\": 6, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"features\", \"number\": 7, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"EnumValueOptions\", \"field\": [{ \"name\": \"deprecated\", \"number\": 1, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"features\", \"number\": 2, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"debug_redact\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"feature_support\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.FeatureSupport\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"ServiceOptions\", \"field\": [{ \"name\": \"features\", \"number\": 34, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"deprecated\", \"number\": 33, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"MethodOptions\", \"field\": [{ \"name\": \"deprecated\", \"number\": 33, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"idempotency_level\", \"number\": 34, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.MethodOptions.IdempotencyLevel\", \"defaultValue\": \"IDEMPOTENCY_UNKNOWN\" }, { \"name\": \"features\", \"number\": 35, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"enumType\": [{ \"name\": \"IdempotencyLevel\", \"value\": [{ \"name\": \"IDEMPOTENCY_UNKNOWN\", \"number\": 0 }, { \"name\": \"NO_SIDE_EFFECTS\", \"number\": 1 }, { \"name\": \"IDEMPOTENT\", \"number\": 2 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"UninterpretedOption\", \"field\": [{ \"name\": \"name\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption.NamePart\" }, { \"name\": \"identifier_value\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"positive_int_value\", \"number\": 4, \"type\": 4, \"label\": 1 }, { \"name\": \"negative_int_value\", \"number\": 5, \"type\": 3, \"label\": 1 }, { \"name\": \"double_value\", \"number\": 6, \"type\": 1, \"label\": 1 }, { \"name\": \"string_value\", \"number\": 7, \"type\": 12, \"label\": 1 }, { \"name\": \"aggregate_value\", \"number\": 8, \"type\": 9, \"label\": 1 }], \"nestedType\": [{ \"name\": \"NamePart\", \"field\": [{ \"name\": \"name_part\", \"number\": 1, \"type\": 9, \"label\": 2 }, { \"name\": \"is_extension\", \"number\": 2, \"type\": 8, \"label\": 2 }] }] }, { \"name\": \"FeatureSet\", \"field\": [{ \"name\": \"field_presence\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.FieldPresence\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"EXPLICIT\", \"edition\": 900 }, { \"value\": \"IMPLICIT\", \"edition\": 999 }, { \"value\": \"EXPLICIT\", \"edition\": 1000 }] } }, { \"name\": \"enum_type\", \"number\": 2, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.EnumType\", \"options\": { \"retention\": 1, \"targets\": [6, 1], \"editionDefaults\": [{ \"value\": \"CLOSED\", \"edition\": 900 }, { \"value\": \"OPEN\", \"edition\": 999 }] } }, { \"name\": \"repeated_field_encoding\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.RepeatedFieldEncoding\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"EXPANDED\", \"edition\": 900 }, { \"value\": \"PACKED\", \"edition\": 999 }] } }, { \"name\": \"utf8_validation\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.Utf8Validation\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"NONE\", \"edition\": 900 }, { \"value\": \"VERIFY\", \"edition\": 999 }] } }, { \"name\": \"message_encoding\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.MessageEncoding\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"LENGTH_PREFIXED\", \"edition\": 900 }] } }, { \"name\": \"json_format\", \"number\": 6, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.JsonFormat\", \"options\": { \"retention\": 1, \"targets\": [3, 6, 1], \"editionDefaults\": [{ \"value\": \"LEGACY_BEST_EFFORT\", \"edition\": 900 }, { \"value\": \"ALLOW\", \"edition\": 999 }] } }, { \"name\": \"enforce_naming_style\", \"number\": 7, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.EnforceNamingStyle\", \"options\": { \"retention\": 2, \"targets\": [1, 2, 3, 4, 5, 6, 7, 8, 9], \"editionDefaults\": [{ \"value\": \"STYLE_LEGACY\", \"edition\": 900 }, { \"value\": \"STYLE2024\", \"edition\": 1001 }] } }, { \"name\": \"default_symbol_visibility\", \"number\": 8, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\", \"options\": { \"retention\": 2, \"targets\": [1], \"editionDefaults\": [{ \"value\": \"EXPORT_ALL\", \"edition\": 900 }, { \"value\": \"EXPORT_TOP_LEVEL\", \"edition\": 1001 }] } }], \"nestedType\": [{ \"name\": \"VisibilityFeature\", \"enumType\": [{ \"name\": \"DefaultSymbolVisibility\", \"value\": [{ \"name\": \"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\", \"number\": 0 }, { \"name\": \"EXPORT_ALL\", \"number\": 1 }, { \"name\": \"EXPORT_TOP_LEVEL\", \"number\": 2 }, { \"name\": \"LOCAL_ALL\", \"number\": 3 }, { \"name\": \"STRICT\", \"number\": 4 }] }] }], \"enumType\": [{ \"name\": \"FieldPresence\", \"value\": [{ \"name\": \"FIELD_PRESENCE_UNKNOWN\", \"number\": 0 }, { \"name\": \"EXPLICIT\", \"number\": 1 }, { \"name\": \"IMPLICIT\", \"number\": 2 }, { \"name\": \"LEGACY_REQUIRED\", \"number\": 3 }] }, { \"name\": \"EnumType\", \"value\": [{ \"name\": \"ENUM_TYPE_UNKNOWN\", \"number\": 0 }, { \"name\": \"OPEN\", \"number\": 1 }, { \"name\": \"CLOSED\", \"number\": 2 }] }, { \"name\": \"RepeatedFieldEncoding\", \"value\": [{ \"name\": \"REPEATED_FIELD_ENCODING_UNKNOWN\", \"number\": 0 }, { \"name\": \"PACKED\", \"number\": 1 }, { \"name\": \"EXPANDED\", \"number\": 2 }] }, { \"name\": \"Utf8Validation\", \"value\": [{ \"name\": \"UTF8_VALIDATION_UNKNOWN\", \"number\": 0 }, { \"name\": \"VERIFY\", \"number\": 2 }, { \"name\": \"NONE\", \"number\": 3 }] }, { \"name\": \"MessageEncoding\", \"value\": [{ \"name\": \"MESSAGE_ENCODING_UNKNOWN\", \"number\": 0 }, { \"name\": \"LENGTH_PREFIXED\", \"number\": 1 }, { \"name\": \"DELIMITED\", \"number\": 2 }] }, { \"name\": \"JsonFormat\", \"value\": [{ \"name\": \"JSON_FORMAT_UNKNOWN\", \"number\": 0 }, { \"name\": \"ALLOW\", \"number\": 1 }, { \"name\": \"LEGACY_BEST_EFFORT\", \"number\": 2 }] }, { \"name\": \"EnforceNamingStyle\", \"value\": [{ \"name\": \"ENFORCE_NAMING_STYLE_UNKNOWN\", \"number\": 0 }, { \"name\": \"STYLE2024\", \"number\": 1 }, { \"name\": \"STYLE_LEGACY\", \"number\": 2 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 9995 }, { \"start\": 9995, \"end\": 10000 }, { \"start\": 10000, \"end\": 10001 }] }, { \"name\": \"FeatureSetDefaults\", \"field\": [{ \"name\": \"defaults\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\" }, { \"name\": \"minimum_edition\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"maximum_edition\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }], \"nestedType\": [{ \"name\": \"FeatureSetEditionDefault\", \"field\": [{ \"name\": \"edition\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"overridable_features\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"fixed_features\", \"number\": 5, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }] }] }, { \"name\": \"SourceCodeInfo\", \"field\": [{ \"name\": \"location\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.SourceCodeInfo.Location\" }], \"nestedType\": [{ \"name\": \"Location\", \"field\": [{ \"name\": \"path\", \"number\": 1, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"span\", \"number\": 2, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"leading_comments\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"trailing_comments\", \"number\": 4, \"type\": 9, \"label\": 1 }, { \"name\": \"leading_detached_comments\", \"number\": 6, \"type\": 9, \"label\": 3 }] }], \"extensionRange\": [{ \"start\": 536000000, \"end\": 536000001 }] }, { \"name\": \"GeneratedCodeInfo\", \"field\": [{ \"name\": \"annotation\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.GeneratedCodeInfo.Annotation\" }], \"nestedType\": [{ \"name\": \"Annotation\", \"field\": [{ \"name\": \"path\", \"number\": 1, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"source_file\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"begin\", \"number\": 3, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 4, \"type\": 5, \"label\": 1 }, { \"name\": \"semantic\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.GeneratedCodeInfo.Annotation.Semantic\" }], \"enumType\": [{ \"name\": \"Semantic\", \"value\": [{ \"name\": \"NONE\", \"number\": 0 }, { \"name\": \"SET\", \"number\": 1 }, { \"name\": \"ALIAS\", \"number\": 2 }] }] }] }], \"enumType\": [{ \"name\": \"Edition\", \"value\": [{ \"name\": \"EDITION_UNKNOWN\", \"number\": 0 }, { \"name\": \"EDITION_LEGACY\", \"number\": 900 }, { \"name\": \"EDITION_PROTO2\", \"number\": 998 }, { \"name\": \"EDITION_PROTO3\", \"number\": 999 }, { \"name\": \"EDITION_2023\", \"number\": 1000 }, { \"name\": \"EDITION_2024\", \"number\": 1001 }, { \"name\": \"EDITION_UNSTABLE\", \"number\": 9999 }, { \"name\": \"EDITION_1_TEST_ONLY\", \"number\": 1 }, { \"name\": \"EDITION_2_TEST_ONLY\", \"number\": 2 }, { \"name\": \"EDITION_99997_TEST_ONLY\", \"number\": 99997 }, { \"name\": \"EDITION_99998_TEST_ONLY\", \"number\": 99998 }, { \"name\": \"EDITION_99999_TEST_ONLY\", \"number\": 99999 }, { \"name\": \"EDITION_MAX\", \"number\": 2147483647 }] }, { \"name\": \"SymbolVisibility\", \"value\": [{ \"name\": \"VISIBILITY_UNSET\", \"number\": 0 }, { \"name\": \"VISIBILITY_LOCAL\", \"number\": 1 }, { \"name\": \"VISIBILITY_EXPORT\", \"number\": 2 }] }] });\n/**\n * Describes the message google.protobuf.FileDescriptorSet.\n * Use `create(FileDescriptorSetSchema)` to create a new message.\n */\nexport const FileDescriptorSetSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 0);\n/**\n * Describes the message google.protobuf.FileDescriptorProto.\n * Use `create(FileDescriptorProtoSchema)` to create a new message.\n */\nexport const FileDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 1);\n/**\n * Describes the message google.protobuf.DescriptorProto.\n * Use `create(DescriptorProtoSchema)` to create a new message.\n */\nexport const DescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2);\n/**\n * Describes the message google.protobuf.DescriptorProto.ExtensionRange.\n * Use `create(DescriptorProto_ExtensionRangeSchema)` to create a new message.\n */\nexport const DescriptorProto_ExtensionRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2, 0);\n/**\n * Describes the message google.protobuf.DescriptorProto.ReservedRange.\n * Use `create(DescriptorProto_ReservedRangeSchema)` to create a new message.\n */\nexport const DescriptorProto_ReservedRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2, 1);\n/**\n * Describes the message google.protobuf.ExtensionRangeOptions.\n * Use `create(ExtensionRangeOptionsSchema)` to create a new message.\n */\nexport const ExtensionRangeOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 3);\n/**\n * Describes the message google.protobuf.ExtensionRangeOptions.Declaration.\n * Use `create(ExtensionRangeOptions_DeclarationSchema)` to create a new message.\n */\nexport const ExtensionRangeOptions_DeclarationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 3, 0);\n/**\n * The verification state of the extension range.\n *\n * @generated from enum google.protobuf.ExtensionRangeOptions.VerificationState\n */\nexport var ExtensionRangeOptions_VerificationState;\n(function (ExtensionRangeOptions_VerificationState) {\n /**\n * All the extensions of the range must be declared.\n *\n * @generated from enum value: DECLARATION = 0;\n */\n ExtensionRangeOptions_VerificationState[ExtensionRangeOptions_VerificationState[\"DECLARATION\"] = 0] = \"DECLARATION\";\n /**\n * @generated from enum value: UNVERIFIED = 1;\n */\n ExtensionRangeOptions_VerificationState[ExtensionRangeOptions_VerificationState[\"UNVERIFIED\"] = 1] = \"UNVERIFIED\";\n})(ExtensionRangeOptions_VerificationState || (ExtensionRangeOptions_VerificationState = {}));\n/**\n * Describes the enum google.protobuf.ExtensionRangeOptions.VerificationState.\n */\nexport const ExtensionRangeOptions_VerificationStateSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 3, 0);\n/**\n * Describes the message google.protobuf.FieldDescriptorProto.\n * Use `create(FieldDescriptorProtoSchema)` to create a new message.\n */\nexport const FieldDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 4);\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Type\n */\nexport var FieldDescriptorProto_Type;\n(function (FieldDescriptorProto_Type) {\n /**\n * 0 is reserved for errors.\n * Order is weird for historical reasons.\n *\n * @generated from enum value: TYPE_DOUBLE = 1;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"DOUBLE\"] = 1] = \"DOUBLE\";\n /**\n * @generated from enum value: TYPE_FLOAT = 2;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FLOAT\"] = 2] = \"FLOAT\";\n /**\n * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n * negative values are likely.\n *\n * @generated from enum value: TYPE_INT64 = 3;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"INT64\"] = 3] = \"INT64\";\n /**\n * @generated from enum value: TYPE_UINT64 = 4;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"UINT64\"] = 4] = \"UINT64\";\n /**\n * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n * negative values are likely.\n *\n * @generated from enum value: TYPE_INT32 = 5;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"INT32\"] = 5] = \"INT32\";\n /**\n * @generated from enum value: TYPE_FIXED64 = 6;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FIXED64\"] = 6] = \"FIXED64\";\n /**\n * @generated from enum value: TYPE_FIXED32 = 7;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FIXED32\"] = 7] = \"FIXED32\";\n /**\n * @generated from enum value: TYPE_BOOL = 8;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"BOOL\"] = 8] = \"BOOL\";\n /**\n * @generated from enum value: TYPE_STRING = 9;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"STRING\"] = 9] = \"STRING\";\n /**\n * Tag-delimited aggregate.\n * Group type is deprecated and not supported after google.protobuf. However, Proto3\n * implementations should still be able to parse the group wire format and\n * treat group fields as unknown fields. In Editions, the group wire format\n * can be enabled via the `message_encoding` feature.\n *\n * @generated from enum value: TYPE_GROUP = 10;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"GROUP\"] = 10] = \"GROUP\";\n /**\n * Length-delimited aggregate.\n *\n * @generated from enum value: TYPE_MESSAGE = 11;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"MESSAGE\"] = 11] = \"MESSAGE\";\n /**\n * New in version 2.\n *\n * @generated from enum value: TYPE_BYTES = 12;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"BYTES\"] = 12] = \"BYTES\";\n /**\n * @generated from enum value: TYPE_UINT32 = 13;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"UINT32\"] = 13] = \"UINT32\";\n /**\n * @generated from enum value: TYPE_ENUM = 14;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"ENUM\"] = 14] = \"ENUM\";\n /**\n * @generated from enum value: TYPE_SFIXED32 = 15;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SFIXED32\"] = 15] = \"SFIXED32\";\n /**\n * @generated from enum value: TYPE_SFIXED64 = 16;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SFIXED64\"] = 16] = \"SFIXED64\";\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT32 = 17;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SINT32\"] = 17] = \"SINT32\";\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT64 = 18;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SINT64\"] = 18] = \"SINT64\";\n})(FieldDescriptorProto_Type || (FieldDescriptorProto_Type = {}));\n/**\n * Describes the enum google.protobuf.FieldDescriptorProto.Type.\n */\nexport const FieldDescriptorProto_TypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 4, 0);\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Label\n */\nexport var FieldDescriptorProto_Label;\n(function (FieldDescriptorProto_Label) {\n /**\n * 0 is reserved for errors\n *\n * @generated from enum value: LABEL_OPTIONAL = 1;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"OPTIONAL\"] = 1] = \"OPTIONAL\";\n /**\n * @generated from enum value: LABEL_REPEATED = 3;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"REPEATED\"] = 3] = \"REPEATED\";\n /**\n * The required label is only allowed in google.protobuf. In proto3 and Editions\n * it's explicitly prohibited. In Editions, the `field_presence` feature\n * can be used to get this behavior.\n *\n * @generated from enum value: LABEL_REQUIRED = 2;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"REQUIRED\"] = 2] = \"REQUIRED\";\n})(FieldDescriptorProto_Label || (FieldDescriptorProto_Label = {}));\n/**\n * Describes the enum google.protobuf.FieldDescriptorProto.Label.\n */\nexport const FieldDescriptorProto_LabelSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 4, 1);\n/**\n * Describes the message google.protobuf.OneofDescriptorProto.\n * Use `create(OneofDescriptorProtoSchema)` to create a new message.\n */\nexport const OneofDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 5);\n/**\n * Describes the message google.protobuf.EnumDescriptorProto.\n * Use `create(EnumDescriptorProtoSchema)` to create a new message.\n */\nexport const EnumDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 6);\n/**\n * Describes the message google.protobuf.EnumDescriptorProto.EnumReservedRange.\n * Use `create(EnumDescriptorProto_EnumReservedRangeSchema)` to create a new message.\n */\nexport const EnumDescriptorProto_EnumReservedRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 6, 0);\n/**\n * Describes the message google.protobuf.EnumValueDescriptorProto.\n * Use `create(EnumValueDescriptorProtoSchema)` to create a new message.\n */\nexport const EnumValueDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 7);\n/**\n * Describes the message google.protobuf.ServiceDescriptorProto.\n * Use `create(ServiceDescriptorProtoSchema)` to create a new message.\n */\nexport const ServiceDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 8);\n/**\n * Describes the message google.protobuf.MethodDescriptorProto.\n * Use `create(MethodDescriptorProtoSchema)` to create a new message.\n */\nexport const MethodDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 9);\n/**\n * Describes the message google.protobuf.FileOptions.\n * Use `create(FileOptionsSchema)` to create a new message.\n */\nexport const FileOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 10);\n/**\n * Generated classes can be optimized for speed or code size.\n *\n * @generated from enum google.protobuf.FileOptions.OptimizeMode\n */\nexport var FileOptions_OptimizeMode;\n(function (FileOptions_OptimizeMode) {\n /**\n * Generate complete code for parsing, serialization,\n *\n * @generated from enum value: SPEED = 1;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"SPEED\"] = 1] = \"SPEED\";\n /**\n * etc.\n *\n * Use ReflectionOps to implement these methods.\n *\n * @generated from enum value: CODE_SIZE = 2;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"CODE_SIZE\"] = 2] = \"CODE_SIZE\";\n /**\n * Generate code using MessageLite and the lite runtime.\n *\n * @generated from enum value: LITE_RUNTIME = 3;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"LITE_RUNTIME\"] = 3] = \"LITE_RUNTIME\";\n})(FileOptions_OptimizeMode || (FileOptions_OptimizeMode = {}));\n/**\n * Describes the enum google.protobuf.FileOptions.OptimizeMode.\n */\nexport const FileOptions_OptimizeModeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 10, 0);\n/**\n * Describes the message google.protobuf.MessageOptions.\n * Use `create(MessageOptionsSchema)` to create a new message.\n */\nexport const MessageOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 11);\n/**\n * Describes the message google.protobuf.FieldOptions.\n * Use `create(FieldOptionsSchema)` to create a new message.\n */\nexport const FieldOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12);\n/**\n * Describes the message google.protobuf.FieldOptions.EditionDefault.\n * Use `create(FieldOptions_EditionDefaultSchema)` to create a new message.\n */\nexport const FieldOptions_EditionDefaultSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12, 0);\n/**\n * Describes the message google.protobuf.FieldOptions.FeatureSupport.\n * Use `create(FieldOptions_FeatureSupportSchema)` to create a new message.\n */\nexport const FieldOptions_FeatureSupportSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12, 1);\n/**\n * @generated from enum google.protobuf.FieldOptions.CType\n */\nexport var FieldOptions_CType;\n(function (FieldOptions_CType) {\n /**\n * Default mode.\n *\n * @generated from enum value: STRING = 0;\n */\n FieldOptions_CType[FieldOptions_CType[\"STRING\"] = 0] = \"STRING\";\n /**\n * The option [ctype=CORD] may be applied to a non-repeated field of type\n * \"bytes\". It indicates that in C++, the data should be stored in a Cord\n * instead of a string. For very large strings, this may reduce memory\n * fragmentation. It may also allow better performance when parsing from a\n * Cord, or when parsing with aliasing enabled, as the parsed Cord may then\n * alias the original buffer.\n *\n * @generated from enum value: CORD = 1;\n */\n FieldOptions_CType[FieldOptions_CType[\"CORD\"] = 1] = \"CORD\";\n /**\n * @generated from enum value: STRING_PIECE = 2;\n */\n FieldOptions_CType[FieldOptions_CType[\"STRING_PIECE\"] = 2] = \"STRING_PIECE\";\n})(FieldOptions_CType || (FieldOptions_CType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.CType.\n */\nexport const FieldOptions_CTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 0);\n/**\n * @generated from enum google.protobuf.FieldOptions.JSType\n */\nexport var FieldOptions_JSType;\n(function (FieldOptions_JSType) {\n /**\n * Use the default type.\n *\n * @generated from enum value: JS_NORMAL = 0;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_NORMAL\"] = 0] = \"JS_NORMAL\";\n /**\n * Use JavaScript strings.\n *\n * @generated from enum value: JS_STRING = 1;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_STRING\"] = 1] = \"JS_STRING\";\n /**\n * Use JavaScript numbers.\n *\n * @generated from enum value: JS_NUMBER = 2;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_NUMBER\"] = 2] = \"JS_NUMBER\";\n})(FieldOptions_JSType || (FieldOptions_JSType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.JSType.\n */\nexport const FieldOptions_JSTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 1);\n/**\n * If set to RETENTION_SOURCE, the option will be omitted from the binary.\n *\n * @generated from enum google.protobuf.FieldOptions.OptionRetention\n */\nexport var FieldOptions_OptionRetention;\n(function (FieldOptions_OptionRetention) {\n /**\n * @generated from enum value: RETENTION_UNKNOWN = 0;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_UNKNOWN\"] = 0] = \"RETENTION_UNKNOWN\";\n /**\n * @generated from enum value: RETENTION_RUNTIME = 1;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_RUNTIME\"] = 1] = \"RETENTION_RUNTIME\";\n /**\n * @generated from enum value: RETENTION_SOURCE = 2;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_SOURCE\"] = 2] = \"RETENTION_SOURCE\";\n})(FieldOptions_OptionRetention || (FieldOptions_OptionRetention = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.OptionRetention.\n */\nexport const FieldOptions_OptionRetentionSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 2);\n/**\n * This indicates the types of entities that the field may apply to when used\n * as an option. If it is unset, then the field may be freely used as an\n * option on any kind of entity.\n *\n * @generated from enum google.protobuf.FieldOptions.OptionTargetType\n */\nexport var FieldOptions_OptionTargetType;\n(function (FieldOptions_OptionTargetType) {\n /**\n * @generated from enum value: TARGET_TYPE_UNKNOWN = 0;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_UNKNOWN\"] = 0] = \"TARGET_TYPE_UNKNOWN\";\n /**\n * @generated from enum value: TARGET_TYPE_FILE = 1;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_FILE\"] = 1] = \"TARGET_TYPE_FILE\";\n /**\n * @generated from enum value: TARGET_TYPE_EXTENSION_RANGE = 2;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_EXTENSION_RANGE\"] = 2] = \"TARGET_TYPE_EXTENSION_RANGE\";\n /**\n * @generated from enum value: TARGET_TYPE_MESSAGE = 3;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_MESSAGE\"] = 3] = \"TARGET_TYPE_MESSAGE\";\n /**\n * @generated from enum value: TARGET_TYPE_FIELD = 4;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_FIELD\"] = 4] = \"TARGET_TYPE_FIELD\";\n /**\n * @generated from enum value: TARGET_TYPE_ONEOF = 5;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ONEOF\"] = 5] = \"TARGET_TYPE_ONEOF\";\n /**\n * @generated from enum value: TARGET_TYPE_ENUM = 6;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ENUM\"] = 6] = \"TARGET_TYPE_ENUM\";\n /**\n * @generated from enum value: TARGET_TYPE_ENUM_ENTRY = 7;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ENUM_ENTRY\"] = 7] = \"TARGET_TYPE_ENUM_ENTRY\";\n /**\n * @generated from enum value: TARGET_TYPE_SERVICE = 8;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_SERVICE\"] = 8] = \"TARGET_TYPE_SERVICE\";\n /**\n * @generated from enum value: TARGET_TYPE_METHOD = 9;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_METHOD\"] = 9] = \"TARGET_TYPE_METHOD\";\n})(FieldOptions_OptionTargetType || (FieldOptions_OptionTargetType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.OptionTargetType.\n */\nexport const FieldOptions_OptionTargetTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 3);\n/**\n * Describes the message google.protobuf.OneofOptions.\n * Use `create(OneofOptionsSchema)` to create a new message.\n */\nexport const OneofOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 13);\n/**\n * Describes the message google.protobuf.EnumOptions.\n * Use `create(EnumOptionsSchema)` to create a new message.\n */\nexport const EnumOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 14);\n/**\n * Describes the message google.protobuf.EnumValueOptions.\n * Use `create(EnumValueOptionsSchema)` to create a new message.\n */\nexport const EnumValueOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 15);\n/**\n * Describes the message google.protobuf.ServiceOptions.\n * Use `create(ServiceOptionsSchema)` to create a new message.\n */\nexport const ServiceOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 16);\n/**\n * Describes the message google.protobuf.MethodOptions.\n * Use `create(MethodOptionsSchema)` to create a new message.\n */\nexport const MethodOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 17);\n/**\n * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n * or neither? HTTP based RPC implementation may choose GET verb for safe\n * methods, and PUT verb for idempotent methods instead of the default POST.\n *\n * @generated from enum google.protobuf.MethodOptions.IdempotencyLevel\n */\nexport var MethodOptions_IdempotencyLevel;\n(function (MethodOptions_IdempotencyLevel) {\n /**\n * @generated from enum value: IDEMPOTENCY_UNKNOWN = 0;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENCY_UNKNOWN\"] = 0] = \"IDEMPOTENCY_UNKNOWN\";\n /**\n * implies idempotent\n *\n * @generated from enum value: NO_SIDE_EFFECTS = 1;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"NO_SIDE_EFFECTS\"] = 1] = \"NO_SIDE_EFFECTS\";\n /**\n * idempotent, but may have side effects\n *\n * @generated from enum value: IDEMPOTENT = 2;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENT\"] = 2] = \"IDEMPOTENT\";\n})(MethodOptions_IdempotencyLevel || (MethodOptions_IdempotencyLevel = {}));\n/**\n * Describes the enum google.protobuf.MethodOptions.IdempotencyLevel.\n */\nexport const MethodOptions_IdempotencyLevelSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 17, 0);\n/**\n * Describes the message google.protobuf.UninterpretedOption.\n * Use `create(UninterpretedOptionSchema)` to create a new message.\n */\nexport const UninterpretedOptionSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 18);\n/**\n * Describes the message google.protobuf.UninterpretedOption.NamePart.\n * Use `create(UninterpretedOption_NamePartSchema)` to create a new message.\n */\nexport const UninterpretedOption_NamePartSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 18, 0);\n/**\n * Describes the message google.protobuf.FeatureSet.\n * Use `create(FeatureSetSchema)` to create a new message.\n */\nexport const FeatureSetSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 19);\n/**\n * Describes the message google.protobuf.FeatureSet.VisibilityFeature.\n * Use `create(FeatureSet_VisibilityFeatureSchema)` to create a new message.\n */\nexport const FeatureSet_VisibilityFeatureSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 19, 0);\n/**\n * @generated from enum google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility\n */\nexport var FeatureSet_VisibilityFeature_DefaultSymbolVisibility;\n(function (FeatureSet_VisibilityFeature_DefaultSymbolVisibility) {\n /**\n * @generated from enum value: DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0;\n */\n FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility[\"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\"] = 0] = \"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\";\n /**\n * Default pre-EDITION_2024, all UNSET visibility are export.\n *\n * @generated from enum value: EXPORT_ALL = 1;\n */\n FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility[\"EXPORT_ALL\"] = 1] = \"EXPORT_ALL\";\n /**\n * All top-level symbols default to export, nested default to local.\n *\n * @generated from enum value: EXPORT_TOP_LEVEL = 2;\n */\n FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility[\"EXPORT_TOP_LEVEL\"] = 2] = \"EXPORT_TOP_LEVEL\";\n /**\n * All symbols default to local.\n *\n * @generated from enum value: LOCAL_ALL = 3;\n */\n FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility[\"LOCAL_ALL\"] = 3] = \"LOCAL_ALL\";\n /**\n * All symbols local by default. Nested types cannot be exported.\n * With special case caveat for message { enum {} reserved 1 to max; }\n * This is the recommended setting for new protos.\n *\n * @generated from enum value: STRICT = 4;\n */\n FeatureSet_VisibilityFeature_DefaultSymbolVisibility[FeatureSet_VisibilityFeature_DefaultSymbolVisibility[\"STRICT\"] = 4] = \"STRICT\";\n})(FeatureSet_VisibilityFeature_DefaultSymbolVisibility || (FeatureSet_VisibilityFeature_DefaultSymbolVisibility = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility.\n */\nexport const FeatureSet_VisibilityFeature_DefaultSymbolVisibilitySchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 0, 0);\n/**\n * @generated from enum google.protobuf.FeatureSet.FieldPresence\n */\nexport var FeatureSet_FieldPresence;\n(function (FeatureSet_FieldPresence) {\n /**\n * @generated from enum value: FIELD_PRESENCE_UNKNOWN = 0;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"FIELD_PRESENCE_UNKNOWN\"] = 0] = \"FIELD_PRESENCE_UNKNOWN\";\n /**\n * @generated from enum value: EXPLICIT = 1;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"EXPLICIT\"] = 1] = \"EXPLICIT\";\n /**\n * @generated from enum value: IMPLICIT = 2;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"IMPLICIT\"] = 2] = \"IMPLICIT\";\n /**\n * @generated from enum value: LEGACY_REQUIRED = 3;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"LEGACY_REQUIRED\"] = 3] = \"LEGACY_REQUIRED\";\n})(FeatureSet_FieldPresence || (FeatureSet_FieldPresence = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.FieldPresence.\n */\nexport const FeatureSet_FieldPresenceSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 0);\n/**\n * @generated from enum google.protobuf.FeatureSet.EnumType\n */\nexport var FeatureSet_EnumType;\n(function (FeatureSet_EnumType) {\n /**\n * @generated from enum value: ENUM_TYPE_UNKNOWN = 0;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"ENUM_TYPE_UNKNOWN\"] = 0] = \"ENUM_TYPE_UNKNOWN\";\n /**\n * @generated from enum value: OPEN = 1;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"OPEN\"] = 1] = \"OPEN\";\n /**\n * @generated from enum value: CLOSED = 2;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"CLOSED\"] = 2] = \"CLOSED\";\n})(FeatureSet_EnumType || (FeatureSet_EnumType = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.EnumType.\n */\nexport const FeatureSet_EnumTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 1);\n/**\n * @generated from enum google.protobuf.FeatureSet.RepeatedFieldEncoding\n */\nexport var FeatureSet_RepeatedFieldEncoding;\n(function (FeatureSet_RepeatedFieldEncoding) {\n /**\n * @generated from enum value: REPEATED_FIELD_ENCODING_UNKNOWN = 0;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"REPEATED_FIELD_ENCODING_UNKNOWN\"] = 0] = \"REPEATED_FIELD_ENCODING_UNKNOWN\";\n /**\n * @generated from enum value: PACKED = 1;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"PACKED\"] = 1] = \"PACKED\";\n /**\n * @generated from enum value: EXPANDED = 2;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"EXPANDED\"] = 2] = \"EXPANDED\";\n})(FeatureSet_RepeatedFieldEncoding || (FeatureSet_RepeatedFieldEncoding = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.RepeatedFieldEncoding.\n */\nexport const FeatureSet_RepeatedFieldEncodingSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 2);\n/**\n * @generated from enum google.protobuf.FeatureSet.Utf8Validation\n */\nexport var FeatureSet_Utf8Validation;\n(function (FeatureSet_Utf8Validation) {\n /**\n * @generated from enum value: UTF8_VALIDATION_UNKNOWN = 0;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"UTF8_VALIDATION_UNKNOWN\"] = 0] = \"UTF8_VALIDATION_UNKNOWN\";\n /**\n * @generated from enum value: VERIFY = 2;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"VERIFY\"] = 2] = \"VERIFY\";\n /**\n * @generated from enum value: NONE = 3;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"NONE\"] = 3] = \"NONE\";\n})(FeatureSet_Utf8Validation || (FeatureSet_Utf8Validation = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.Utf8Validation.\n */\nexport const FeatureSet_Utf8ValidationSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 3);\n/**\n * @generated from enum google.protobuf.FeatureSet.MessageEncoding\n */\nexport var FeatureSet_MessageEncoding;\n(function (FeatureSet_MessageEncoding) {\n /**\n * @generated from enum value: MESSAGE_ENCODING_UNKNOWN = 0;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"MESSAGE_ENCODING_UNKNOWN\"] = 0] = \"MESSAGE_ENCODING_UNKNOWN\";\n /**\n * @generated from enum value: LENGTH_PREFIXED = 1;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"LENGTH_PREFIXED\"] = 1] = \"LENGTH_PREFIXED\";\n /**\n * @generated from enum value: DELIMITED = 2;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"DELIMITED\"] = 2] = \"DELIMITED\";\n})(FeatureSet_MessageEncoding || (FeatureSet_MessageEncoding = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.MessageEncoding.\n */\nexport const FeatureSet_MessageEncodingSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 4);\n/**\n * @generated from enum google.protobuf.FeatureSet.JsonFormat\n */\nexport var FeatureSet_JsonFormat;\n(function (FeatureSet_JsonFormat) {\n /**\n * @generated from enum value: JSON_FORMAT_UNKNOWN = 0;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"JSON_FORMAT_UNKNOWN\"] = 0] = \"JSON_FORMAT_UNKNOWN\";\n /**\n * @generated from enum value: ALLOW = 1;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"ALLOW\"] = 1] = \"ALLOW\";\n /**\n * @generated from enum value: LEGACY_BEST_EFFORT = 2;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"LEGACY_BEST_EFFORT\"] = 2] = \"LEGACY_BEST_EFFORT\";\n})(FeatureSet_JsonFormat || (FeatureSet_JsonFormat = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.JsonFormat.\n */\nexport const FeatureSet_JsonFormatSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 5);\n/**\n * @generated from enum google.protobuf.FeatureSet.EnforceNamingStyle\n */\nexport var FeatureSet_EnforceNamingStyle;\n(function (FeatureSet_EnforceNamingStyle) {\n /**\n * @generated from enum value: ENFORCE_NAMING_STYLE_UNKNOWN = 0;\n */\n FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle[\"ENFORCE_NAMING_STYLE_UNKNOWN\"] = 0] = \"ENFORCE_NAMING_STYLE_UNKNOWN\";\n /**\n * @generated from enum value: STYLE2024 = 1;\n */\n FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle[\"STYLE2024\"] = 1] = \"STYLE2024\";\n /**\n * @generated from enum value: STYLE_LEGACY = 2;\n */\n FeatureSet_EnforceNamingStyle[FeatureSet_EnforceNamingStyle[\"STYLE_LEGACY\"] = 2] = \"STYLE_LEGACY\";\n})(FeatureSet_EnforceNamingStyle || (FeatureSet_EnforceNamingStyle = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.EnforceNamingStyle.\n */\nexport const FeatureSet_EnforceNamingStyleSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 6);\n/**\n * Describes the message google.protobuf.FeatureSetDefaults.\n * Use `create(FeatureSetDefaultsSchema)` to create a new message.\n */\nexport const FeatureSetDefaultsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 20);\n/**\n * Describes the message google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\n * Use `create(FeatureSetDefaults_FeatureSetEditionDefaultSchema)` to create a new message.\n */\nexport const FeatureSetDefaults_FeatureSetEditionDefaultSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 20, 0);\n/**\n * Describes the message google.protobuf.SourceCodeInfo.\n * Use `create(SourceCodeInfoSchema)` to create a new message.\n */\nexport const SourceCodeInfoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 21);\n/**\n * Describes the message google.protobuf.SourceCodeInfo.Location.\n * Use `create(SourceCodeInfo_LocationSchema)` to create a new message.\n */\nexport const SourceCodeInfo_LocationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 21, 0);\n/**\n * Describes the message google.protobuf.GeneratedCodeInfo.\n * Use `create(GeneratedCodeInfoSchema)` to create a new message.\n */\nexport const GeneratedCodeInfoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 22);\n/**\n * Describes the message google.protobuf.GeneratedCodeInfo.Annotation.\n * Use `create(GeneratedCodeInfo_AnnotationSchema)` to create a new message.\n */\nexport const GeneratedCodeInfo_AnnotationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 22, 0);\n/**\n * Represents the identified object's effect on the element in the original\n * .proto file.\n *\n * @generated from enum google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n */\nexport var GeneratedCodeInfo_Annotation_Semantic;\n(function (GeneratedCodeInfo_Annotation_Semantic) {\n /**\n * There is no effect or the effect is indescribable.\n *\n * @generated from enum value: NONE = 0;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"NONE\"] = 0] = \"NONE\";\n /**\n * The element is set or otherwise mutated.\n *\n * @generated from enum value: SET = 1;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"SET\"] = 1] = \"SET\";\n /**\n * An alias to the element is returned.\n *\n * @generated from enum value: ALIAS = 2;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"ALIAS\"] = 2] = \"ALIAS\";\n})(GeneratedCodeInfo_Annotation_Semantic || (GeneratedCodeInfo_Annotation_Semantic = {}));\n/**\n * Describes the enum google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\n */\nexport const GeneratedCodeInfo_Annotation_SemanticSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 22, 0, 0);\n/**\n * The full set of known editions.\n *\n * @generated from enum google.protobuf.Edition\n */\nexport var Edition;\n(function (Edition) {\n /**\n * A placeholder for an unknown edition value.\n *\n * @generated from enum value: EDITION_UNKNOWN = 0;\n */\n Edition[Edition[\"EDITION_UNKNOWN\"] = 0] = \"EDITION_UNKNOWN\";\n /**\n * A placeholder edition for specifying default behaviors *before* a feature\n * was first introduced. This is effectively an \"infinite past\".\n *\n * @generated from enum value: EDITION_LEGACY = 900;\n */\n Edition[Edition[\"EDITION_LEGACY\"] = 900] = \"EDITION_LEGACY\";\n /**\n * Legacy syntax \"editions\". These pre-date editions, but behave much like\n * distinct editions. These can't be used to specify the edition of proto\n * files, but feature definitions must supply proto2/proto3 defaults for\n * backwards compatibility.\n *\n * @generated from enum value: EDITION_PROTO2 = 998;\n */\n Edition[Edition[\"EDITION_PROTO2\"] = 998] = \"EDITION_PROTO2\";\n /**\n * @generated from enum value: EDITION_PROTO3 = 999;\n */\n Edition[Edition[\"EDITION_PROTO3\"] = 999] = \"EDITION_PROTO3\";\n /**\n * Editions that have been released. The specific values are arbitrary and\n * should not be depended on, but they will always be time-ordered for easy\n * comparison.\n *\n * @generated from enum value: EDITION_2023 = 1000;\n */\n Edition[Edition[\"EDITION_2023\"] = 1000] = \"EDITION_2023\";\n /**\n * @generated from enum value: EDITION_2024 = 1001;\n */\n Edition[Edition[\"EDITION_2024\"] = 1001] = \"EDITION_2024\";\n /**\n * A placeholder edition for developing and testing unscheduled features.\n *\n * @generated from enum value: EDITION_UNSTABLE = 9999;\n */\n Edition[Edition[\"EDITION_UNSTABLE\"] = 9999] = \"EDITION_UNSTABLE\";\n /**\n * Placeholder editions for testing feature resolution. These should not be\n * used or relied on outside of tests.\n *\n * @generated from enum value: EDITION_1_TEST_ONLY = 1;\n */\n Edition[Edition[\"EDITION_1_TEST_ONLY\"] = 1] = \"EDITION_1_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_2_TEST_ONLY = 2;\n */\n Edition[Edition[\"EDITION_2_TEST_ONLY\"] = 2] = \"EDITION_2_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99997_TEST_ONLY = 99997;\n */\n Edition[Edition[\"EDITION_99997_TEST_ONLY\"] = 99997] = \"EDITION_99997_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99998_TEST_ONLY = 99998;\n */\n Edition[Edition[\"EDITION_99998_TEST_ONLY\"] = 99998] = \"EDITION_99998_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99999_TEST_ONLY = 99999;\n */\n Edition[Edition[\"EDITION_99999_TEST_ONLY\"] = 99999] = \"EDITION_99999_TEST_ONLY\";\n /**\n * Placeholder for specifying unbounded edition support. This should only\n * ever be used by plugins that can expect to never require any changes to\n * support a new edition.\n *\n * @generated from enum value: EDITION_MAX = 2147483647;\n */\n Edition[Edition[\"EDITION_MAX\"] = 2147483647] = \"EDITION_MAX\";\n})(Edition || (Edition = {}));\n/**\n * Describes the enum google.protobuf.Edition.\n */\nexport const EditionSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 0);\n/**\n * Describes the 'visibility' of a symbol with respect to the proto import\n * system. Symbols can only be imported when the visibility rules do not prevent\n * it (ex: local symbols cannot be imported). Visibility modifiers can only set\n * on `message` and `enum` as they are the only types available to be referenced\n * from other files.\n *\n * @generated from enum google.protobuf.SymbolVisibility\n */\nexport var SymbolVisibility;\n(function (SymbolVisibility) {\n /**\n * @generated from enum value: VISIBILITY_UNSET = 0;\n */\n SymbolVisibility[SymbolVisibility[\"VISIBILITY_UNSET\"] = 0] = \"VISIBILITY_UNSET\";\n /**\n * @generated from enum value: VISIBILITY_LOCAL = 1;\n */\n SymbolVisibility[SymbolVisibility[\"VISIBILITY_LOCAL\"] = 1] = \"VISIBILITY_LOCAL\";\n /**\n * @generated from enum value: VISIBILITY_EXPORT = 2;\n */\n SymbolVisibility[SymbolVisibility[\"VISIBILITY_EXPORT\"] = 2] = \"VISIBILITY_EXPORT\";\n})(SymbolVisibility || (SymbolVisibility = {}));\n/**\n * Describes the enum google.protobuf.SymbolVisibility.\n */\nexport const SymbolVisibilitySchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 1);\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { restoreJsonNames } from \"./restore-json-names.js\";\nimport { createFileRegistry } from \"../registry.js\";\n/**\n * Hydrate a file descriptor for google/protobuf/descriptor.proto from a plain\n * object.\n *\n * See createFileDescriptorProtoBoot() for details.\n *\n * @private\n */\nexport function boot(boot) {\n const root = bootFileDescriptorProto(boot);\n root.messageType.forEach(restoreJsonNames);\n const reg = createFileRegistry(root, () => undefined);\n // biome-ignore lint/style/noNonNullAssertion: non-null assertion because we just created the registry from the file we look up\n return reg.getFile(root.name);\n}\n/**\n * Creates the message google.protobuf.FileDescriptorProto from an object literal.\n *\n * See createFileDescriptorProtoBoot() for details.\n *\n * @private\n */\nexport function bootFileDescriptorProto(init) {\n const proto = Object.create({\n syntax: \"\",\n edition: 0,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FileDescriptorProto\", dependency: [], publicDependency: [], weakDependency: [], optionDependency: [], service: [], extension: [] }, init), { messageType: init.messageType.map(bootDescriptorProto), enumType: init.enumType.map(bootEnumDescriptorProto) }));\n}\nfunction bootDescriptorProto(init) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const proto = Object.create({\n visibility: 0,\n });\n return Object.assign(proto, {\n $typeName: \"google.protobuf.DescriptorProto\",\n name: init.name,\n field: (_b = (_a = init.field) === null || _a === void 0 ? void 0 : _a.map(bootFieldDescriptorProto)) !== null && _b !== void 0 ? _b : [],\n extension: [],\n nestedType: (_d = (_c = init.nestedType) === null || _c === void 0 ? void 0 : _c.map(bootDescriptorProto)) !== null && _d !== void 0 ? _d : [],\n enumType: (_f = (_e = init.enumType) === null || _e === void 0 ? void 0 : _e.map(bootEnumDescriptorProto)) !== null && _f !== void 0 ? _f : [],\n extensionRange: (_h = (_g = init.extensionRange) === null || _g === void 0 ? void 0 : _g.map((e) => (Object.assign({ $typeName: \"google.protobuf.DescriptorProto.ExtensionRange\" }, e)))) !== null && _h !== void 0 ? _h : [],\n oneofDecl: [],\n reservedRange: [],\n reservedName: [],\n });\n}\nfunction bootFieldDescriptorProto(init) {\n const proto = Object.create({\n label: 1,\n typeName: \"\",\n extendee: \"\",\n defaultValue: \"\",\n oneofIndex: 0,\n jsonName: \"\",\n proto3Optional: false,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FieldDescriptorProto\" }, init), { options: init.options ? bootFieldOptions(init.options) : undefined }));\n}\nfunction bootFieldOptions(init) {\n var _a, _b, _c;\n const proto = Object.create({\n ctype: 0,\n packed: false,\n jstype: 0,\n lazy: false,\n unverifiedLazy: false,\n deprecated: false,\n weak: false,\n debugRedact: false,\n retention: 0,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FieldOptions\" }, init), { targets: (_a = init.targets) !== null && _a !== void 0 ? _a : [], editionDefaults: (_c = (_b = init.editionDefaults) === null || _b === void 0 ? void 0 : _b.map((e) => (Object.assign({ $typeName: \"google.protobuf.FieldOptions.EditionDefault\" }, e)))) !== null && _c !== void 0 ? _c : [], uninterpretedOption: [] }));\n}\nfunction bootEnumDescriptorProto(init) {\n const proto = Object.create({\n visibility: 0,\n });\n return Object.assign(proto, {\n $typeName: \"google.protobuf.EnumDescriptorProto\",\n name: init.name,\n reservedName: [],\n reservedRange: [],\n value: init.value.map((e) => (Object.assign({ $typeName: \"google.protobuf.EnumValueDescriptorProto\" }, e))),\n });\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { protoCamelCase } from \"../reflect/names.js\";\nimport { unsafeIsSetExplicit } from \"../reflect/unsafe.js\";\n/**\n * @private\n */\nexport function restoreJsonNames(message) {\n for (const f of message.field) {\n if (!unsafeIsSetExplicit(f, \"jsonName\")) {\n f.jsonName = protoCamelCase(f.name);\n }\n }\n message.nestedType.forEach(restoreJsonNames);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Return a fully-qualified name for a Protobuf descriptor.\n * For a file descriptor, return the original file path.\n *\n * See https://protobuf.com/docs/language-spec#fully-qualified-names\n */\nexport function qualifiedName(desc) {\n switch (desc.kind) {\n case \"field\":\n case \"oneof\":\n case \"rpc\":\n return desc.parent.typeName + \".\" + desc.name;\n case \"enum_value\": {\n const p = desc.parent.parent\n ? desc.parent.parent.typeName\n : desc.parent.file.proto.package;\n return p + (p.length > 0 ? \".\" : \"\") + desc.name;\n }\n case \"service\":\n case \"message\":\n case \"enum\":\n case \"extension\":\n return desc.typeName;\n case \"file\":\n return desc.proto.name;\n }\n}\n/**\n * Converts snake_case to protoCamelCase according to the convention\n * used by protoc to convert a field name to a JSON name.\n *\n * See https://protobuf.com/docs/language-spec#default-json-names\n *\n * The function protoSnakeCase provides the reverse.\n */\nexport function protoCamelCase(snakeCase) {\n let capNext = false;\n const b = [];\n for (let i = 0; i < snakeCase.length; i++) {\n let c = snakeCase.charAt(i);\n switch (c) {\n case \"_\":\n capNext = true;\n break;\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n b.push(c);\n capNext = false;\n break;\n default:\n if (capNext) {\n capNext = false;\n c = c.toUpperCase();\n }\n b.push(c);\n break;\n }\n }\n return b.join(\"\");\n}\n/**\n * Converts protoCamelCase to snake_case.\n *\n * This function is the reverse of function protoCamelCase. Note that some names\n * are not reversible - for example, \"foo__bar\" -> \"fooBar\" -> \"foo_bar\".\n */\nexport function protoSnakeCase(lowerCamelCase) {\n return lowerCamelCase.replace(/[A-Z]/g, (letter) => \"_\" + letter.toLowerCase());\n}\n/**\n * Names that cannot be used for object properties because they are reserved\n * by built-in JavaScript properties.\n */\nconst reservedObjectProperties = new Set([\n // names reserved by JavaScript\n \"constructor\",\n \"toString\",\n \"toJSON\",\n \"valueOf\",\n]);\n/**\n * Escapes names that are reserved for ECMAScript built-in object properties.\n *\n * Also see safeIdentifier() from @bufbuild/protoplugin.\n */\nexport function safeObjectProperty(name) {\n return reservedObjectProperties.has(name) ? name + \"$\" : name;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType, } from \"./descriptors.js\";\nimport { parseTextFormatEnumValue, parseTextFormatScalarValue, } from \"./wire/text-format.js\";\nimport { nestedTypes } from \"./reflect/nested-types.js\";\nimport { unsafeIsSetExplicit } from \"./reflect/unsafe.js\";\nimport { protoCamelCase, safeObjectProperty } from \"./reflect/names.js\";\n/**\n * Create a registry from the given inputs.\n *\n * An input can be:\n * - Any message, enum, service, or extension descriptor, which adds just the\n * descriptor for this type.\n * - A file descriptor, which adds all typed defined in this file.\n * - A registry, which adds all types from the registry.\n *\n * For duplicate descriptors (same type name), the one given last wins.\n */\nexport function createRegistry(...input) {\n return initBaseRegistry(input);\n}\n/**\n * Create a registry that allows adding and removing descriptors.\n */\nexport function createMutableRegistry(...input) {\n const reg = initBaseRegistry(input);\n return Object.assign(Object.assign({}, reg), { remove(desc) {\n var _a;\n if (desc.kind == \"extension\") {\n (_a = reg.extendees.get(desc.extendee.typeName)) === null || _a === void 0 ? void 0 : _a.delete(desc.number);\n }\n reg.types.delete(desc.typeName);\n } });\n}\nexport function createFileRegistry(...args) {\n const registry = createBaseRegistry();\n if (!args.length) {\n return registry;\n }\n if (\"$typeName\" in args[0] &&\n args[0].$typeName == \"google.protobuf.FileDescriptorSet\") {\n for (const file of args[0].file) {\n addFile(file, registry);\n }\n return registry;\n }\n if (\"$typeName\" in args[0]) {\n const input = args[0];\n const resolve = args[1];\n const seen = new Set();\n function recurseDeps(file) {\n const deps = [];\n for (const protoFileName of file.dependency) {\n if (registry.getFile(protoFileName) != undefined) {\n continue;\n }\n if (seen.has(protoFileName)) {\n continue;\n }\n const dep = resolve(protoFileName);\n if (!dep) {\n throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);\n }\n if (\"kind\" in dep) {\n registry.addFile(dep, false, true);\n }\n else {\n seen.add(dep.name);\n deps.push(dep);\n }\n }\n return deps.concat(...deps.map(recurseDeps));\n }\n for (const file of [input, ...recurseDeps(input)].reverse()) {\n addFile(file, registry);\n }\n }\n else {\n for (const fileReg of args) {\n for (const file of fileReg.files) {\n registry.addFile(file);\n }\n }\n }\n return registry;\n}\n/**\n * @private\n */\nfunction createBaseRegistry() {\n const types = new Map();\n const extendees = new Map();\n const files = new Map();\n return {\n kind: \"registry\",\n types,\n extendees,\n [Symbol.iterator]() {\n return types.values();\n },\n get files() {\n return files.values();\n },\n addFile(file, skipTypes, withDeps) {\n files.set(file.proto.name, file);\n if (!skipTypes) {\n for (const type of nestedTypes(file)) {\n this.add(type);\n }\n }\n if (withDeps) {\n for (const f of file.dependencies) {\n this.addFile(f, skipTypes, withDeps);\n }\n }\n },\n add(desc) {\n if (desc.kind == \"extension\") {\n let numberToExt = extendees.get(desc.extendee.typeName);\n if (!numberToExt) {\n extendees.set(desc.extendee.typeName, \n // biome-ignore lint/suspicious/noAssignInExpressions: no\n (numberToExt = new Map()));\n }\n numberToExt.set(desc.number, desc);\n }\n types.set(desc.typeName, desc);\n },\n get(typeName) {\n return types.get(typeName);\n },\n getFile(fileName) {\n return files.get(fileName);\n },\n getMessage(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"message\" ? t : undefined;\n },\n getEnum(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"enum\" ? t : undefined;\n },\n getExtension(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"extension\" ? t : undefined;\n },\n getExtensionFor(extendee, no) {\n var _a;\n return (_a = extendees.get(extendee.typeName)) === null || _a === void 0 ? void 0 : _a.get(no);\n },\n getService(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"service\" ? t : undefined;\n },\n };\n}\n/**\n * @private\n */\nfunction initBaseRegistry(inputs) {\n const registry = createBaseRegistry();\n for (const input of inputs) {\n switch (input.kind) {\n case \"registry\":\n for (const n of input) {\n registry.add(n);\n }\n break;\n case \"file\":\n registry.addFile(input);\n break;\n default:\n registry.add(input);\n break;\n }\n }\n return registry;\n}\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;\nconst EDITION_PROTO2 = 998;\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;\nconst EDITION_PROTO3 = 999;\n// bootstrap-inject google.protobuf.Edition.EDITION_UNSTABLE: const $name: Edition.$localName = $number;\nconst EDITION_UNSTABLE = 9999;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_STRING: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_STRING = 9;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_GROUP: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_GROUP = 10;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_MESSAGE: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_MESSAGE = 11;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_BYTES: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_BYTES = 12;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_ENUM: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_ENUM = 14;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REPEATED: const $name: FieldDescriptorProto_Label.$localName = $number;\nconst LABEL_REPEATED = 3;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REQUIRED: const $name: FieldDescriptorProto_Label.$localName = $number;\nconst LABEL_REQUIRED = 2;\n// bootstrap-inject google.protobuf.FieldOptions.JSType.JS_STRING: const $name: FieldOptions_JSType.$localName = $number;\nconst JS_STRING = 1;\n// bootstrap-inject google.protobuf.MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN: const $name: MethodOptions_IdempotencyLevel.$localName = $number;\nconst IDEMPOTENCY_UNKNOWN = 0;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.EXPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst EXPLICIT = 1;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// bootstrap-inject google.protobuf.FeatureSet.RepeatedFieldEncoding.PACKED: const $name: FeatureSet_RepeatedFieldEncoding.$localName = $number;\nconst PACKED = 1;\n// bootstrap-inject google.protobuf.FeatureSet.MessageEncoding.DELIMITED: const $name: FeatureSet_MessageEncoding.$localName = $number;\nconst DELIMITED = 2;\n// bootstrap-inject google.protobuf.FeatureSet.EnumType.OPEN: const $name: FeatureSet_EnumType.$localName = $number;\nconst OPEN = 1;\n// bootstrap-inject google.protobuf.FeatureSet.Utf8Validation.VERIFY: const $name: FeatureSet_Utf8Validation.$localName = $number;\nconst VERIFY = 2;\n// biome-ignore format: want this to read well\n// bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2024: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;\n// generated from protoc v34.0\nexport const minimumEdition = 998, maximumEdition = 1001;\nconst featureDefaults = {\n // EDITION_PROTO2\n 998: {\n fieldPresence: 1, // EXPLICIT,\n enumType: 2, // CLOSED,\n repeatedFieldEncoding: 2, // EXPANDED,\n utf8Validation: 3, // NONE,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 2, // LEGACY_BEST_EFFORT,\n enforceNamingStyle: 2, // STYLE_LEGACY,\n defaultSymbolVisibility: 1, // EXPORT_ALL,\n },\n // EDITION_PROTO3\n 999: {\n fieldPresence: 2, // IMPLICIT,\n enumType: 1, // OPEN,\n repeatedFieldEncoding: 1, // PACKED,\n utf8Validation: 2, // VERIFY,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 1, // ALLOW,\n enforceNamingStyle: 2, // STYLE_LEGACY,\n defaultSymbolVisibility: 1, // EXPORT_ALL,\n },\n // EDITION_2023\n 1000: {\n fieldPresence: 1, // EXPLICIT,\n enumType: 1, // OPEN,\n repeatedFieldEncoding: 1, // PACKED,\n utf8Validation: 2, // VERIFY,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 1, // ALLOW,\n enforceNamingStyle: 2, // STYLE_LEGACY,\n defaultSymbolVisibility: 1, // EXPORT_ALL,\n },\n // EDITION_2024\n 1001: {\n fieldPresence: 1, // EXPLICIT,\n enumType: 1, // OPEN,\n repeatedFieldEncoding: 1, // PACKED,\n utf8Validation: 2, // VERIFY,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 1, // ALLOW,\n enforceNamingStyle: 1, // STYLE2024,\n defaultSymbolVisibility: 2, // EXPORT_TOP_LEVEL,\n },\n};\n/**\n * Create a descriptor for a file, add it to the registry.\n */\nfunction addFile(proto, reg) {\n var _a, _b;\n const file = {\n kind: \"file\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n edition: getFileEdition(proto),\n name: proto.name.replace(/\\.proto$/, \"\"),\n dependencies: findFileDependencies(proto, reg),\n enums: [],\n messages: [],\n extensions: [],\n services: [],\n toString() {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `file ${proto.name}`;\n },\n };\n const mapEntriesStore = new Map();\n const mapEntries = {\n get(typeName) {\n return mapEntriesStore.get(typeName);\n },\n add(desc) {\n var _a;\n assert(((_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.mapEntry) === true);\n mapEntriesStore.set(desc.typeName, desc);\n },\n };\n for (const enumProto of proto.enumType) {\n addEnum(enumProto, file, undefined, reg);\n }\n for (const messageProto of proto.messageType) {\n addMessage(messageProto, file, undefined, reg, mapEntries);\n }\n for (const serviceProto of proto.service) {\n addService(serviceProto, file, reg);\n }\n addExtensions(file, reg);\n for (const mapEntry of mapEntriesStore.values()) {\n // to create a map field, we need access to the map entry's fields\n addFields(mapEntry, reg, mapEntries);\n }\n for (const message of file.messages) {\n addFields(message, reg, mapEntries);\n addExtensions(message, reg);\n }\n reg.addFile(file, true);\n}\n/**\n * Create descriptors for extensions, and add them to the message / file,\n * and to our cart.\n * Recurses into nested types.\n */\nfunction addExtensions(desc, reg) {\n switch (desc.kind) {\n case \"file\":\n for (const proto of desc.proto.extension) {\n const ext = newField(proto, desc, reg);\n desc.extensions.push(ext);\n reg.add(ext);\n }\n break;\n case \"message\":\n for (const proto of desc.proto.extension) {\n const ext = newField(proto, desc, reg);\n desc.nestedExtensions.push(ext);\n reg.add(ext);\n }\n for (const message of desc.nestedMessages) {\n addExtensions(message, reg);\n }\n break;\n }\n}\n/**\n * Create descriptors for fields and oneof groups, and add them to the message.\n * Recurses into nested types.\n */\nfunction addFields(message, reg, mapEntries) {\n const allOneofs = message.proto.oneofDecl.map((proto) => newOneof(proto, message));\n const oneofsSeen = new Set();\n for (const proto of message.proto.field) {\n const oneof = findOneof(proto, allOneofs);\n const field = newField(proto, message, reg, oneof, mapEntries);\n message.fields.push(field);\n message.field[field.localName] = field;\n if (oneof === undefined) {\n message.members.push(field);\n }\n else {\n oneof.fields.push(field);\n if (!oneofsSeen.has(oneof)) {\n oneofsSeen.add(oneof);\n message.members.push(oneof);\n }\n }\n }\n for (const oneof of allOneofs.filter((o) => oneofsSeen.has(o))) {\n message.oneofs.push(oneof);\n }\n for (const child of message.nestedMessages) {\n addFields(child, reg, mapEntries);\n }\n}\n/**\n * Create a descriptor for an enumeration, and add it our cart and to the\n * parent type, if any.\n */\nfunction addEnum(proto, file, parent, reg) {\n var _a, _b, _c, _d, _e;\n const sharedPrefix = findEnumSharedPrefix(proto.name, proto.value);\n const desc = {\n kind: \"enum\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n parent,\n open: true,\n name: proto.name,\n typeName: makeTypeName(proto, parent, file),\n value: {},\n values: [],\n sharedPrefix,\n toString() {\n return `enum ${this.typeName}`;\n },\n };\n desc.open = isEnumOpen(desc);\n reg.add(desc);\n for (const p of proto.value) {\n const name = p.name;\n desc.values.push(\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n (desc.value[p.number] = {\n kind: \"enum_value\",\n proto: p,\n deprecated: (_d = (_c = p.options) === null || _c === void 0 ? void 0 : _c.deprecated) !== null && _d !== void 0 ? _d : false,\n parent: desc,\n name,\n localName: safeObjectProperty(sharedPrefix == undefined\n ? name\n : name.substring(sharedPrefix.length)),\n number: p.number,\n toString() {\n return `enum value ${desc.typeName}.${name}`;\n },\n }));\n }\n ((_e = parent === null || parent === void 0 ? void 0 : parent.nestedEnums) !== null && _e !== void 0 ? _e : file.enums).push(desc);\n}\n/**\n * Create a descriptor for a message, including nested types, and add it to our\n * cart. Note that this does not create descriptors fields.\n */\nfunction addMessage(proto, file, parent, reg, mapEntries) {\n var _a, _b, _c, _d;\n const desc = {\n kind: \"message\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n parent,\n name: proto.name,\n typeName: makeTypeName(proto, parent, file),\n fields: [],\n field: {},\n oneofs: [],\n members: [],\n nestedEnums: [],\n nestedMessages: [],\n nestedExtensions: [],\n toString() {\n return `message ${this.typeName}`;\n },\n };\n if (((_c = proto.options) === null || _c === void 0 ? void 0 : _c.mapEntry) === true) {\n mapEntries.add(desc);\n }\n else {\n ((_d = parent === null || parent === void 0 ? void 0 : parent.nestedMessages) !== null && _d !== void 0 ? _d : file.messages).push(desc);\n reg.add(desc);\n }\n for (const enumProto of proto.enumType) {\n addEnum(enumProto, file, desc, reg);\n }\n for (const messageProto of proto.nestedType) {\n addMessage(messageProto, file, desc, reg, mapEntries);\n }\n}\n/**\n * Create a descriptor for a service, including methods, and add it to our\n * cart.\n */\nfunction addService(proto, file, reg) {\n var _a, _b;\n const desc = {\n kind: \"service\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n name: proto.name,\n typeName: makeTypeName(proto, undefined, file),\n methods: [],\n method: {},\n toString() {\n return `service ${this.typeName}`;\n },\n };\n file.services.push(desc);\n reg.add(desc);\n for (const methodProto of proto.method) {\n const method = newMethod(methodProto, desc, reg);\n desc.methods.push(method);\n desc.method[method.localName] = method;\n }\n}\n/**\n * Create a descriptor for a method.\n */\nfunction newMethod(proto, parent, reg) {\n var _a, _b, _c, _d;\n let methodKind;\n if (proto.clientStreaming && proto.serverStreaming) {\n methodKind = \"bidi_streaming\";\n }\n else if (proto.clientStreaming) {\n methodKind = \"client_streaming\";\n }\n else if (proto.serverStreaming) {\n methodKind = \"server_streaming\";\n }\n else {\n methodKind = \"unary\";\n }\n const input = reg.getMessage(trimLeadingDot(proto.inputType));\n const output = reg.getMessage(trimLeadingDot(proto.outputType));\n assert(input, `invalid MethodDescriptorProto: input_type ${proto.inputType} not found`);\n assert(output, `invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);\n const name = proto.name;\n return {\n kind: \"rpc\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n parent,\n name,\n localName: safeObjectProperty(name.length\n ? safeObjectProperty(name[0].toLowerCase() + name.substring(1))\n : name),\n methodKind,\n input,\n output,\n idempotency: (_d = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.idempotencyLevel) !== null && _d !== void 0 ? _d : IDEMPOTENCY_UNKNOWN,\n toString() {\n return `rpc ${parent.typeName}.${name}`;\n },\n };\n}\n/**\n * Create a descriptor for a oneof group.\n */\nfunction newOneof(proto, parent) {\n return {\n kind: \"oneof\",\n proto,\n deprecated: false,\n parent,\n fields: [],\n name: proto.name,\n localName: safeObjectProperty(protoCamelCase(proto.name)),\n toString() {\n return `oneof ${parent.typeName}.${this.name}`;\n },\n };\n}\nfunction newField(proto, parentOrFile, reg, oneof, mapEntries) {\n var _a, _b, _c;\n const isExtension = mapEntries === undefined;\n const field = {\n kind: \"field\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n name: proto.name,\n number: proto.number,\n scalar: undefined,\n message: undefined,\n enum: undefined,\n presence: getFieldPresence(proto, oneof, isExtension, parentOrFile),\n utf8Validation: isUtf8Validated(proto, parentOrFile),\n listKind: undefined,\n mapKind: undefined,\n mapKey: undefined,\n delimitedEncoding: undefined,\n packed: undefined,\n longAsString: false,\n getDefaultValue: undefined,\n };\n if (isExtension) {\n // extension field\n const file = parentOrFile.kind == \"file\" ? parentOrFile : parentOrFile.file;\n const parent = parentOrFile.kind == \"file\" ? undefined : parentOrFile;\n const typeName = makeTypeName(proto, parent, file);\n field.kind = \"extension\";\n field.file = file;\n field.parent = parent;\n field.oneof = undefined;\n field.typeName = typeName;\n field.jsonName = `[${typeName}]`; // option json_name is not allowed on extension fields\n field.toString = () => `extension ${typeName}`;\n const extendee = reg.getMessage(trimLeadingDot(proto.extendee));\n assert(extendee, `invalid FieldDescriptorProto: extendee ${proto.extendee} not found`);\n field.extendee = extendee;\n }\n else {\n // regular field\n const parent = parentOrFile;\n assert(parent.kind == \"message\");\n field.parent = parent;\n field.oneof = oneof;\n field.localName = oneof\n ? protoCamelCase(proto.name)\n : safeObjectProperty(protoCamelCase(proto.name));\n field.jsonName = proto.jsonName;\n field.toString = () => `field ${parent.typeName}.${proto.name}`;\n }\n const label = proto.label;\n const type = proto.type;\n const jstype = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.jstype;\n if (label === LABEL_REPEATED) {\n // list or map field\n const mapEntry = type == TYPE_MESSAGE\n ? mapEntries === null || mapEntries === void 0 ? void 0 : mapEntries.get(trimLeadingDot(proto.typeName))\n : undefined;\n if (mapEntry) {\n // map field\n field.fieldKind = \"map\";\n const { key, value } = findMapEntryFields(mapEntry);\n field.mapKey = key.scalar;\n field.mapKind = value.fieldKind;\n field.message = value.message;\n field.delimitedEncoding = false; // map fields are always LENGTH_PREFIXED\n field.enum = value.enum;\n field.scalar = value.scalar;\n return field;\n }\n // list field\n field.fieldKind = \"list\";\n switch (type) {\n case TYPE_MESSAGE:\n case TYPE_GROUP:\n field.listKind = \"message\";\n field.message = reg.getMessage(trimLeadingDot(proto.typeName));\n assert(field.message);\n field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);\n break;\n case TYPE_ENUM:\n field.listKind = \"enum\";\n field.enum = reg.getEnum(trimLeadingDot(proto.typeName));\n assert(field.enum);\n break;\n default:\n field.listKind = \"scalar\";\n field.scalar = type;\n field.longAsString = jstype == JS_STRING;\n break;\n }\n field.packed = isPackedField(proto, parentOrFile);\n return field;\n }\n // singular\n switch (type) {\n case TYPE_MESSAGE:\n case TYPE_GROUP:\n field.fieldKind = \"message\";\n field.message = reg.getMessage(trimLeadingDot(proto.typeName));\n assert(field.message, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);\n field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);\n field.getDefaultValue = () => undefined;\n break;\n case TYPE_ENUM: {\n const enumeration = reg.getEnum(trimLeadingDot(proto.typeName));\n assert(enumeration !== undefined, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);\n field.fieldKind = \"enum\";\n field.enum = reg.getEnum(trimLeadingDot(proto.typeName));\n field.getDefaultValue = () => {\n return unsafeIsSetExplicit(proto, \"defaultValue\")\n ? parseTextFormatEnumValue(enumeration, proto.defaultValue)\n : undefined;\n };\n break;\n }\n default: {\n field.fieldKind = \"scalar\";\n field.scalar = type;\n field.longAsString = jstype == JS_STRING;\n field.getDefaultValue = () => {\n return unsafeIsSetExplicit(proto, \"defaultValue\")\n ? parseTextFormatScalarValue(type, proto.defaultValue)\n : undefined;\n };\n break;\n }\n }\n return field;\n}\n/**\n * Parse the \"syntax\" and \"edition\" fields, returning one of the supported\n * editions.\n */\nfunction getFileEdition(proto) {\n switch (proto.syntax) {\n case \"\":\n case \"proto2\":\n return EDITION_PROTO2;\n case \"proto3\":\n return EDITION_PROTO3;\n case \"editions\":\n // EDITION_UNSTABLE is a sandbox for in-development features. Collapse\n // it to maximumEdition so SupportedEdition and feature resolution do\n // not leak the test-only edition to users.\n if (proto.edition === EDITION_UNSTABLE) {\n return maximumEdition;\n }\n if (proto.edition in featureDefaults) {\n return proto.edition;\n }\n throw new Error(`${proto.name}: unsupported edition`);\n default:\n throw new Error(`${proto.name}: unsupported syntax \"${proto.syntax}\"`);\n }\n}\n/**\n * Resolve dependencies of FileDescriptorProto to DescFile.\n */\nfunction findFileDependencies(proto, reg) {\n return proto.dependency.map((wantName) => {\n const dep = reg.getFile(wantName);\n if (!dep) {\n throw new Error(`Cannot find ${wantName}, imported by ${proto.name}`);\n }\n return dep;\n });\n}\n/**\n * Finds a prefix shared by enum values, for example `my_enum_` for\n * `enum MyEnum {MY_ENUM_A=0; MY_ENUM_B=1;}`.\n */\nfunction findEnumSharedPrefix(enumName, values) {\n const prefix = camelToSnakeCase(enumName) + \"_\";\n for (const value of values) {\n if (!value.name.toLowerCase().startsWith(prefix)) {\n return undefined;\n }\n const shortName = value.name.substring(prefix.length);\n if (shortName.length == 0) {\n return undefined;\n }\n if (/^\\d/.test(shortName)) {\n // identifiers must not start with numbers\n return undefined;\n }\n }\n return prefix;\n}\n/**\n * Converts lowerCamelCase or UpperCamelCase into lower_snake_case.\n * This is used to find shared prefixes in an enum.\n */\nfunction camelToSnakeCase(camel) {\n return (camel.substring(0, 1) + camel.substring(1).replace(/[A-Z]/g, (c) => \"_\" + c)).toLowerCase();\n}\n/**\n * Create a fully qualified name for a protobuf type or extension field.\n *\n * The fully qualified name for messages, enumerations, and services is\n * constructed by concatenating the package name (if present), parent\n * message names (for nested types), and the type name. We omit the leading\n * dot added by protobuf compilers. Examples:\n * - mypackage.MyMessage\n * - mypackage.MyMessage.NestedMessage\n *\n * The fully qualified name for extension fields is constructed by\n * concatenating the package name (if present), parent message names (for\n * extensions declared within a message), and the field name. Examples:\n * - mypackage.extfield\n * - mypackage.MyMessage.extfield\n */\nfunction makeTypeName(proto, parent, file) {\n let typeName;\n if (parent) {\n typeName = `${parent.typeName}.${proto.name}`;\n }\n else if (file.proto.package.length > 0) {\n typeName = `${file.proto.package}.${proto.name}`;\n }\n else {\n typeName = `${proto.name}`;\n }\n return typeName;\n}\n/**\n * Remove the leading dot from a fully qualified type name.\n */\nfunction trimLeadingDot(typeName) {\n return typeName.startsWith(\".\") ? typeName.substring(1) : typeName;\n}\n/**\n * Did the user put the field in a oneof group?\n * Synthetic oneofs for proto3 optionals are ignored.\n */\nfunction findOneof(proto, allOneofs) {\n if (!unsafeIsSetExplicit(proto, \"oneofIndex\")) {\n return undefined;\n }\n if (proto.proto3Optional) {\n return undefined;\n }\n const oneof = allOneofs[proto.oneofIndex];\n assert(oneof, `invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`);\n return oneof;\n}\n/**\n * Presence of the field.\n * See https://protobuf.dev/programming-guides/field_presence/\n */\nfunction getFieldPresence(proto, oneof, isExtension, parent) {\n if (proto.label == LABEL_REQUIRED) {\n // proto2 required is LEGACY_REQUIRED\n return LEGACY_REQUIRED;\n }\n if (proto.label == LABEL_REPEATED) {\n // repeated fields (including maps) do not track presence\n return IMPLICIT;\n }\n if (!!oneof || proto.proto3Optional) {\n // oneof is always explicit\n return EXPLICIT;\n }\n if (isExtension) {\n // extensions always track presence\n return EXPLICIT;\n }\n const resolved = resolveFeature(\"fieldPresence\", { proto, parent });\n if (resolved == IMPLICIT &&\n (proto.type == TYPE_MESSAGE || proto.type == TYPE_GROUP)) {\n // singular message field cannot be implicit\n return EXPLICIT;\n }\n return resolved;\n}\n/**\n * Pack this repeated field?\n */\nfunction isPackedField(proto, parent) {\n if (proto.label != LABEL_REPEATED) {\n return false;\n }\n switch (proto.type) {\n case TYPE_STRING:\n case TYPE_BYTES:\n case TYPE_GROUP:\n case TYPE_MESSAGE:\n // length-delimited types cannot be packed\n return false;\n }\n const o = proto.options;\n if (o && unsafeIsSetExplicit(o, \"packed\")) {\n // prefer the field option over edition features\n return o.packed;\n }\n return (PACKED ==\n resolveFeature(\"repeatedFieldEncoding\", {\n proto,\n parent,\n }));\n}\n/**\n * Find the key and value fields of a synthetic map entry message.\n */\nfunction findMapEntryFields(mapEntry) {\n const key = mapEntry.fields.find((f) => f.number === 1);\n const value = mapEntry.fields.find((f) => f.number === 2);\n assert(key &&\n key.fieldKind == \"scalar\" &&\n key.scalar != ScalarType.BYTES &&\n key.scalar != ScalarType.FLOAT &&\n key.scalar != ScalarType.DOUBLE &&\n value &&\n value.fieldKind != \"list\" &&\n value.fieldKind != \"map\");\n return { key, value };\n}\n/**\n * Enumerations can be open or closed.\n * See https://protobuf.dev/programming-guides/enum/\n */\nfunction isEnumOpen(desc) {\n var _a;\n return (OPEN ==\n resolveFeature(\"enumType\", {\n proto: desc.proto,\n parent: (_a = desc.parent) !== null && _a !== void 0 ? _a : desc.file,\n }));\n}\n/**\n * Encode the message delimited (a.k.a. proto2 group encoding), or\n * length-prefixed?\n */\nfunction isDelimitedEncoding(proto, parent) {\n if (proto.type == TYPE_GROUP) {\n return true;\n }\n return (DELIMITED ==\n resolveFeature(\"messageEncoding\", {\n proto,\n parent,\n }));\n}\n/**\n * Reject invalid UTF-8 when reading string fields from the binary wire format?\n * Driven by the resolved `utf8_validation` feature: VERIFY (proto3 / editions\n * 2023+ default) enforces; NONE (proto2 default) does not.\n */\nfunction isUtf8Validated(proto, parent) {\n return (VERIFY ==\n resolveFeature(\"utf8Validation\", {\n proto,\n parent,\n }));\n}\nfunction resolveFeature(name, ref) {\n var _a, _b;\n const featureSet = (_a = ref.proto.options) === null || _a === void 0 ? void 0 : _a.features;\n if (featureSet) {\n const val = featureSet[name];\n if (val != 0) {\n return val;\n }\n }\n if (\"kind\" in ref) {\n if (ref.kind == \"message\") {\n return resolveFeature(name, (_b = ref.parent) !== null && _b !== void 0 ? _b : ref.file);\n }\n const editionDefaults = featureDefaults[ref.edition];\n if (!editionDefaults) {\n throw new Error(`feature default for edition ${ref.edition} not found`);\n }\n return editionDefaults[name];\n }\n return resolveFeature(name, ref.parent);\n}\n/**\n * Assert that condition is truthy or throw error (with message)\n */\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error(msg);\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType } from \"../descriptors.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\n/**\n * Parse an enum value from the Protobuf text format.\n *\n * @private\n */\nexport function parseTextFormatEnumValue(descEnum, value) {\n const enumValue = descEnum.values.find((v) => v.name === value);\n if (!enumValue) {\n throw new Error(`cannot parse ${descEnum} default value: ${value}`);\n }\n return enumValue.number;\n}\n/**\n * Parse a scalar value from the Protobuf text format.\n *\n * @private\n */\nexport function parseTextFormatScalarValue(type, value) {\n switch (type) {\n case ScalarType.STRING:\n return value;\n case ScalarType.BYTES: {\n const u = unescapeBytesDefaultValue(value);\n if (u === false) {\n throw new Error(`cannot parse ${ScalarType[type]} default value: ${value}`);\n }\n return u;\n }\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n return protoInt64.parse(value);\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n return protoInt64.uParse(value);\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n switch (value) {\n case \"inf\":\n return Number.POSITIVE_INFINITY;\n case \"-inf\":\n return Number.NEGATIVE_INFINITY;\n case \"nan\":\n return Number.NaN;\n default:\n return parseFloat(value);\n }\n case ScalarType.BOOL:\n return value === \"true\";\n case ScalarType.INT32:\n case ScalarType.UINT32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n return parseInt(value, 10);\n }\n}\n/**\n * Parses a text-encoded default value (proto2) of a BYTES field.\n */\nfunction unescapeBytesDefaultValue(str) {\n const b = [];\n const input = {\n tail: str,\n c: \"\",\n next() {\n if (this.tail.length == 0) {\n return false;\n }\n this.c = this.tail[0];\n this.tail = this.tail.substring(1);\n return true;\n },\n take(n) {\n if (this.tail.length >= n) {\n const r = this.tail.substring(0, n);\n this.tail = this.tail.substring(n);\n return r;\n }\n return false;\n },\n };\n while (input.next()) {\n switch (input.c) {\n case \"\\\\\":\n if (input.next()) {\n switch (input.c) {\n case \"\\\\\":\n b.push(input.c.charCodeAt(0));\n break;\n case \"b\":\n b.push(0x08);\n break;\n case \"f\":\n b.push(0x0c);\n break;\n case \"n\":\n b.push(0x0a);\n break;\n case \"r\":\n b.push(0x0d);\n break;\n case \"t\":\n b.push(0x09);\n break;\n case \"v\":\n b.push(0x0b);\n break;\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\": {\n const s = input.c;\n const t = input.take(2);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 8);\n if (Number.isNaN(n)) {\n return false;\n }\n b.push(n);\n break;\n }\n case \"x\": {\n const s = input.c;\n const t = input.take(2);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 16);\n if (Number.isNaN(n)) {\n return false;\n }\n b.push(n);\n break;\n }\n case \"u\": {\n const s = input.c;\n const t = input.take(4);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 16);\n if (Number.isNaN(n)) {\n return false;\n }\n const chunk = new Uint8Array(4);\n const view = new DataView(chunk.buffer);\n view.setInt32(0, n, true);\n b.push(chunk[0], chunk[1], chunk[2], chunk[3]);\n break;\n }\n case \"U\": {\n const s = input.c;\n const t = input.take(8);\n if (t === false) {\n return false;\n }\n const tc = protoInt64.uEnc(s + t);\n const chunk = new Uint8Array(8);\n const view = new DataView(chunk.buffer);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n b.push(chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], chunk[5], chunk[6], chunk[7]);\n break;\n }\n }\n }\n break;\n default:\n b.push(input.c.charCodeAt(0));\n }\n }\n return new Uint8Array(b);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Iterate over all types - enumerations, extensions, services, messages -\n * and enumerations, extensions and messages nested in messages.\n */\nexport function* nestedTypes(desc) {\n switch (desc.kind) {\n case \"file\":\n for (const message of desc.messages) {\n yield message;\n yield* nestedTypes(message);\n }\n yield* desc.enums;\n yield* desc.services;\n yield* desc.extensions;\n break;\n case \"message\":\n for (const message of desc.nestedMessages) {\n yield message;\n yield* nestedTypes(message);\n }\n yield* desc.nestedEnums;\n yield* desc.nestedExtensions;\n break;\n }\n}\n/**\n * Iterate over types referenced by fields of the given message.\n *\n * For example:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message Example {\n * Msg singular = 1;\n * repeated Level list = 2;\n * }\n *\n * message Msg {}\n *\n * enum Level {\n * LEVEL_UNSPECIFIED = 0;\n * }\n * ```\n *\n * The message Example references the message Msg, and the enum Level.\n */\nexport function usedTypes(descMessage) {\n return usedTypesInternal(descMessage, new Set());\n}\nfunction* usedTypesInternal(descMessage, seen) {\n var _a, _b;\n for (const field of descMessage.fields) {\n const ref = (_b = (_a = field.enum) !== null && _a !== void 0 ? _a : field.message) !== null && _b !== void 0 ? _b : undefined;\n if (!ref || seen.has(ref.typeName)) {\n continue;\n }\n seen.add(ref.typeName);\n yield ref;\n if (ref.kind == \"message\") {\n yield* usedTypesInternal(ref, seen);\n }\n }\n}\n/**\n * Returns the ancestors of a given Protobuf element, up to the file.\n */\nexport function parentTypes(desc) {\n const parents = [];\n while (desc.kind !== \"file\") {\n const p = parent(desc);\n desc = p;\n parents.push(p);\n }\n return parents;\n}\nfunction parent(desc) {\n var _a;\n switch (desc.kind) {\n case \"enum_value\":\n case \"field\":\n case \"oneof\":\n case \"rpc\":\n return desc.parent;\n case \"service\":\n return desc.file;\n case \"extension\":\n case \"enum\":\n case \"message\":\n return (_a = desc.parent) !== null && _a !== void 0 ? _a : desc.file;\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Hydrate a message descriptor.\n *\n * @private\n */\nexport function messageDesc(file, path, ...paths) {\n return paths.reduce((acc, cur) => acc.nestedMessages[cur], file.messages[path]);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Hydrate an enum descriptor.\n *\n * @private\n */\nexport function enumDesc(file, path, ...paths) {\n if (paths.length == 0) {\n return file.enums[path];\n }\n const e = paths.pop(); // we checked length above\n return paths.reduce((acc, cur) => acc.nestedMessages[cur], file.messages[path]).nestedEnums[e];\n}\n/**\n * Construct a TypeScript enum object at runtime from a descriptor.\n */\nexport function tsEnum(desc) {\n const enumObject = {};\n for (const value of desc.values) {\n enumObject[value.localName] = value.number;\n enumObject[value.number] = value.localName;\n }\n return enumObject;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType } from \"./descriptors.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { BinaryReader, WireType } from \"./wire/binary-encoding.js\";\nimport { varint32write } from \"./wire/varint.js\";\n// Default options for parsing binary data.\nconst readDefaults = {\n readUnknownFields: true,\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, readDefaults), options) : readDefaults;\n}\n/**\n * Parse serialized binary data.\n */\nexport function fromBinary(schema, bytes, options) {\n const msg = reflect(schema, undefined, false);\n readMessage(msg, new BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n return msg.message;\n}\n/**\n * Parse from binary data, merging fields.\n *\n * Repeated fields are appended. Map entries are added, overwriting\n * existing keys.\n *\n * If a message field is already present, it will be merged with the\n * new data.\n */\nexport function mergeFromBinary(schema, target, bytes, options) {\n readMessage(reflect(schema, target, false), new BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n return target;\n}\n/**\n * If `delimited` is false, read the length given in `lengthOrDelimitedFieldNo`.\n *\n * If `delimited` is true, read until an EndGroup tag. `lengthOrDelimitedFieldNo`\n * is the expected field number.\n *\n * @private\n */\nfunction readMessage(message, reader, options, delimited, lengthOrDelimitedFieldNo) {\n var _a;\n const end = delimited ? reader.len : reader.pos + lengthOrDelimitedFieldNo;\n let fieldNo;\n let wireType;\n const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];\n while (reader.pos < end) {\n [fieldNo, wireType] = reader.tag();\n if (delimited && wireType == WireType.EndGroup) {\n break;\n }\n const field = message.findNumber(fieldNo);\n if (!field) {\n const data = reader.skip(wireType, fieldNo);\n if (options.readUnknownFields) {\n unknownFields.push({ no: fieldNo, wireType, data });\n }\n continue;\n }\n readField(message, reader, field, wireType, options);\n }\n if (delimited) {\n if (wireType != WireType.EndGroup || fieldNo !== lengthOrDelimitedFieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n }\n if (unknownFields.length > 0) {\n message.setUnknown(unknownFields);\n }\n}\n/**\n * @private\n */\nexport function readField(message, reader, field, wireType, options) {\n var _a;\n switch (field.fieldKind) {\n case \"scalar\":\n message.set(field, readScalar(reader, field.scalar, field.utf8Validation));\n break;\n case \"enum\":\n const val = readScalar(reader, ScalarType.INT32);\n if (field.enum.open) {\n message.set(field, val);\n }\n else {\n const ok = field.enum.values.some((v) => v.number === val);\n if (ok) {\n message.set(field, val);\n }\n else if (options.readUnknownFields) {\n const bytes = [];\n varint32write(val, bytes);\n const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];\n unknownFields.push({\n no: field.number,\n wireType,\n data: new Uint8Array(bytes),\n });\n message.setUnknown(unknownFields);\n }\n }\n break;\n case \"message\":\n message.set(field, readMessageField(reader, options, field, message.get(field)));\n break;\n case \"list\":\n readListField(reader, wireType, message.get(field), options);\n break;\n case \"map\":\n readMapEntry(reader, message.get(field), options);\n break;\n }\n}\n// Read a map field, expecting key field = 1, value field = 2\nfunction readMapEntry(reader, map, options) {\n const field = map.field();\n let key;\n let val;\n // Read the length of the map entry, which is a varint.\n const len = reader.uint32();\n // WARNING: Calculate end AFTER advancing reader.pos (above), so that\n // reader.pos is at the start of the map entry.\n const end = reader.pos + len;\n while (reader.pos < end) {\n const [fieldNo] = reader.tag();\n switch (fieldNo) {\n case 1:\n key = readScalar(reader, field.mapKey, field.utf8Validation);\n break;\n case 2:\n switch (field.mapKind) {\n case \"scalar\":\n val = readScalar(reader, field.scalar, field.utf8Validation);\n break;\n case \"enum\":\n val = reader.int32();\n break;\n case \"message\":\n val = readMessageField(reader, options, field);\n break;\n }\n break;\n }\n }\n if (key === undefined) {\n key = scalarZeroValue(field.mapKey, false);\n }\n if (val === undefined) {\n switch (field.mapKind) {\n case \"scalar\":\n val = scalarZeroValue(field.scalar, false);\n break;\n case \"enum\":\n val = field.enum.values[0].number;\n break;\n case \"message\":\n val = reflect(field.message, undefined, false);\n break;\n }\n }\n map.set(key, val);\n}\nfunction readListField(reader, wireType, list, options) {\n var _a;\n const field = list.field();\n if (field.listKind === \"message\") {\n list.add(readMessageField(reader, options, field));\n return;\n }\n const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;\n const packed = wireType == WireType.LengthDelimited &&\n scalarType != ScalarType.STRING &&\n scalarType != ScalarType.BYTES;\n if (!packed) {\n list.add(readScalar(reader, scalarType, field.utf8Validation));\n return;\n }\n const e = reader.uint32() + reader.pos;\n while (reader.pos < e) {\n list.add(readScalar(reader, scalarType, field.utf8Validation));\n }\n}\nfunction readMessageField(reader, options, field, mergeMessage) {\n const delimited = field.delimitedEncoding;\n const message = mergeMessage !== null && mergeMessage !== void 0 ? mergeMessage : reflect(field.message, undefined, false);\n readMessage(message, reader, options, delimited, delimited ? field.number : reader.uint32());\n return message;\n}\nfunction readScalar(reader, type, validateUtf8 = false) {\n switch (type) {\n case ScalarType.STRING:\n return reader.string(validateUtf8);\n case ScalarType.BOOL:\n return reader.bool();\n case ScalarType.DOUBLE:\n return reader.double();\n case ScalarType.FLOAT:\n return reader.float();\n case ScalarType.INT32:\n return reader.int32();\n case ScalarType.INT64:\n return reader.int64();\n case ScalarType.UINT64:\n return reader.uint64();\n case ScalarType.FIXED64:\n return reader.fixed64();\n case ScalarType.BYTES:\n return reader.bytes();\n case ScalarType.FIXED32:\n return reader.fixed32();\n case ScalarType.SFIXED32:\n return reader.sfixed32();\n case ScalarType.SFIXED64:\n return reader.sfixed64();\n case ScalarType.SINT64:\n return reader.sint64();\n case ScalarType.UINT32:\n return reader.uint32();\n case ScalarType.SINT32:\n return reader.sint32();\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { AnySchema } from \"./gen/google/protobuf/any_pb.js\";\nimport { create } from \"../create.js\";\nimport { toBinary } from \"../to-binary.js\";\nimport { fromBinary, mergeFromBinary } from \"../from-binary.js\";\nexport function anyPack(schema, message, into) {\n let ret = false;\n if (!into) {\n into = create(AnySchema);\n ret = true;\n }\n into.value = toBinary(schema, message);\n into.typeUrl = typeNameToUrl(message.$typeName);\n return ret ? into : undefined;\n}\nexport function anyIs(any, descOrTypeName) {\n if (any.typeUrl === \"\") {\n return false;\n }\n const want = typeof descOrTypeName == \"string\"\n ? descOrTypeName\n : descOrTypeName.typeName;\n const got = typeUrlToName(any.typeUrl);\n return want === got;\n}\nexport function anyUnpack(any, registryOrMessageDesc) {\n if (any.typeUrl === \"\") {\n return undefined;\n }\n const desc = registryOrMessageDesc.kind == \"message\"\n ? registryOrMessageDesc\n : registryOrMessageDesc.getMessage(typeUrlToName(any.typeUrl));\n if (!desc || !anyIs(any, desc)) {\n return undefined;\n }\n return fromBinary(desc, any.value);\n}\n/**\n * Same as anyUnpack but unpacks into the target message.\n */\nexport function anyUnpackTo(any, schema, message) {\n if (!anyIs(any, schema)) {\n return undefined;\n }\n return mergeFromBinary(schema, message, any.value);\n}\nfunction typeNameToUrl(name) {\n return `type.googleapis.com/${name}`;\n}\nfunction typeUrlToName(url) {\n const slash = url.lastIndexOf(\"/\");\n const name = slash >= 0 ? url.substring(slash + 1) : url;\n if (!name.length) {\n throw new Error(`invalid type url: ${url}`);\n }\n return name;\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { fileDesc } from \"../../../../codegenv2/file.js\";\nimport { messageDesc } from \"../../../../codegenv2/message.js\";\n/**\n * Describes the file google/protobuf/any.proto.\n */\nexport const file_google_protobuf_any = /*@__PURE__*/ fileDesc(\"Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM\");\n/**\n * Describes the message google.protobuf.Any.\n * Use `create(AnySchema)` to create a new message.\n */\nexport const AnySchema = /*@__PURE__*/ messageDesc(file_google_protobuf_any, 0);\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { reflect } from \"./reflect/reflect.js\";\nimport { BinaryWriter, WireType } from \"./wire/binary-encoding.js\";\nimport { ScalarType } from \"./descriptors.js\";\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// Default options for serializing binary data.\nconst writeDefaults = {\n writeUnknownFields: true,\n};\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, writeDefaults), options) : writeDefaults;\n}\nexport function toBinary(schema, message, options) {\n return writeFields(new BinaryWriter(), makeWriteOptions(options), reflect(schema, message)).finish();\n}\nfunction writeFields(writer, opts, msg) {\n var _a;\n for (const f of msg.sortedFields) {\n if (!msg.isSet(f)) {\n if (f.presence == LEGACY_REQUIRED) {\n throw new Error(`cannot encode ${f} to binary: required field not set`);\n }\n continue;\n }\n writeField(writer, opts, msg, f);\n }\n if (opts.writeUnknownFields) {\n for (const { no, wireType, data } of (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : []) {\n writer.tag(no, wireType).raw(data);\n }\n }\n return writer;\n}\n/**\n * @private\n */\nexport function writeField(writer, opts, msg, field) {\n var _a;\n switch (field.fieldKind) {\n case \"scalar\":\n case \"enum\":\n writeScalar(writer, msg.desc.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, field.number, msg.get(field));\n break;\n case \"list\":\n writeListField(writer, opts, field, msg.get(field));\n break;\n case \"message\":\n writeMessageField(writer, opts, field, msg.get(field));\n break;\n case \"map\":\n for (const [key, val] of msg.get(field)) {\n writeMapEntry(writer, opts, field, key, val);\n }\n break;\n }\n}\nfunction writeScalar(writer, msgName, fieldName, scalarType, fieldNo, value) {\n writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), msgName, fieldName, scalarType, value);\n}\nfunction writeMessageField(writer, opts, field, message) {\n if (field.delimitedEncoding) {\n writeFields(writer.tag(field.number, WireType.StartGroup), opts, message).tag(field.number, WireType.EndGroup);\n }\n else {\n writeFields(writer.tag(field.number, WireType.LengthDelimited).fork(), opts, message).join();\n }\n}\nfunction writeListField(writer, opts, field, list) {\n var _a;\n if (field.listKind == \"message\") {\n for (const item of list) {\n writeMessageField(writer, opts, field, item);\n }\n return;\n }\n const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;\n if (field.packed) {\n if (!list.size) {\n return;\n }\n writer.tag(field.number, WireType.LengthDelimited).fork();\n for (const item of list) {\n writeScalarValue(writer, field.parent.typeName, field.name, scalarType, item);\n }\n writer.join();\n return;\n }\n for (const item of list) {\n writeScalar(writer, field.parent.typeName, field.name, scalarType, field.number, item);\n }\n}\nfunction writeMapEntry(writer, opts, field, key, value) {\n var _a;\n writer.tag(field.number, WireType.LengthDelimited).fork();\n // write key, expecting key field number = 1\n writeScalar(writer, field.parent.typeName, field.name, field.mapKey, 1, key);\n // write value, expecting value field number = 2\n switch (field.mapKind) {\n case \"scalar\":\n case \"enum\":\n writeScalar(writer, field.parent.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, 2, value);\n break;\n case \"message\":\n writeFields(writer.tag(2, WireType.LengthDelimited).fork(), opts, value).join();\n break;\n }\n writer.join();\n}\nfunction writeScalarValue(writer, msgName, fieldName, type, value) {\n try {\n switch (type) {\n case ScalarType.STRING:\n writer.string(value);\n break;\n case ScalarType.BOOL:\n writer.bool(value);\n break;\n case ScalarType.DOUBLE:\n writer.double(value);\n break;\n case ScalarType.FLOAT:\n writer.float(value);\n break;\n case ScalarType.INT32:\n writer.int32(value);\n break;\n case ScalarType.INT64:\n writer.int64(value);\n break;\n case ScalarType.UINT64:\n writer.uint64(value);\n break;\n case ScalarType.FIXED64:\n writer.fixed64(value);\n break;\n case ScalarType.BYTES:\n writer.bytes(value);\n break;\n case ScalarType.FIXED32:\n writer.fixed32(value);\n break;\n case ScalarType.SFIXED32:\n writer.sfixed32(value);\n break;\n case ScalarType.SFIXED64:\n writer.sfixed64(value);\n break;\n case ScalarType.SINT64:\n writer.sint64(value);\n break;\n case ScalarType.UINT32:\n writer.uint32(value);\n break;\n case ScalarType.SINT32:\n writer.sint32(value);\n break;\n }\n }\n catch (e) {\n if (e instanceof Error) {\n throw new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e.message}`);\n }\n throw e;\n }\n}\nfunction writeTypeOfScalar(type) {\n switch (type) {\n case ScalarType.BYTES:\n case ScalarType.STRING:\n return WireType.LengthDelimited;\n case ScalarType.DOUBLE:\n case ScalarType.FIXED64:\n case ScalarType.SFIXED64:\n return WireType.Bit64;\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.FLOAT:\n return WireType.Bit32;\n default:\n return WireType.Varint;\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n/**\n * Hydrate an extension descriptor.\n *\n * @private\n */\nexport function extDesc(file, path, ...paths) {\n if (paths.length == 0) {\n return file.extensions[path];\n }\n const e = paths.pop(); // we checked length above\n return paths.reduce((acc, cur) => acc.nestedMessages[cur], file.messages[path]).nestedExtensions[e];\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { fileDesc } from \"../../../../codegenv2/file.js\";\nimport { messageDesc } from \"../../../../codegenv2/message.js\";\nimport { enumDesc } from \"../../../../codegenv2/enum.js\";\n/**\n * Describes the file google/protobuf/struct.proto.\n */\nexport const file_google_protobuf_struct = /*@__PURE__*/ fileDesc(\"Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM\");\n/**\n * Describes the message google.protobuf.Struct.\n * Use `create(StructSchema)` to create a new message.\n */\nexport const StructSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 0);\n/**\n * Describes the message google.protobuf.Value.\n * Use `create(ValueSchema)` to create a new message.\n */\nexport const ValueSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 1);\n/**\n * Describes the message google.protobuf.ListValue.\n * Use `create(ListValueSchema)` to create a new message.\n */\nexport const ListValueSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 2);\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n *\n * @generated from enum google.protobuf.NullValue\n */\nexport var NullValue;\n(function (NullValue) {\n /**\n * Null value.\n *\n * @generated from enum value: NULL_VALUE = 0;\n */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n})(NullValue || (NullValue = {}));\n/**\n * Describes the enum google.protobuf.NullValue.\n */\nexport const NullValueSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_struct, 0);\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { create } from \"./create.js\";\nimport { readField } from \"./from-binary.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { writeField } from \"./to-binary.js\";\nimport { BinaryReader, BinaryWriter } from \"./wire/binary-encoding.js\";\nimport { isWrapperDesc } from \"./wkt/wrappers.js\";\n/**\n * Retrieve an extension value from a message.\n *\n * The function never returns undefined. Use hasExtension() to check whether an\n * extension is set. If the extension is not set, this function returns the\n * default value (if one was specified in the protobuf source), or the zero value\n * (for example `0` for numeric types, `[]` for repeated extension fields, and\n * an empty message instance for message fields).\n *\n * Extensions are stored as unknown fields on a message. To mutate an extension\n * value, make sure to store the new value with setExtension() after mutating.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function getExtension(message, extension) {\n assertExtendee(extension, message);\n const ufs = filterUnknownFields(message.$unknown, extension);\n const [container, field, get] = createExtensionContainer(extension);\n for (const uf of ufs) {\n readField(container, new BinaryReader(uf.data), field, uf.wireType, {\n readUnknownFields: true,\n });\n }\n return get();\n}\n/**\n * Set an extension value on a message. If the message already has a value for\n * this extension, the value is replaced.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function setExtension(message, extension, value) {\n var _a;\n assertExtendee(extension, message);\n const ufs = ((_a = message.$unknown) !== null && _a !== void 0 ? _a : []).filter((uf) => uf.no !== extension.number);\n const [container, field] = createExtensionContainer(extension, value);\n const writer = new BinaryWriter();\n writeField(writer, { writeUnknownFields: true }, container, field);\n const reader = new BinaryReader(writer.finish());\n while (reader.pos < reader.len) {\n const [no, wireType] = reader.tag();\n const data = reader.skip(wireType, no);\n ufs.push({ no, wireType, data });\n }\n message.$unknown = ufs;\n}\n/**\n * Remove an extension value from a message.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function clearExtension(message, extension) {\n assertExtendee(extension, message);\n if (message.$unknown === undefined) {\n return;\n }\n message.$unknown = message.$unknown.filter((uf) => uf.no !== extension.number);\n}\n/**\n * Check whether an extension is set on a message.\n */\nexport function hasExtension(message, extension) {\n var _a;\n return (extension.extendee.typeName === message.$typeName &&\n !!((_a = message.$unknown) === null || _a === void 0 ? void 0 : _a.find((uf) => uf.no === extension.number)));\n}\n/**\n * Check whether an option is set on a descriptor.\n *\n * Options are extensions to the `google.protobuf.*Options` messages defined in\n * google/protobuf/descriptor.proto. This function gets the option message from\n * the descriptor, and calls hasExtension().\n */\nexport function hasOption(element, option) {\n const message = element.proto.options;\n if (!message) {\n return false;\n }\n return hasExtension(message, option);\n}\n/**\n * Retrieve an option value from a descriptor.\n *\n * Options are extensions to the `google.protobuf.*Options` messages defined in\n * google/protobuf/descriptor.proto. This function gets the option message from\n * the descriptor, and calls getExtension(). Same as getExtension(), this\n * function never returns undefined.\n */\nexport function getOption(element, option) {\n const message = element.proto.options;\n if (!message) {\n const [, , get] = createExtensionContainer(option);\n return get();\n }\n return getExtension(message, option);\n}\nfunction filterUnknownFields(unknownFields, extension) {\n if (unknownFields === undefined)\n return [];\n if (extension.fieldKind === \"enum\" || extension.fieldKind === \"scalar\") {\n // singular scalar fields do not merge, we pick the last\n for (let i = unknownFields.length - 1; i >= 0; --i) {\n if (unknownFields[i].no == extension.number) {\n return [unknownFields[i]];\n }\n }\n return [];\n }\n return unknownFields.filter((uf) => uf.no === extension.number);\n}\n/**\n * @private\n */\nexport function createExtensionContainer(extension, value) {\n const localName = extension.typeName;\n const field = Object.assign(Object.assign({}, extension), { kind: \"field\", parent: extension.extendee, localName });\n const desc = Object.assign(Object.assign({}, extension.extendee), { fields: [field], members: [field], oneofs: [] });\n const container = create(desc, value !== undefined ? { [localName]: value } : undefined);\n return [\n reflect(desc, container),\n field,\n () => {\n const value = container[localName];\n if (value === undefined) {\n // biome-ignore lint/style/noNonNullAssertion: Only message fields are undefined, rest will have a zero value.\n const desc = extension.message;\n if (isWrapperDesc(desc)) {\n return scalarZeroValue(desc.fields[0].scalar, desc.fields[0].longAsString);\n }\n return create(desc);\n }\n return value;\n },\n ];\n}\nfunction assertExtendee(extension, message) {\n if (extension.extendee.typeName != message.$typeName) {\n throw new Error(`extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`);\n }\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType, } from \"./descriptors.js\";\nimport { protoCamelCase, protoSnakeCase } from \"./reflect/names.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { anyUnpack } from \"./wkt/index.js\";\nimport { hasCustomJsonRepresentation, isWrapperDesc } from \"./wkt/wrappers.js\";\nimport { base64Encode } from \"./wire/index.js\";\nimport { createExtensionContainer, getExtension } from \"./extensions.js\";\nimport { checkField, formatVal } from \"./reflect/reflect-check.js\";\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n// Default options for serializing to JSON.\nconst jsonWriteDefaults = {\n alwaysEmitImplicit: false,\n enumAsInteger: false,\n useProtoFieldName: false,\n};\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonWriteDefaults), options) : jsonWriteDefaults;\n}\n/**\n * Serialize the message to a JSON value, a JavaScript value that can be\n * passed to JSON.stringify().\n */\nexport function toJson(schema, message, options) {\n return reflectToJson(reflect(schema, message), makeWriteOptions(options));\n}\n/**\n * Serialize the message to a JSON string.\n */\nexport function toJsonString(schema, message, options) {\n var _a;\n const jsonValue = toJson(schema, message, options);\n return JSON.stringify(jsonValue, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);\n}\n/**\n * Serialize a single enum value to JSON.\n */\nexport function enumToJson(descEnum, value) {\n var _a;\n if (descEnum.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n const name = (_a = descEnum.value[value]) === null || _a === void 0 ? void 0 : _a.name;\n if (name === undefined) {\n throw new Error(`${value} is not a value in ${descEnum}`);\n }\n return name;\n}\nfunction reflectToJson(msg, opts) {\n var _a;\n const wktJson = tryWktToJson(msg, opts);\n if (wktJson !== undefined)\n return wktJson;\n const json = {};\n for (const f of msg.sortedFields) {\n if (!msg.isSet(f)) {\n if (f.presence == LEGACY_REQUIRED) {\n throw new Error(`cannot encode ${f} to JSON: required field not set`);\n }\n if (!opts.alwaysEmitImplicit || f.presence !== IMPLICIT) {\n // Fields with implicit presence omit zero values (e.g. empty string) by default\n continue;\n }\n }\n const jsonValue = fieldToJson(f, msg.get(f), opts);\n if (jsonValue !== undefined) {\n json[jsonName(f, opts)] = jsonValue;\n }\n }\n if (opts.registry) {\n const tagSeen = new Set();\n for (const { no } of (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : []) {\n // Same tag can appear multiple times, so we\n // keep track and skip identical ones.\n if (!tagSeen.has(no)) {\n tagSeen.add(no);\n const extension = opts.registry.getExtensionFor(msg.desc, no);\n if (!extension) {\n continue;\n }\n const value = getExtension(msg.message, extension);\n const [container, field] = createExtensionContainer(extension, value);\n const jsonValue = fieldToJson(field, container.get(field), opts);\n if (jsonValue !== undefined) {\n json[extension.jsonName] = jsonValue;\n }\n }\n }\n }\n return json;\n}\nfunction fieldToJson(f, val, opts) {\n switch (f.fieldKind) {\n case \"scalar\":\n return scalarToJson(f, val);\n case \"message\":\n return reflectToJson(val, opts);\n case \"enum\":\n return enumToJsonInternal(f.enum, val, opts.enumAsInteger);\n case \"list\":\n return listToJson(val, opts);\n case \"map\":\n return mapToJson(val, opts);\n }\n}\nfunction mapToJson(map, opts) {\n const f = map.field();\n const jsonObj = {};\n switch (f.mapKind) {\n case \"scalar\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = scalarToJson(f, entryValue);\n }\n break;\n case \"message\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = reflectToJson(entryValue, opts);\n }\n break;\n case \"enum\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = enumToJsonInternal(f.enum, entryValue, opts.enumAsInteger);\n }\n break;\n }\n return opts.alwaysEmitImplicit || map.size > 0 ? jsonObj : undefined;\n}\nfunction listToJson(list, opts) {\n const f = list.field();\n const jsonArr = [];\n switch (f.listKind) {\n case \"scalar\":\n for (const item of list) {\n jsonArr.push(scalarToJson(f, item));\n }\n break;\n case \"enum\":\n for (const item of list) {\n jsonArr.push(enumToJsonInternal(f.enum, item, opts.enumAsInteger));\n }\n break;\n case \"message\":\n for (const item of list) {\n jsonArr.push(reflectToJson(item, opts));\n }\n break;\n }\n return opts.alwaysEmitImplicit || jsonArr.length > 0 ? jsonArr : undefined;\n}\nfunction enumToJsonInternal(desc, value, enumAsInteger) {\n var _a;\n if (typeof value != \"number\") {\n throw new Error(`cannot encode ${desc} to JSON: expected number, got ${formatVal(value)}`);\n }\n if (desc.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n if (enumAsInteger) {\n return value;\n }\n const val = desc.value[value];\n return (_a = val === null || val === void 0 ? void 0 : val.name) !== null && _a !== void 0 ? _a : value; // if we don't know the enum value, just return the number\n}\nfunction scalarToJson(field, value) {\n var _a, _b, _c, _d, _e, _f;\n switch (field.scalar) {\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n if (typeof value != \"number\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_a = checkField(field, value)) === null || _a === void 0 ? void 0 : _a.message}`);\n }\n return value;\n // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n // Either numbers or strings are accepted. Exponent notation is also accepted.\n case ScalarType.FLOAT:\n case ScalarType.DOUBLE: // eslint-disable-line no-fallthrough\n if (typeof value != \"number\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_b = checkField(field, value)) === null || _b === void 0 ? void 0 : _b.message}`);\n }\n if (Number.isNaN(value))\n return \"NaN\";\n if (value === Number.POSITIVE_INFINITY)\n return \"Infinity\";\n if (value === Number.NEGATIVE_INFINITY)\n return \"-Infinity\";\n return value;\n // string:\n case ScalarType.STRING:\n if (typeof value != \"string\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_c = checkField(field, value)) === null || _c === void 0 ? void 0 : _c.message}`);\n }\n return value;\n // bool:\n case ScalarType.BOOL:\n if (typeof value != \"boolean\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_d = checkField(field, value)) === null || _d === void 0 ? void 0 : _d.message}`);\n }\n return value;\n // JSON value will be a decimal string. Either numbers or strings are accepted.\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (typeof value == \"bigint\" ||\n typeof value == \"string\" ||\n (typeof value == \"number\" && Number.isInteger(value))) {\n return value.toString();\n }\n throw new Error(`cannot encode ${field} to JSON: ${(_e = checkField(field, value)) === null || _e === void 0 ? void 0 : _e.message}`);\n // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n case ScalarType.BYTES:\n if (value instanceof Uint8Array) {\n return base64Encode(value);\n }\n throw new Error(`cannot encode ${field} to JSON: ${(_f = checkField(field, value)) === null || _f === void 0 ? void 0 : _f.message}`);\n }\n}\nfunction jsonName(f, opts) {\n return opts.useProtoFieldName ? f.name : f.jsonName;\n}\n// returns a json value if wkt, otherwise returns undefined.\nfunction tryWktToJson(msg, opts) {\n if (!msg.desc.typeName.startsWith(\"google.protobuf.\")) {\n return undefined;\n }\n switch (msg.desc.typeName) {\n case \"google.protobuf.Any\":\n return anyToJson(msg.message, opts);\n case \"google.protobuf.Timestamp\":\n return timestampToJson(msg.message);\n case \"google.protobuf.Duration\":\n return durationToJson(msg.message);\n case \"google.protobuf.FieldMask\":\n return fieldMaskToJson(msg.message);\n case \"google.protobuf.Struct\":\n return structToJson(msg.message);\n case \"google.protobuf.Value\":\n return valueToJson(msg.message);\n case \"google.protobuf.ListValue\":\n return listValueToJson(msg.message);\n default:\n if (isWrapperDesc(msg.desc)) {\n const valueField = msg.desc.fields[0];\n return scalarToJson(valueField, msg.get(valueField));\n }\n return undefined;\n }\n}\nfunction anyToJson(val, opts) {\n if (val.typeUrl === \"\") {\n return {};\n }\n const { registry } = opts;\n let message;\n let desc;\n if (registry) {\n message = anyUnpack(val, registry);\n if (message) {\n desc = registry.getMessage(message.$typeName);\n }\n }\n if (!desc || !message) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: \"${val.typeUrl}\" is not in the type registry`);\n }\n const reflected = reflect(desc, message);\n const json = hasCustomJsonRepresentation(desc)\n ? { value: tryWktToJson(reflected, opts) }\n : reflectToJson(reflected, opts);\n json[\"@type\"] = val.typeUrl;\n return json;\n}\nfunction durationToJson(val) {\n const seconds = Number(val.seconds);\n const nanos = val.nanos;\n if (seconds > 315576000000 || seconds < -315576000000) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: value out of range`);\n }\n if ((seconds > 0 && nanos < 0) || (seconds < 0 && nanos > 0)) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos sign must match seconds sign`);\n }\n let text = val.seconds.toString();\n if (nanos !== 0) {\n let nanosStr = Math.abs(nanos).toString();\n nanosStr = \"0\".repeat(9 - nanosStr.length) + nanosStr;\n if (nanosStr.substring(3) === \"000000\") {\n nanosStr = nanosStr.substring(0, 3);\n }\n else if (nanosStr.substring(6) === \"000\") {\n nanosStr = nanosStr.substring(0, 6);\n }\n text += \".\" + nanosStr;\n if (nanos < 0 && seconds == 0) {\n text = \"-\" + text;\n }\n }\n return text + \"s\";\n}\nfunction fieldMaskToJson(val) {\n return val.paths\n .map((p) => {\n if (protoSnakeCase(protoCamelCase(p)) !== p) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: lowerCamelCase of path name \"${p}\" is irreversible`);\n }\n return protoCamelCase(p);\n })\n .join(\",\");\n}\nfunction structToJson(val) {\n const json = {};\n for (const [k, v] of Object.entries(val.fields)) {\n json[k] = valueToJson(v);\n }\n return json;\n}\nfunction valueToJson(val) {\n switch (val.kind.case) {\n case \"nullValue\":\n return null;\n case \"numberValue\":\n if (!Number.isFinite(val.kind.value)) {\n throw new Error(`${val.$typeName} cannot be NaN or Infinity`);\n }\n return val.kind.value;\n case \"boolValue\":\n return val.kind.value;\n case \"stringValue\":\n return val.kind.value;\n case \"structValue\":\n return structToJson(val.kind.value);\n case \"listValue\":\n return listValueToJson(val.kind.value);\n default:\n throw new Error(`${val.$typeName} must have a value`);\n }\n}\nfunction listValueToJson(val) {\n return val.values.map(valueToJson);\n}\nfunction timestampToJson(val) {\n const ms = Number(val.seconds) * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") ||\n ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n if (val.nanos < 0) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be negative`);\n }\n if (val.nanos > 999999999) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be greater than 99999999`);\n }\n let z = \"Z\";\n if (val.nanos > 0) {\n const nanosStr = (val.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\") {\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n }\n else if (nanosStr.substring(6) === \"000\") {\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n }\n else {\n z = \".\" + nanosStr + \"Z\";\n }\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n}\n","// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { ScalarType, } from \"./descriptors.js\";\nimport { protoInt64 } from \"./proto-int64.js\";\nimport { create } from \"./create.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { FieldError, isFieldError } from \"./reflect/error.js\";\nimport { formatVal } from \"./reflect/reflect-check.js\";\nimport { protoSnakeCase } from \"./reflect/names.js\";\nimport { base64Decode } from \"./wire/base64-encoding.js\";\nimport { hasCustomJsonRepresentation, isWrapperDesc, anyPack, ListValueSchema, NullValue, StructSchema, ValueSchema, } from \"./wkt/index.js\";\nimport { createExtensionContainer, setExtension } from \"./extensions.js\";\n// Default options for parsing JSON.\nconst jsonReadDefaults = {\n ignoreUnknownFields: false,\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonReadDefaults), options) : jsonReadDefaults;\n}\n/**\n * Parse a message from a JSON string.\n */\nexport function fromJsonString(schema, json, options) {\n return fromJson(schema, parseJsonString(json, schema.typeName), options);\n}\n/**\n * Parse a message from a JSON string, merging fields.\n *\n * Repeated fields are appended. Map entries are added, overwriting\n * existing keys.\n *\n * If a message field is already present, it will be merged with the\n * new data.\n */\nexport function mergeFromJsonString(schema, target, json, options) {\n return mergeFromJson(schema, target, parseJsonString(json, schema.typeName), options);\n}\n/**\n * Parse a message from a JSON value.\n */\nexport function fromJson(schema, json, options) {\n const msg = reflect(schema);\n try {\n readMessage(msg, json, makeReadOptions(options));\n }\n catch (e) {\n if (isFieldError(e)) {\n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n throw new Error(`cannot decode ${e.field()} from JSON: ${e.message}`, {\n cause: e,\n });\n }\n throw e;\n }\n return msg.message;\n}\n/**\n * Parse a message from a JSON value, merging fields.\n *\n * Repeated fields are appended. Map entries are added, overwriting\n * existing keys.\n *\n * If a message field is already present, it will be merged with the\n * new data.\n */\nexport function mergeFromJson(schema, target, json, options) {\n try {\n readMessage(reflect(schema, target), json, makeReadOptions(options));\n }\n catch (e) {\n if (isFieldError(e)) {\n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n throw new Error(`cannot decode ${e.field()} from JSON: ${e.message}`, {\n cause: e,\n });\n }\n throw e;\n }\n return target;\n}\n/**\n * Parses an enum value from JSON.\n */\nexport function enumFromJson(descEnum, json) {\n return readEnum(descEnum, json, false);\n}\n/**\n * Is the given value a JSON enum value?\n */\nexport function isEnumJson(descEnum, value) {\n return undefined !== descEnum.values.find((v) => v.name === value);\n}\nconst messageJsonFields = new WeakMap();\nfunction getJsonField(desc, jsonKey) {\n var _a;\n if (!messageJsonFields.has(desc)) {\n const jsonNames = new Map();\n for (const field of desc.fields) {\n jsonNames.set(field.name, field).set(field.jsonName, field);\n }\n messageJsonFields.set(desc, jsonNames);\n }\n return (_a = messageJsonFields.get(desc)) === null || _a === void 0 ? void 0 : _a.get(jsonKey);\n}\nfunction readMessage(msg, json, opts) {\n var _a;\n if (tryWktFromJson(msg, json, opts)) {\n return;\n }\n if (json == null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode ${msg.desc} from JSON: ${formatVal(json)}`);\n }\n const oneofSeen = new Map();\n for (const [jsonKey, jsonValue] of Object.entries(json)) {\n const field = getJsonField(msg.desc, jsonKey);\n if (field) {\n if (field.oneof) {\n if (jsonValue === null && field.fieldKind == \"scalar\") {\n // see conformance test Required.Proto3.JsonInput.OneofFieldNull{First,Second}\n continue;\n }\n const seen = oneofSeen.get(field.oneof);\n if (seen !== undefined) {\n throw new FieldError(field.oneof, `oneof set multiple times by ${seen.name} and ${field.name}`);\n }\n oneofSeen.set(field.oneof, field);\n }\n readField(msg, field, jsonValue, opts);\n }\n else {\n let extension = undefined;\n if (jsonKey.startsWith(\"[\") &&\n jsonKey.endsWith(\"]\") &&\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n (extension = (_a = opts.registry) === null || _a === void 0 ? void 0 : _a.getExtension(jsonKey.substring(1, jsonKey.length - 1))) &&\n extension.extendee.typeName === msg.desc.typeName) {\n const [container, field, get] = createExtensionContainer(extension);\n readField(container, field, jsonValue, opts);\n setExtension(msg.message, extension, get());\n }\n if (!extension && !opts.ignoreUnknownFields) {\n throw new Error(`cannot decode ${msg.desc} from JSON: key \"${jsonKey}\" is unknown`);\n }\n }\n }\n}\nfunction readField(msg, field, json, opts) {\n switch (field.fieldKind) {\n case \"scalar\":\n readScalarField(msg, field, json);\n break;\n case \"enum\":\n readEnumField(msg, field, json, opts);\n break;\n case \"message\":\n readMessageField(msg, field, json, opts);\n break;\n case \"list\":\n readListField(msg.get(field), json, opts);\n break;\n case \"map\":\n readMapField(msg.get(field), json, opts);\n break;\n }\n}\nfunction readListOrMapItem(field, json, opts) {\n if (field.scalar && json !== null) {\n return scalarFromJson(field, json);\n }\n if (field.message && !isResetSentinelNullValue(field, json)) {\n const msgValue = reflect(field.message);\n readMessage(msgValue, json, opts);\n return msgValue;\n }\n if (field.enum && !isResetSentinelNullValue(field, json)) {\n return readEnum(field.enum, json, opts.ignoreUnknownFields);\n }\n throw new FieldError(field, `${field.fieldKind === \"list\" ? \"list item\" : \"map value\"} must not be null`);\n}\nfunction readMapField(map, json, opts) {\n if (json === null) {\n return;\n }\n const field = map.field();\n if (typeof json != \"object\" || Array.isArray(json)) {\n throw new FieldError(field, \"expected object, got \" + formatVal(json));\n }\n for (const [jsonMapKey, jsonMapValue] of Object.entries(json)) {\n const key = mapKeyFromJson(field.mapKey, jsonMapKey);\n const value = readListOrMapItem(field, jsonMapValue, opts);\n if (value !== tokenIgnoredUnknownEnum) {\n map.set(key, value);\n }\n }\n}\nfunction readListField(list, json, opts) {\n if (json === null) {\n return;\n }\n const field = list.field();\n if (!Array.isArray(json)) {\n throw new FieldError(field, \"expected Array, got \" + formatVal(json));\n }\n for (const jsonItem of json) {\n const value = readListOrMapItem(field, jsonItem, opts);\n if (value !== tokenIgnoredUnknownEnum) {\n list.add(value);\n }\n }\n}\nfunction readMessageField(msg, field, json, opts) {\n if (isResetSentinelNullValue(field, json)) {\n msg.clear(field);\n return;\n }\n const msgValue = msg.isSet(field) ? msg.get(field) : reflect(field.message);\n readMessage(msgValue, json, opts);\n msg.set(field, msgValue);\n}\nfunction readEnumField(msg, field, json, opts) {\n if (isResetSentinelNullValue(field, json)) {\n msg.clear(field);\n return;\n }\n const enumValue = readEnum(field.enum, json, opts.ignoreUnknownFields);\n if (enumValue !== tokenIgnoredUnknownEnum) {\n msg.set(field, enumValue);\n }\n}\nfunction readScalarField(msg, field, json) {\n if (json === null) {\n msg.clear(field);\n }\n else {\n msg.set(field, scalarFromJson(field, json));\n }\n}\n/**\n * Indicates whether a value is a sentinel for reseting a field.\n *\n * For this to be true, the value must be a JSON null and the field must not\n * permit a present, Protobuf-serializable null.\n *\n * Only message google.protobuf.Value and enum google.protobuf.NullValue fields\n * permit Protobuf-serializable nulls.\n *\n * Note that field-resetting sentinel nulls are not permitted in lists and maps.\n */\nfunction isResetSentinelNullValue(field, json) {\n var _a, _b;\n return (json === null &&\n ((_a = field.message) === null || _a === void 0 ? void 0 : _a.typeName) != \"google.protobuf.Value\" &&\n ((_b = field.enum) === null || _b === void 0 ? void 0 : _b.typeName) != \"google.protobuf.NullValue\");\n}\nconst tokenIgnoredUnknownEnum = Symbol();\nfunction readEnum(desc, json, ignoreUnknownFields) {\n if (json === null) {\n return desc.values[0].number;\n }\n switch (typeof json) {\n case \"number\":\n if (Number.isInteger(json)) {\n return json;\n }\n break;\n case \"string\":\n const value = desc.values.find((ev) => ev.name === json);\n if (value !== undefined) {\n return value.number;\n }\n if (ignoreUnknownFields) {\n return tokenIgnoredUnknownEnum;\n }\n break;\n }\n throw new Error(`cannot decode ${desc} from JSON: ${formatVal(json)}`);\n}\n/**\n * Try to parse a JSON value to a scalar value for the reflect API.\n *\n * Returns the input if the JSON value cannot be converted. Raises a FieldError\n * if conversion would be ambiguous.\n */\nfunction scalarFromJson(field, json) {\n // int64, sfixed64, sint64, fixed64, uint64: Reflect supports string and number.\n // string, bool: Supported by reflect.\n switch (field.scalar) {\n // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n // Either numbers or strings are accepted. Exponent notation is also accepted.\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n if (json === \"NaN\")\n return NaN;\n if (json === \"Infinity\")\n return Number.POSITIVE_INFINITY;\n if (json === \"-Infinity\")\n return Number.NEGATIVE_INFINITY;\n if (typeof json == \"number\") {\n if (Number.isNaN(json)) {\n // NaN must be encoded with string constants\n throw new FieldError(field, \"unexpected NaN number\");\n }\n if (!Number.isFinite(json)) {\n // Infinity must be encoded with string constants\n throw new FieldError(field, \"unexpected infinite number\");\n }\n break;\n }\n if (typeof json == \"string\") {\n if (json === \"\") {\n // empty string is not a number\n break;\n }\n if (json.trim().length !== json.length) {\n // extra whitespace\n break;\n }\n const float = Number(json);\n if (!Number.isFinite(float)) {\n // Infinity and NaN must be encoded with string constants\n break;\n }\n return float;\n }\n break;\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.UINT32:\n return int32FromJson(json);\n // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n case ScalarType.BYTES:\n if (typeof json == \"string\") {\n if (json === \"\") {\n return new Uint8Array(0);\n }\n try {\n return base64Decode(json);\n }\n catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new FieldError(field, message);\n }\n }\n break;\n }\n return json;\n}\n/**\n * Try to parse a JSON value to a map key for the reflect API.\n *\n * Returns the input if the JSON value cannot be converted.\n */\nfunction mapKeyFromJson(type, jsonString) {\n switch (type) {\n case ScalarType.BOOL:\n switch (jsonString) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n }\n return jsonString;\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n return int32FromJson(jsonString);\n default:\n return jsonString;\n }\n}\n/**\n * Try to parse a JSON value to a 32-bit integer for the reflect API.\n *\n * Returns the input if the JSON value cannot be converted.\n */\nfunction int32FromJson(json) {\n if (typeof json == \"string\") {\n if (json === \"\") {\n // empty string is not a number\n return json;\n }\n if (json.trim().length !== json.length) {\n // extra whitespace\n return json;\n }\n const num = Number(json);\n if (Number.isNaN(num)) {\n // not a number\n return json;\n }\n return num;\n }\n return json;\n}\nfunction parseJsonString(jsonString, typeName) {\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new Error(`cannot decode message ${typeName} from JSON: ${message}`, \n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n { cause: e });\n }\n}\nfunction tryWktFromJson(msg, jsonValue, opts) {\n if (!msg.desc.typeName.startsWith(\"google.protobuf.\")) {\n return false;\n }\n switch (msg.desc.typeName) {\n case \"google.protobuf.Any\":\n anyFromJson(msg.message, jsonValue, opts);\n return true;\n case \"google.protobuf.Timestamp\":\n timestampFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Duration\":\n durationFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.FieldMask\":\n fieldMaskFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Struct\":\n structFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Value\":\n valueFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.ListValue\":\n listValueFromJson(msg.message, jsonValue);\n return true;\n default:\n if (isWrapperDesc(msg.desc)) {\n const valueField = msg.desc.fields[0];\n if (jsonValue === null) {\n msg.clear(valueField);\n }\n else {\n msg.set(valueField, scalarFromJson(valueField, jsonValue));\n }\n return true;\n }\n return false;\n }\n}\nfunction anyFromJson(any, json, opts) {\n var _a;\n if (json === null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: expected object but got ${formatVal(json)}`);\n }\n if (Object.keys(json).length == 0) {\n return;\n }\n const typeUrl = json[\"@type\"];\n if (typeof typeUrl != \"string\" || typeUrl == \"\") {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: \"@type\" is empty`);\n }\n const typeName = typeUrl.includes(\"/\")\n ? typeUrl.substring(typeUrl.lastIndexOf(\"/\") + 1)\n : typeUrl;\n if (!typeName.length) {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: \"@type\" is invalid`);\n }\n const desc = (_a = opts.registry) === null || _a === void 0 ? void 0 : _a.getMessage(typeName);\n if (!desc) {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: ${typeUrl} is not in the type registry`);\n }\n const msg = reflect(desc);\n if (hasCustomJsonRepresentation(desc) &&\n Object.prototype.hasOwnProperty.call(json, \"value\")) {\n const value = json.value;\n readMessage(msg, value, opts);\n }\n else {\n const copy = Object.assign({}, json);\n // biome-ignore lint/performance/noDelete: <explanation>\n delete copy[\"@type\"];\n readMessage(msg, copy, opts);\n }\n anyPack(msg.desc, msg.message, any);\n}\nfunction timestampFromJson(timestamp, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: ${formatVal(json)}`);\n }\n const matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches) {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);\n }\n const ms = Date.parse(\n // biome-ignore format: want this to read well\n matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms)) {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);\n }\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") ||\n ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n timestamp.seconds = protoInt64.parse(ms / 1000);\n timestamp.nanos = 0;\n if (matches[7]) {\n timestamp.nanos =\n parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) -\n 1000000000;\n }\n}\nfunction durationFromJson(duration, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n const match = json.match(/^(-?[0-9]+)(?:\\.([0-9]+))?s/);\n if (match === null) {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n const longSeconds = Number(match[1]);\n if (longSeconds > 315576000000 || longSeconds < -315576000000) {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n duration.seconds = protoInt64.parse(longSeconds);\n if (typeof match[2] !== \"string\") {\n return;\n }\n const nanosStr = match[2] + \"0\".repeat(9 - match[2].length);\n duration.nanos = parseInt(nanosStr);\n if (longSeconds < 0 || Object.is(longSeconds, -0)) {\n duration.nanos = -duration.nanos;\n }\n}\nfunction fieldMaskFromJson(fieldMask, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: ${formatVal(json)}`);\n }\n if (json === \"\") {\n return;\n }\n fieldMask.paths = json.split(\",\").map((path) => {\n if (path.includes(\"_\")) {\n throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: path names must be lowerCamelCase`);\n }\n return protoSnakeCase(path);\n });\n}\nfunction structFromJson(struct, json) {\n if (typeof json != \"object\" || json == null || Array.isArray(json)) {\n throw new Error(`cannot decode message ${struct.$typeName} from JSON ${formatVal(json)}`);\n }\n for (const [k, v] of Object.entries(json)) {\n const parsedV = create(ValueSchema);\n valueFromJson(parsedV, v);\n struct.fields[k] = parsedV;\n }\n}\nfunction valueFromJson(value, json) {\n switch (typeof json) {\n case \"number\":\n value.kind = { case: \"numberValue\", value: json };\n break;\n case \"string\":\n value.kind = { case: \"stringValue\", value: json };\n break;\n case \"boolean\":\n value.kind = { case: \"boolValue\", value: json };\n break;\n case \"object\":\n if (json === null) {\n value.kind = { case: \"nullValue\", value: NullValue.NULL_VALUE };\n }\n else if (Array.isArray(json)) {\n const listValue = create(ListValueSchema);\n listValueFromJson(listValue, json);\n value.kind = { case: \"listValue\", value: listValue };\n }\n else {\n const struct = create(StructSchema);\n structFromJson(struct, json);\n value.kind = { case: \"structValue\", value: struct };\n }\n break;\n default:\n throw new Error(`cannot decode message ${value.$typeName} from JSON ${formatVal(json)}`);\n }\n return value;\n}\nfunction listValueFromJson(listValue, json) {\n if (!Array.isArray(json)) {\n throw new Error(`cannot decode message ${listValue.$typeName} from JSON ${formatVal(json)}`);\n }\n for (const e of json) {\n const value = create(ValueSchema);\n valueFromJson(value, e);\n listValue.values.push(value);\n }\n}\n","import * as messages_bitcoin_pbPb from './src/definitions/messages-bitcoin_pb.js';\nimport * as messages_ble_pbPb from './src/definitions/messages-ble_pb.js';\nimport * as messages_bootloader_pbPb from './src/definitions/messages-bootloader_pb.js';\nimport * as messages_cardano_pbPb from './src/definitions/messages-cardano_pb.js';\nimport * as messages_common_pbPb from './src/definitions/messages-common_pb.js';\nimport * as messages_crypto_pbPb from './src/definitions/messages-crypto_pb.js';\nimport * as messages_debug_pbPb from './src/definitions/messages-debug_pb.js';\nimport * as messages_definitions_pbPb from './src/definitions/messages-definitions_pb.js';\nimport * as messages_eos_pbPb from './src/definitions/messages-eos_pb.js';\nimport * as messages_ethereum_eip712_pbPb from './src/definitions/messages-ethereum-eip712_pb.js';\nimport * as messages_ethereum_pbPb from './src/definitions/messages-ethereum_pb.js';\nimport * as messages_evolu_pbPb from './src/definitions/messages-evolu_pb.js';\nimport * as messages_management_pbPb from './src/definitions/messages-management_pb.js';\nimport * as messages_monero_pbPb from './src/definitions/messages-monero_pb.js';\nimport * as messages_pbPb from './src/definitions/messages_pb.js';\nimport * as messages_ripple_pbPb from './src/definitions/messages-ripple_pb.js';\nimport * as messages_solana_pbPb from './src/definitions/messages-solana_pb.js';\nimport * as messages_stellar_pbPb from './src/definitions/messages-stellar_pb.js';\nimport * as messages_telemetry_pbPb from './src/definitions/messages-telemetry_pb.js';\nimport * as messages_tezos_pbPb from './src/definitions/messages-tezos_pb.js';\nimport * as messages_thp_pbPb from './src/definitions/messages-thp_pb.js';\nimport * as messages_tron_pbPb from './src/definitions/messages-tron_pb.js';\nimport * as options_pbPb from './src/definitions/options_pb.js';\n\nexport const DefaultDefinitions = [\n messages_bitcoin_pbPb,\n messages_ble_pbPb,\n messages_bootloader_pbPb,\n messages_cardano_pbPb,\n messages_common_pbPb,\n messages_crypto_pbPb,\n messages_debug_pbPb,\n messages_definitions_pbPb,\n messages_eos_pbPb,\n messages_ethereum_eip712_pbPb,\n messages_ethereum_pbPb,\n messages_evolu_pbPb,\n messages_management_pbPb,\n messages_monero_pbPb,\n messages_pbPb,\n messages_ripple_pbPb,\n messages_solana_pbPb,\n messages_stellar_pbPb,\n messages_telemetry_pbPb,\n messages_tezos_pbPb,\n messages_thp_pbPb,\n messages_tron_pbPb,\n options_pbPb,\n];\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-bitcoin.proto (package hw.trezor.messages.bitcoin, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nimport { file_options } from './options_pb';\nexport const file_messages_bitcoin = fileDesc(\n 'ChZtZXNzYWdlcy1iaXRjb2luLnByb3RvEhpody50cmV6b3IubWVzc2FnZXMuYml0Y29pbiKGAwoYTXVsdGlzaWdSZWRlZW1TY3JpcHRUeXBlElQKB3B1YmtleXMYASADKAsyQy5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5NdWx0aXNpZ1JlZGVlbVNjcmlwdFR5cGUuSEROb2RlUGF0aFR5cGUSEgoKc2lnbmF0dXJlcxgCIAMoDBIJCgFtGAMgAigNEjQKBW5vZGVzGAQgAygLMiUuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5IRE5vZGVUeXBlEhEKCWFkZHJlc3NfbhgFIAMoDRJSCg1wdWJrZXlzX29yZGVyGAYgASgOMjAuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uTXVsdGlzaWdQdWJrZXlzT3JkZXI6CVBSRVNFUlZFRBpYCg5IRE5vZGVQYXRoVHlwZRIzCgRub2RlGAEgAigLMiUuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5IRE5vZGVUeXBlEhEKCWFkZHJlc3NfbhgCIAMoDSLYAQoMR2V0UHVibGljS2V5EhEKCWFkZHJlc3NfbhgBIAMoDRIYChBlY2RzYV9jdXJ2ZV9uYW1lGAIgASgJEhQKDHNob3dfZGlzcGxheRgDIAEoCBIaCgljb2luX25hbWUYBCABKAk6B0JpdGNvaW4STgoLc2NyaXB0X3R5cGUYBSABKA4yKy5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5JbnB1dFNjcmlwdFR5cGU6DFNQRU5EQUREUkVTUxIZChFpZ25vcmVfeHB1Yl9tYWdpYxgGIAEoCCJ8CglQdWJsaWNLZXkSMwoEbm9kZRgBIAIoCzIlLmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uSEROb2RlVHlwZRIMCgR4cHViGAIgAigJEhgKEHJvb3RfZmluZ2VycHJpbnQYAyABKA0SEgoKZGVzY3JpcHRvchgEIAEoCSKWAgoKR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SGgoJY29pbl9uYW1lGAIgASgJOgdCaXRjb2luEhQKDHNob3dfZGlzcGxheRgDIAEoCBJGCghtdWx0aXNpZxgEIAEoCzI0Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLk11bHRpc2lnUmVkZWVtU2NyaXB0VHlwZRJOCgtzY3JpcHRfdHlwZRgFIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLklucHV0U2NyaXB0VHlwZToMU1BFTkRBRERSRVNTEhkKEWlnbm9yZV94cHViX21hZ2ljGAYgASgIEhAKCGNodW5raWZ5GAcgASgIIicKB0FkZHJlc3MSDwoHYWRkcmVzcxgBIAIoCRILCgNtYWMYAiABKAwi1wEKDkdldE93bmVyc2hpcElkEhEKCWFkZHJlc3NfbhgBIAMoDRIaCgljb2luX25hbWUYAiABKAk6B0JpdGNvaW4SRgoIbXVsdGlzaWcYAyABKAsyNC5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5NdWx0aXNpZ1JlZGVlbVNjcmlwdFR5cGUSTgoLc2NyaXB0X3R5cGUYBCABKA4yKy5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5JbnB1dFNjcmlwdFR5cGU6DFNQRU5EQUREUkVTUyIjCgtPd25lcnNoaXBJZBIUCgxvd25lcnNoaXBfaWQYASACKAwixwEKC1NpZ25NZXNzYWdlEhEKCWFkZHJlc3NfbhgBIAMoDRIPCgdtZXNzYWdlGAIgAigMEhoKCWNvaW5fbmFtZRgDIAEoCToHQml0Y29pbhJOCgtzY3JpcHRfdHlwZRgEIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLklucHV0U2NyaXB0VHlwZToMU1BFTkRBRERSRVNTEhYKDm5vX3NjcmlwdF90eXBlGAUgASgIEhAKCGNodW5raWZ5GAYgASgIIjYKEE1lc3NhZ2VTaWduYXR1cmUSDwoHYWRkcmVzcxgBIAIoCRIRCglzaWduYXR1cmUYAiACKAwicgoNVmVyaWZ5TWVzc2FnZRIPCgdhZGRyZXNzGAEgAigJEhEKCXNpZ25hdHVyZRgCIAIoDBIPCgdtZXNzYWdlGAMgAigMEhoKCWNvaW5fbmFtZRgEIAEoCToHQml0Y29pbhIQCghjaHVua2lmeRgFIAEoCCLWBAoGU2lnblR4EhUKDW91dHB1dHNfY291bnQYASACKA0SFAoMaW5wdXRzX2NvdW50GAIgAigNEhoKCWNvaW5fbmFtZRgDIAEoCToHQml0Y29pbhISCgd2ZXJzaW9uGAQgASgNOgExEhQKCWxvY2tfdGltZRgFIAEoDToBMBIOCgZleHBpcnkYBiABKA0SGAoMb3ZlcndpbnRlcmVkGAcgASgIQgIYARIYChB2ZXJzaW9uX2dyb3VwX2lkGAggASgNEhEKCXRpbWVzdGFtcBgJIAEoDRIRCglicmFuY2hfaWQYCiABKA0SRAoLYW1vdW50X3VuaXQYCyABKA4yJi5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5BbW91bnRVbml0OgdCSVRDT0lOEiQKFWRlY3JlZF9zdGFraW5nX3RpY2tldBgMIAEoCDoFZmFsc2USFwoJc2VyaWFsaXplGA0gASgIOgR0cnVlEkwKEGNvaW5qb2luX3JlcXVlc3QYDiABKAsyMi5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5TaWduVHguQ29pbkpvaW5SZXF1ZXN0EhAKCGNodW5raWZ5GA8gASgIGokBCg9Db2luSm9pblJlcXVlc3QSEAoIZmVlX3JhdGUYASACKA0SGAoQbm9fZmVlX3RocmVzaG9sZBgCIAIoBBIeChZtaW5fcmVnaXN0cmFibGVfYW1vdW50GAMgAigEEhcKD21hc2tfcHVibGljX2tleRgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwi0gQKCVR4UmVxdWVzdBJHCgxyZXF1ZXN0X3R5cGUYASABKA4yMS5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeFJlcXVlc3QuUmVxdWVzdFR5cGUSSwoHZGV0YWlscxgCIAEoCzI6Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlR4UmVxdWVzdC5UeFJlcXVlc3REZXRhaWxzVHlwZRJRCgpzZXJpYWxpemVkGAMgASgLMj0uaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uVHhSZXF1ZXN0LlR4UmVxdWVzdFNlcmlhbGl6ZWRUeXBlGnEKFFR4UmVxdWVzdERldGFpbHNUeXBlEhUKDXJlcXVlc3RfaW5kZXgYASABKA0SDwoHdHhfaGFzaBgCIAEoDBIWCg5leHRyYV9kYXRhX2xlbhgDIAEoDRIZChFleHRyYV9kYXRhX29mZnNldBgEIAEoDRpcChdUeFJlcXVlc3RTZXJpYWxpemVkVHlwZRIXCg9zaWduYXR1cmVfaW5kZXgYASABKA0SEQoJc2lnbmF0dXJlGAIgASgMEhUKDXNlcmlhbGl6ZWRfdHgYAyABKAwiigEKC1JlcXVlc3RUeXBlEgsKB1RYSU5QVVQQABIMCghUWE9VVFBVVBABEgoKBlRYTUVUQRACEg4KClRYRklOSVNIRUQQAxIPCgtUWEVYVFJBREFUQRAEEg8KC1RYT1JJR0lOUFVUEAUSEAoMVFhPUklHT1VUUFVUEAYSEAoMVFhQQVlNRU5UUkVREAci8QsKBVR4QWNrEj0KAnR4GAEgASgLMjEuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uVHhBY2suVHJhbnNhY3Rpb25UeXBlGqQLCg9UcmFuc2FjdGlvblR5cGUSDwoHdmVyc2lvbhgBIAEoDRJNCgZpbnB1dHMYAiADKAsyPS5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeEFjay5UcmFuc2FjdGlvblR5cGUuVHhJbnB1dFR5cGUSVgoLYmluX291dHB1dHMYAyADKAsyQS5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeEFjay5UcmFuc2FjdGlvblR5cGUuVHhPdXRwdXRCaW5UeXBlEhEKCWxvY2tfdGltZRgEIAEoDRJPCgdvdXRwdXRzGAUgAygLMj4uaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uVHhBY2suVHJhbnNhY3Rpb25UeXBlLlR4T3V0cHV0VHlwZRISCgppbnB1dHNfY250GAYgASgNEhMKC291dHB1dHNfY250GAcgASgNEhIKCmV4dHJhX2RhdGEYCCABKAwSFgoOZXh0cmFfZGF0YV9sZW4YCSABKA0SDgoGZXhwaXJ5GAogASgNEhgKDG92ZXJ3aW50ZXJlZBgLIAEoCEICGAESGAoQdmVyc2lvbl9ncm91cF9pZBgMIAEoDRIRCgl0aW1lc3RhbXAYDSABKA0SEQoJYnJhbmNoX2lkGA4gASgNGqQECgtUeElucHV0VHlwZRIRCglhZGRyZXNzX24YASADKA0SEQoJcHJldl9oYXNoGAIgAigMEhIKCnByZXZfaW5kZXgYAyACKA0SEgoKc2NyaXB0X3NpZxgEIAEoDBIcCghzZXF1ZW5jZRgFIAEoDToKNDI5NDk2NzI5NRJOCgtzY3JpcHRfdHlwZRgGIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLklucHV0U2NyaXB0VHlwZToMU1BFTkRBRERSRVNTEkYKCG11bHRpc2lnGAcgASgLMjQuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uTXVsdGlzaWdSZWRlZW1TY3JpcHRUeXBlEg4KBmFtb3VudBgIIAEoBBITCgtkZWNyZWRfdHJlZRgJIAEoDRIPCgd3aXRuZXNzGA0gASgMEhcKD293bmVyc2hpcF9wcm9vZhgOIAEoDBIXCg9jb21taXRtZW50X2RhdGEYDyABKAwSEQoJb3JpZ19oYXNoGBAgASgMEhIKCm9yaWdfaW5kZXgYESABKA0SUAoUZGVjcmVkX3N0YWtpbmdfc3BlbmQYEiABKA4yMi5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5EZWNyZWRTdGFraW5nU3BlbmRUeXBlEhUKDXNjcmlwdF9wdWJrZXkYEyABKAwSGQoOY29pbmpvaW5fZmxhZ3MYFCABKA06ATAaVwoPVHhPdXRwdXRCaW5UeXBlEg4KBmFtb3VudBgBIAIoBBIVCg1zY3JpcHRfcHVia2V5GAIgAigMEh0KFWRlY3JlZF9zY3JpcHRfdmVyc2lvbhgDIAEoDRq1AgoMVHhPdXRwdXRUeXBlEg8KB2FkZHJlc3MYASABKAkSEQoJYWRkcmVzc19uGAIgAygNEg4KBmFtb3VudBgDIAIoBBJPCgtzY3JpcHRfdHlwZRgEIAEoDjIsLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLk91dHB1dFNjcmlwdFR5cGU6DFBBWVRPQUREUkVTUxJGCghtdWx0aXNpZxgFIAEoCzI0Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLk11bHRpc2lnUmVkZWVtU2NyaXB0VHlwZRIWCg5vcF9yZXR1cm5fZGF0YRgGIAEoDBIRCglvcmlnX2hhc2gYCiABKAwSEgoKb3JpZ19pbmRleBgLIAEoDRIZChFwYXltZW50X3JlcV9pbmRleBgMIAEoDToCGAEisgQKB1R4SW5wdXQSEQoJYWRkcmVzc19uGAEgAygNEhEKCXByZXZfaGFzaBgCIAIoDBISCgpwcmV2X2luZGV4GAMgAigNEhIKCnNjcmlwdF9zaWcYBCABKAwSHAoIc2VxdWVuY2UYBSABKA06CjQyOTQ5NjcyOTUSTgoLc2NyaXB0X3R5cGUYBiABKA4yKy5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5JbnB1dFNjcmlwdFR5cGU6DFNQRU5EQUREUkVTUxJGCghtdWx0aXNpZxgHIAEoCzI0Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLk11bHRpc2lnUmVkZWVtU2NyaXB0VHlwZRIOCgZhbW91bnQYCCACKAQSEwoLZGVjcmVkX3RyZWUYCSABKA0SDwoHd2l0bmVzcxgNIAEoDBIXCg9vd25lcnNoaXBfcHJvb2YYDiABKAwSFwoPY29tbWl0bWVudF9kYXRhGA8gASgMEhEKCW9yaWdfaGFzaBgQIAEoDBISCgpvcmlnX2luZGV4GBEgASgNElAKFGRlY3JlZF9zdGFraW5nX3NwZW5kGBIgASgOMjIuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uRGVjcmVkU3Rha2luZ1NwZW5kVHlwZRIVCg1zY3JpcHRfcHVia2V5GBMgASgMEhkKDmNvaW5qb2luX2ZsYWdzGBQgASgNOgEwSgQIChALSgQICxAMSgQIDBANIsMCCghUeE91dHB1dBIPCgdhZGRyZXNzGAEgASgJEhEKCWFkZHJlc3NfbhgCIAMoDRIOCgZhbW91bnQYAyACKAQSTwoLc2NyaXB0X3R5cGUYBCABKA4yLC5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5PdXRwdXRTY3JpcHRUeXBlOgxQQVlUT0FERFJFU1MSRgoIbXVsdGlzaWcYBSABKAsyNC5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5NdWx0aXNpZ1JlZGVlbVNjcmlwdFR5cGUSFgoOb3BfcmV0dXJuX2RhdGEYBiABKAwSEQoJb3JpZ19oYXNoGAogASgMEhIKCm9yaWdfaW5kZXgYCyABKA0SGQoRcGF5bWVudF9yZXFfaW5kZXgYDCABKA1KBAgHEAhKBAgIEAlKBAgJEAoi4gEKBlByZXZUeBIPCgd2ZXJzaW9uGAEgAigNEhEKCWxvY2tfdGltZRgEIAIoDRIUCgxpbnB1dHNfY291bnQYBiACKA0SFQoNb3V0cHV0c19jb3VudBgHIAIoDRIZCg5leHRyYV9kYXRhX2xlbhgJIAEoDToBMBIOCgZleHBpcnkYCiABKA0SGAoQdmVyc2lvbl9ncm91cF9pZBgMIAEoDRIRCgl0aW1lc3RhbXAYDSABKA0SEQoJYnJhbmNoX2lkGA4gASgNSgQIAhADSgQIAxAESgQIBRAGSgQICBAJSgQICxAMIsEBCglQcmV2SW5wdXQSEQoJcHJldl9oYXNoGAIgAigMEhIKCnByZXZfaW5kZXgYAyACKA0SEgoKc2NyaXB0X3NpZxgEIAIoDBIQCghzZXF1ZW5jZRgFIAIoDRITCgtkZWNyZWRfdHJlZRgJIAEoDUoECAEQAkoECAYQB0oECAcQCEoECAgQCUoECAoQC0oECAsQDEoECAwQDUoECA0QDkoECA4QD0oECA8QEEoECBAQEUoECBEQEkoECBIQE0oECBMQFCJSCgpQcmV2T3V0cHV0Eg4KBmFtb3VudBgBIAIoBBIVCg1zY3JpcHRfcHVia2V5GAIgAigMEh0KFWRlY3JlZF9zY3JpcHRfdmVyc2lvbhgDIAEoDSKhAQoKVHhBY2tJbnB1dBJECgJ0eBgBIAIoCzI4Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlR4QWNrSW5wdXQuVHhBY2tJbnB1dFdyYXBwZXIaRwoRVHhBY2tJbnB1dFdyYXBwZXISMgoFaW5wdXQYAiACKAsyIy5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeElucHV0OgSQshkWIqcBCgtUeEFja091dHB1dBJGCgJ0eBgBIAIoCzI6Lmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlR4QWNrT3V0cHV0LlR4QWNrT3V0cHV0V3JhcHBlchpKChJUeEFja091dHB1dFdyYXBwZXISNAoGb3V0cHV0GAUgAigLMiQuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uVHhPdXRwdXQ6BJCyGRYiRQoNVHhBY2tQcmV2TWV0YRIuCgJ0eBgBIAIoCzIiLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlByZXZUeDoEkLIZFiKzAQoOVHhBY2tQcmV2SW5wdXQSTAoCdHgYASACKAsyQC5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeEFja1ByZXZJbnB1dC5UeEFja1ByZXZJbnB1dFdyYXBwZXIaTQoVVHhBY2tQcmV2SW5wdXRXcmFwcGVyEjQKBWlucHV0GAIgAigLMiUuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uUHJldklucHV0OgSQshkWIrkBCg9UeEFja1ByZXZPdXRwdXQSTgoCdHgYASACKAsyQi5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5UeEFja1ByZXZPdXRwdXQuVHhBY2tQcmV2T3V0cHV0V3JhcHBlchpQChZUeEFja1ByZXZPdXRwdXRXcmFwcGVyEjYKBm91dHB1dBgDIAIoCzImLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlByZXZPdXRwdXQ6BJCyGRYipwEKElR4QWNrUHJldkV4dHJhRGF0YRJUCgJ0eBgBIAIoCzJILmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLlR4QWNrUHJldkV4dHJhRGF0YS5UeEFja1ByZXZFeHRyYURhdGFXcmFwcGVyGjUKGVR4QWNrUHJldkV4dHJhRGF0YVdyYXBwZXISGAoQZXh0cmFfZGF0YV9jaHVuaxgIIAIoDDoEkLIZFiKuAgoRR2V0T3duZXJzaGlwUHJvb2YSEQoJYWRkcmVzc19uGAEgAygNEhoKCWNvaW5fbmFtZRgCIAEoCToHQml0Y29pbhJOCgtzY3JpcHRfdHlwZRgDIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5iaXRjb2luLklucHV0U2NyaXB0VHlwZToMU1BFTkRXSVRORVNTEkYKCG11bHRpc2lnGAQgASgLMjQuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uTXVsdGlzaWdSZWRlZW1TY3JpcHRUeXBlEiAKEXVzZXJfY29uZmlybWF0aW9uGAUgASgIOgVmYWxzZRIVCg1vd25lcnNoaXBfaWRzGAYgAygMEhkKD2NvbW1pdG1lbnRfZGF0YRgHIAEoDDoAIjwKDk93bmVyc2hpcFByb29mEhcKD293bmVyc2hpcF9wcm9vZhgBIAIoDBIRCglzaWduYXR1cmUYAiACKAwivwIKEUF1dGhvcml6ZUNvaW5Kb2luEhMKC2Nvb3JkaW5hdG9yGAEgAigJEhIKCm1heF9yb3VuZHMYAiACKAQSIAoYbWF4X2Nvb3JkaW5hdG9yX2ZlZV9yYXRlGAMgAigNEhoKEm1heF9mZWVfcGVyX2t2Ynl0ZRgEIAIoDRIRCglhZGRyZXNzX24YBSADKA0SGgoJY29pbl9uYW1lGAYgASgJOgdCaXRjb2luEk4KC3NjcmlwdF90eXBlGAcgASgOMisuaHcudHJlem9yLm1lc3NhZ2VzLmJpdGNvaW4uSW5wdXRTY3JpcHRUeXBlOgxTUEVOREFERFJFU1MSRAoLYW1vdW50X3VuaXQYCCABKA4yJi5ody50cmV6b3IubWVzc2FnZXMuYml0Y29pbi5BbW91bnRVbml0OgdCSVRDT0lOKn4KD0lucHV0U2NyaXB0VHlwZRIQCgxTUEVOREFERFJFU1MQABIRCg1TUEVORE1VTFRJU0lHEAESDAoIRVhURVJOQUwQAhIQCgxTUEVORFdJVE5FU1MQAxIUChBTUEVORFAyU0hXSVRORVNTEAQSEAoMU1BFTkRUQVBST09UEAUqmQEKEE91dHB1dFNjcmlwdFR5cGUSEAoMUEFZVE9BRERSRVNTEAASEwoPUEFZVE9TQ1JJUFRIQVNIEAESEQoNUEFZVE9NVUxUSVNJRxACEhEKDVBBWVRPT1BSRVRVUk4QAxIQCgxQQVlUT1dJVE5FU1MQBBIUChBQQVlUT1AyU0hXSVRORVNTEAUSEAoMUEFZVE9UQVBST09UEAYqLgoWRGVjcmVkU3Rha2luZ1NwZW5kVHlwZRIJCgVTU0dlbhAAEgkKBVNTUlRYEAEqSgoKQW1vdW50VW5pdBILCgdCSVRDT0lOEAASEAoMTUlMTElCSVRDT0lOEAESEAoMTUlDUk9CSVRDT0lOEAISCwoHU0FUT1NISRADKjgKFE11bHRpc2lnUHVia2V5c09yZGVyEg0KCVBSRVNFUlZFRBAAEhEKDUxFWElDT0dSQVBISUMQAUI/CiNjb20uc2F0b3NoaWxhYnMudHJlem9yLmxpYi5wcm90b2J1ZkIUVHJlem9yTWVzc2FnZUJpdGNvaW6Aph0B',\n [file_messages_common, file_options],\n);\nexport const MultisigRedeemScriptTypeSchema = messageDesc(file_messages_bitcoin, 0);\nexport const MultisigRedeemScriptType_HDNodePathTypeSchema = messageDesc(\n file_messages_bitcoin,\n 0,\n 0,\n);\nexport const GetPublicKeySchema = messageDesc(file_messages_bitcoin, 1);\nexport const PublicKeySchema = messageDesc(file_messages_bitcoin, 2);\nexport const GetAddressSchema = messageDesc(file_messages_bitcoin, 3);\nexport const AddressSchema = messageDesc(file_messages_bitcoin, 4);\nexport const GetOwnershipIdSchema = messageDesc(file_messages_bitcoin, 5);\nexport const OwnershipIdSchema = messageDesc(file_messages_bitcoin, 6);\nexport const SignMessageSchema = messageDesc(file_messages_bitcoin, 7);\nexport const MessageSignatureSchema = messageDesc(file_messages_bitcoin, 8);\nexport const VerifyMessageSchema = messageDesc(file_messages_bitcoin, 9);\nexport const SignTxSchema = messageDesc(file_messages_bitcoin, 10);\nexport const SignTx_CoinJoinRequestSchema = messageDesc(file_messages_bitcoin, 10, 0);\nexport const TxRequestSchema = messageDesc(file_messages_bitcoin, 11);\nexport const TxRequest_TxRequestDetailsTypeSchema = messageDesc(file_messages_bitcoin, 11, 0);\nexport const TxRequest_TxRequestSerializedTypeSchema = messageDesc(file_messages_bitcoin, 11, 1);\nexport const TxRequest_RequestTypeSchema = enumDesc(file_messages_bitcoin, 11, 0);\nexport const TxRequest_RequestType = tsEnum(TxRequest_RequestTypeSchema);\nexport const TxAckSchema = messageDesc(file_messages_bitcoin, 12);\nexport const TxAck_TransactionTypeSchema = messageDesc(file_messages_bitcoin, 12, 0);\nexport const TxAck_TransactionType_TxInputTypeSchema = messageDesc(file_messages_bitcoin, 12, 0, 0);\nexport const TxAck_TransactionType_TxOutputBinTypeSchema = messageDesc(\n file_messages_bitcoin,\n 12,\n 0,\n 1,\n);\nexport const TxAck_TransactionType_TxOutputTypeSchema = messageDesc(\n file_messages_bitcoin,\n 12,\n 0,\n 2,\n);\nexport const TxInputSchema = messageDesc(file_messages_bitcoin, 13);\nexport const TxOutputSchema = messageDesc(file_messages_bitcoin, 14);\nexport const PrevTxSchema = messageDesc(file_messages_bitcoin, 15);\nexport const PrevInputSchema = messageDesc(file_messages_bitcoin, 16);\nexport const PrevOutputSchema = messageDesc(file_messages_bitcoin, 17);\nexport const TxAckInputSchema = messageDesc(file_messages_bitcoin, 18);\nexport const TxAckInput_TxAckInputWrapperSchema = messageDesc(file_messages_bitcoin, 18, 0);\nexport const TxAckOutputSchema = messageDesc(file_messages_bitcoin, 19);\nexport const TxAckOutput_TxAckOutputWrapperSchema = messageDesc(file_messages_bitcoin, 19, 0);\nexport const TxAckPrevMetaSchema = messageDesc(file_messages_bitcoin, 20);\nexport const TxAckPrevInputSchema = messageDesc(file_messages_bitcoin, 21);\nexport const TxAckPrevInput_TxAckPrevInputWrapperSchema = messageDesc(file_messages_bitcoin, 21, 0);\nexport const TxAckPrevOutputSchema = messageDesc(file_messages_bitcoin, 22);\nexport const TxAckPrevOutput_TxAckPrevOutputWrapperSchema = messageDesc(\n file_messages_bitcoin,\n 22,\n 0,\n);\nexport const TxAckPrevExtraDataSchema = messageDesc(file_messages_bitcoin, 23);\nexport const TxAckPrevExtraData_TxAckPrevExtraDataWrapperSchema = messageDesc(\n file_messages_bitcoin,\n 23,\n 0,\n);\nexport const GetOwnershipProofSchema = messageDesc(file_messages_bitcoin, 24);\nexport const OwnershipProofSchema = messageDesc(file_messages_bitcoin, 25);\nexport const AuthorizeCoinJoinSchema = messageDesc(file_messages_bitcoin, 26);\nexport const InputScriptTypeSchema = enumDesc(file_messages_bitcoin, 0);\nexport const InputScriptType = tsEnum(InputScriptTypeSchema);\nexport const OutputScriptTypeSchema = enumDesc(file_messages_bitcoin, 1);\nexport const OutputScriptType = tsEnum(OutputScriptTypeSchema);\nexport const DecredStakingSpendTypeSchema = enumDesc(file_messages_bitcoin, 2);\nexport const DecredStakingSpendType = tsEnum(DecredStakingSpendTypeSchema);\nexport const AmountUnitSchema = enumDesc(file_messages_bitcoin, 3);\nexport const AmountUnit = tsEnum(AmountUnitSchema);\nexport const MultisigPubkeysOrderSchema = enumDesc(file_messages_bitcoin, 4);\nexport const MultisigPubkeysOrder = tsEnum(MultisigPubkeysOrderSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-common.proto (package hw.trezor.messages.common, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_common = fileDesc(\n 'ChVtZXNzYWdlcy1jb21tb24ucHJvdG8SGWh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24iHAoHU3VjY2VzcxIRCgdtZXNzYWdlGAEgASgJOgAi8AQKB0ZhaWx1cmUSPAoEY29kZRgBIAEoDjIuLmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uRmFpbHVyZS5GYWlsdXJlVHlwZRIPCgdtZXNzYWdlGAIgASgJIpUECgtGYWlsdXJlVHlwZRIdChlGYWlsdXJlX1VuZXhwZWN0ZWRNZXNzYWdlEAESGgoWRmFpbHVyZV9CdXR0b25FeHBlY3RlZBACEhUKEUZhaWx1cmVfRGF0YUVycm9yEAMSGwoXRmFpbHVyZV9BY3Rpb25DYW5jZWxsZWQQBBIXChNGYWlsdXJlX1BpbkV4cGVjdGVkEAUSGAoURmFpbHVyZV9QaW5DYW5jZWxsZWQQBhIWChJGYWlsdXJlX1BpbkludmFsaWQQBxIcChhGYWlsdXJlX0ludmFsaWRTaWduYXR1cmUQCBIYChRGYWlsdXJlX1Byb2Nlc3NFcnJvchAJEhoKFkZhaWx1cmVfTm90RW5vdWdoRnVuZHMQChIaChZGYWlsdXJlX05vdEluaXRpYWxpemVkEAsSFwoTRmFpbHVyZV9QaW5NaXNtYXRjaBAMEhwKGEZhaWx1cmVfV2lwZUNvZGVNaXNtYXRjaBANEhoKFkZhaWx1cmVfSW52YWxpZFNlc3Npb24QDhIQCgxGYWlsdXJlX0J1c3kQDxIhCh1GYWlsdXJlX1RocFVuYWxsb2NhdGVkU2Vzc2lvbhAQEhsKF0ZhaWx1cmVfSW52YWxpZFByb3RvY29sEBESFgoSRmFpbHVyZV9JblByb2dyZXNzEBMSGQoVRmFpbHVyZV9GaXJtd2FyZUVycm9yEGMiBAgSEBIimAYKDUJ1dHRvblJlcXVlc3QSSAoEY29kZRgBIAEoDjI6Lmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uQnV0dG9uUmVxdWVzdC5CdXR0b25SZXF1ZXN0VHlwZRINCgVwYWdlcxgCIAEoDRIMCgRuYW1lGAQgASgJIpkFChFCdXR0b25SZXF1ZXN0VHlwZRIXChNCdXR0b25SZXF1ZXN0X090aGVyEAESIgoeQnV0dG9uUmVxdWVzdF9GZWVPdmVyVGhyZXNob2xkEAISHwobQnV0dG9uUmVxdWVzdF9Db25maXJtT3V0cHV0EAMSHQoZQnV0dG9uUmVxdWVzdF9SZXNldERldmljZRAEEh0KGUJ1dHRvblJlcXVlc3RfQ29uZmlybVdvcmQQBRIcChhCdXR0b25SZXF1ZXN0X1dpcGVEZXZpY2UQBhIdChlCdXR0b25SZXF1ZXN0X1Byb3RlY3RDYWxsEAcSGAoUQnV0dG9uUmVxdWVzdF9TaWduVHgQCBIfChtCdXR0b25SZXF1ZXN0X0Zpcm13YXJlQ2hlY2sQCRIZChVCdXR0b25SZXF1ZXN0X0FkZHJlc3MQChIbChdCdXR0b25SZXF1ZXN0X1B1YmxpY0tleRALEiMKH0J1dHRvblJlcXVlc3RfTW5lbW9uaWNXb3JkQ291bnQQDBIfChtCdXR0b25SZXF1ZXN0X01uZW1vbmljSW5wdXQQDRIwCihfRGVwcmVjYXRlZF9CdXR0b25SZXF1ZXN0X1Bhc3NwaHJhc2VUeXBlEA4aAggBEicKI0J1dHRvblJlcXVlc3RfVW5rbm93bkRlcml2YXRpb25QYXRoEA8SIgoeQnV0dG9uUmVxdWVzdF9SZWNvdmVyeUhvbWVwYWdlEBASGQoVQnV0dG9uUmVxdWVzdF9TdWNjZXNzEBESGQoVQnV0dG9uUmVxdWVzdF9XYXJuaW5nEBISIQodQnV0dG9uUmVxdWVzdF9QYXNzcGhyYXNlRW50cnkQExIaChZCdXR0b25SZXF1ZXN0X1BpbkVudHJ5EBRKBAgDEAQiCwoJQnV0dG9uQWNrIrUCChBQaW5NYXRyaXhSZXF1ZXN0Ek4KBHR5cGUYASABKA4yQC5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLlBpbk1hdHJpeFJlcXVlc3QuUGluTWF0cml4UmVxdWVzdFR5cGUi0AEKFFBpbk1hdHJpeFJlcXVlc3RUeXBlEiAKHFBpbk1hdHJpeFJlcXVlc3RUeXBlX0N1cnJlbnQQARIhCh1QaW5NYXRyaXhSZXF1ZXN0VHlwZV9OZXdGaXJzdBACEiIKHlBpbk1hdHJpeFJlcXVlc3RUeXBlX05ld1NlY29uZBADEiYKIlBpbk1hdHJpeFJlcXVlc3RUeXBlX1dpcGVDb2RlRmlyc3QQBBInCiNQaW5NYXRyaXhSZXF1ZXN0VHlwZV9XaXBlQ29kZVNlY29uZBAFIhsKDFBpbk1hdHJpeEFjaxILCgNwaW4YASACKAkiKwoRUGFzc3BocmFzZVJlcXVlc3QSFgoKX29uX2RldmljZRgBIAEoCEICGAEiSgoNUGFzc3BocmFzZUFjaxISCgpwYXNzcGhyYXNlGAEgASgJEhIKBl9zdGF0ZRgCIAEoDEICGAESEQoJb25fZGV2aWNlGAMgASgIIjYKIURlcHJlY2F0ZWRfUGFzc3BocmFzZVN0YXRlUmVxdWVzdBINCgVzdGF0ZRgBIAEoDDoCGAEiIwodRGVwcmVjYXRlZF9QYXNzcGhyYXNlU3RhdGVBY2s6AhgBIoABCgpIRE5vZGVUeXBlEg0KBWRlcHRoGAEgAigNEhMKC2ZpbmdlcnByaW50GAIgAigNEhEKCWNoaWxkX251bRgDIAIoDRISCgpjaGFpbl9jb2RlGAQgAigMEhMKC3ByaXZhdGVfa2V5GAUgASgMEhIKCnB1YmxpY19rZXkYBiACKAwi9QUKDlBheW1lbnRSZXF1ZXN0Eg0KBW5vbmNlGAEgASgMEhYKDnJlY2lwaWVudF9uYW1lGAIgAigJEksKBW1lbW9zGAMgAygLMjwuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdC5QYXltZW50UmVxdWVzdE1lbW8SDgoGYW1vdW50GAYgASgMEhEKCXNpZ25hdHVyZRgFIAIoDBrUAgoSUGF5bWVudFJlcXVlc3RNZW1vEkUKCXRleHRfbWVtbxgBIAEoCzIyLmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uUGF5bWVudFJlcXVlc3QuVGV4dE1lbW8SSQoLcmVmdW5kX21lbW8YAiABKAsyNC5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLlBheW1lbnRSZXF1ZXN0LlJlZnVuZE1lbW8SVgoSY29pbl9wdXJjaGFzZV9tZW1vGAMgASgLMjouaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdC5Db2luUHVyY2hhc2VNZW1vElQKEXRleHRfZGV0YWlsc19tZW1vGAQgASgLMjkuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdC5UZXh0RGV0YWlsc01lbW8aGAoIVGV4dE1lbW8SDAoEdGV4dBgBIAIoCRouCg9UZXh0RGV0YWlsc01lbW8SDQoFdGl0bGUYASACKAkSDAoEdGV4dBgCIAIoCRo9CgpSZWZ1bmRNZW1vEg8KB2FkZHJlc3MYASACKAkSEQoJYWRkcmVzc19uGAIgAygNEgsKA21hYxgDIAIoDBpmChBDb2luUHVyY2hhc2VNZW1vEhEKCWNvaW5fdHlwZRgBIAIoDRIOCgZhbW91bnQYAiACKAkSDwoHYWRkcmVzcxgDIAIoCRIRCglhZGRyZXNzX24YBCADKA0SCwoDbWFjGAUgAigMSgQIBBAFQj4KI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhNUcmV6b3JNZXNzYWdlQ29tbW9ugKYdAQ',\n [file_options],\n);\nexport const SuccessSchema = messageDesc(file_messages_common, 0);\nexport const FailureSchema = messageDesc(file_messages_common, 1);\nexport const Failure_FailureTypeSchema = enumDesc(file_messages_common, 1, 0);\nexport const Failure_FailureType = tsEnum(Failure_FailureTypeSchema);\nexport const ButtonRequestSchema = messageDesc(file_messages_common, 2);\nexport const ButtonRequest_ButtonRequestTypeSchema = enumDesc(file_messages_common, 2, 0);\nexport const ButtonRequest_ButtonRequestType = tsEnum(ButtonRequest_ButtonRequestTypeSchema);\nexport const ButtonAckSchema = messageDesc(file_messages_common, 3);\nexport const PinMatrixRequestSchema = messageDesc(file_messages_common, 4);\nexport const PinMatrixRequest_PinMatrixRequestTypeSchema = enumDesc(file_messages_common, 4, 0);\nexport const PinMatrixRequest_PinMatrixRequestType = tsEnum(\n PinMatrixRequest_PinMatrixRequestTypeSchema,\n);\nexport const PinMatrixAckSchema = messageDesc(file_messages_common, 5);\nexport const PassphraseRequestSchema = messageDesc(file_messages_common, 6);\nexport const PassphraseAckSchema = messageDesc(file_messages_common, 7);\nexport const Deprecated_PassphraseStateRequestSchema = messageDesc(file_messages_common, 8);\nexport const Deprecated_PassphraseStateAckSchema = messageDesc(file_messages_common, 9);\nexport const HDNodeTypeSchema = messageDesc(file_messages_common, 10);\nexport const PaymentRequestSchema = messageDesc(file_messages_common, 11);\nexport const PaymentRequest_PaymentRequestMemoSchema = messageDesc(file_messages_common, 11, 0);\nexport const PaymentRequest_TextMemoSchema = messageDesc(file_messages_common, 11, 1);\nexport const PaymentRequest_TextDetailsMemoSchema = messageDesc(file_messages_common, 11, 2);\nexport const PaymentRequest_RefundMemoSchema = messageDesc(file_messages_common, 11, 3);\nexport const PaymentRequest_CoinPurchaseMemoSchema = messageDesc(file_messages_common, 11, 4);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file options.proto (package hw.trezor.messages, syntax proto2)\nimport { extDesc, fileDesc } from '@bufbuild/protobuf/codegenv2';\nimport { file_google_protobuf_descriptor } from '@bufbuild/protobuf/wkt';\nexport const file_options = fileDesc(\n 'Cg1vcHRpb25zLnByb3RvEhJody50cmV6b3IubWVzc2FnZXM6PAoHd2lyZV9pbhIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGNKGAyABKAhSBndpcmVJbjo+Cgh3aXJlX291dBIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGNOGAyABKAhSB3dpcmVPdXQ6RwoNd2lyZV9kZWJ1Z19pbhIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGNSGAyABKAhSC3dpcmVEZWJ1Z0luOkkKDndpcmVfZGVidWdfb3V0EiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMY1YYDIAEoCFIMd2lyZURlYnVnT3V0OkAKCXdpcmVfdGlueRIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGNaGAyABKAhSCHdpcmVUaW55OkwKD3dpcmVfYm9vdGxvYWRlchIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGNeGAyABKAhSDndpcmVCb290bG9hZGVyOkMKC3dpcmVfbm9fZnNtEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMY2IYDIAEoCFIJd2lyZU5vRnNtOkYKDGJpdGNvaW5fb25seRIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGODUAyABKAhSC2JpdGNvaW5Pbmx5OlUKF2hhc19iaXRjb2luX29ubHlfdmFsdWVzEhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zGLmOAyABKAhSFGhhc0JpdGNvaW5Pbmx5VmFsdWVzOjsKCXdpcmVfZW51bRIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9ucxi6jgMgASgIUgh3aXJlRW51bTpUChRleHBlcmltZW50YWxfbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxihlgMgASgIUhNleHBlcmltZW50YWxNZXNzYWdlOj4KCXdpcmVfdHlwZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiilgMgASgNUgh3aXJlVHlwZTpGCg1pbnRlcm5hbF9vbmx5Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGKOWAyABKAhSDGludGVybmFsT25seTpOChJleHBlcmltZW50YWxfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGImeAyABKAhSEWV4cGVyaW1lbnRhbEZpZWxkOlUKF2luY2x1ZGVfaW5fYml0Y29pbl9vbmx5EhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGODUAyABKAhSFGluY2x1ZGVJbkJpdGNvaW5Pbmx5QjQKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQg1UcmV6b3JPcHRpb25z',\n [file_google_protobuf_descriptor],\n);\nexport const wire_in = extDesc(file_options, 0);\nexport const wire_out = extDesc(file_options, 1);\nexport const wire_debug_in = extDesc(file_options, 2);\nexport const wire_debug_out = extDesc(file_options, 3);\nexport const wire_tiny = extDesc(file_options, 4);\nexport const wire_bootloader = extDesc(file_options, 5);\nexport const wire_no_fsm = extDesc(file_options, 6);\nexport const bitcoin_only = extDesc(file_options, 7);\nexport const has_bitcoin_only_values = extDesc(file_options, 8);\nexport const wire_enum = extDesc(file_options, 9);\nexport const experimental_message = extDesc(file_options, 10);\nexport const wire_type = extDesc(file_options, 11);\nexport const internal_only = extDesc(file_options, 12);\nexport const experimental_field = extDesc(file_options, 13);\nexport const include_in_bitcoin_only = extDesc(file_options, 14);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-ble.proto (package hw.trezor.messages.ble, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_ble = fileDesc(\n 'ChJtZXNzYWdlcy1ibGUucHJvdG8SFmh3LnRyZXpvci5tZXNzYWdlcy5ibGUiJgoJQmxlVW5wYWlyEgsKA2FsbBgBIAEoCBIMCgRhZGRyGAIgASgMQjsKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhBUcmV6b3JNZXNzYWdlQmxlgKYdAQ',\n [file_options],\n);\nexport const BleUnpairSchema = messageDesc(file_messages_ble, 0);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-bootloader.proto (package hw.trezor.messages.bootloader, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_bootloader = fileDesc(\n 'ChltZXNzYWdlcy1ib290bG9hZGVyLnByb3RvEh1ody50cmV6b3IubWVzc2FnZXMuYm9vdGxvYWRlciIfCg1GaXJtd2FyZUVyYXNlEg4KBmxlbmd0aBgBIAEoDSIxCg9GaXJtd2FyZVJlcXVlc3QSDgoGb2Zmc2V0GAEgAigNEg4KBmxlbmd0aBgCIAIoDSIvCg5GaXJtd2FyZVVwbG9hZBIPCgdwYXlsb2FkGAEgAigMEgwKBGhhc2gYAiABKAwiHQoKUHJvZFRlc3RUMRIPCgdwYXlsb2FkGAEgASgMQj4KI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhdUcmV6b3JNZXNzYWdlQm9vdGxvYWRlcg',\n);\nexport const FirmwareEraseSchema = messageDesc(file_messages_bootloader, 0);\nexport const FirmwareRequestSchema = messageDesc(file_messages_bootloader, 1);\nexport const FirmwareUploadSchema = messageDesc(file_messages_bootloader, 2);\nexport const ProdTestT1Schema = messageDesc(file_messages_bootloader, 3);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-cardano.proto (package hw.trezor.messages.cardano, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nexport const file_messages_cardano = fileDesc(\n 'ChZtZXNzYWdlcy1jYXJkYW5vLnByb3RvEhpody50cmV6b3IubWVzc2FnZXMuY2FyZGFubyJgChxDYXJkYW5vQmxvY2tjaGFpblBvaW50ZXJUeXBlEhMKC2Jsb2NrX2luZGV4GAEgAigNEhAKCHR4X2luZGV4GAIgAigNEhkKEWNlcnRpZmljYXRlX2luZGV4GAMgAigNIpQCChNDYXJkYW5vTmF0aXZlU2NyaXB0EkEKBHR5cGUYASACKA4yMy5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vTmF0aXZlU2NyaXB0VHlwZRJACgdzY3JpcHRzGAIgAygLMi8uaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub05hdGl2ZVNjcmlwdBIQCghrZXlfaGFzaBgDIAEoDBIQCghrZXlfcGF0aBgEIAMoDRIhChlyZXF1aXJlZF9zaWduYXR1cmVzX2NvdW50GAUgASgNEhYKDmludmFsaWRfYmVmb3JlGAYgASgEEhkKEWludmFsaWRfaGVyZWFmdGVyGAcgASgEIoMCChpDYXJkYW5vR2V0TmF0aXZlU2NyaXB0SGFzaBI/CgZzY3JpcHQYASACKAsyLy5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vTmF0aXZlU2NyaXB0ElgKDmRpc3BsYXlfZm9ybWF0GAIgAigOMkAuaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub05hdGl2ZVNjcmlwdEhhc2hEaXNwbGF5Rm9ybWF0EkoKD2Rlcml2YXRpb25fdHlwZRgDIAIoDjIxLmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9EZXJpdmF0aW9uVHlwZSIuChdDYXJkYW5vTmF0aXZlU2NyaXB0SGFzaBITCgtzY3JpcHRfaGFzaBgBIAIoDCK9AgocQ2FyZGFub0FkZHJlc3NQYXJhbWV0ZXJzVHlwZRJECgxhZGRyZXNzX3R5cGUYASACKA4yLi5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vQWRkcmVzc1R5cGUSEQoJYWRkcmVzc19uGAIgAygNEhkKEWFkZHJlc3Nfbl9zdGFraW5nGAMgAygNEhgKEHN0YWtpbmdfa2V5X2hhc2gYBCABKAwSVQoTY2VydGlmaWNhdGVfcG9pbnRlchgFIAEoCzI4Lmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9CbG9ja2NoYWluUG9pbnRlclR5cGUSGwoTc2NyaXB0X3BheW1lbnRfaGFzaBgGIAEoDBIbChNzY3JpcHRfc3Rha2luZ19oYXNoGAcgASgMIpACChFDYXJkYW5vR2V0QWRkcmVzcxIbCgxzaG93X2Rpc3BsYXkYAiABKAg6BWZhbHNlEhYKDnByb3RvY29sX21hZ2ljGAMgAigNEhIKCm5ldHdvcmtfaWQYBCACKA0SVAoSYWRkcmVzc19wYXJhbWV0ZXJzGAUgAigLMjguaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0FkZHJlc3NQYXJhbWV0ZXJzVHlwZRJKCg9kZXJpdmF0aW9uX3R5cGUYBiACKA4yMS5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vRGVyaXZhdGlvblR5cGUSEAoIY2h1bmtpZnkYByABKAgiLgoOQ2FyZGFub0FkZHJlc3MSDwoHYWRkcmVzcxgBIAIoCRILCgNtYWMYAiABKAwiigEKE0NhcmRhbm9HZXRQdWJsaWNLZXkSEQoJYWRkcmVzc19uGAEgAygNEhQKDHNob3dfZGlzcGxheRgCIAEoCBJKCg9kZXJpdmF0aW9uX3R5cGUYAyACKA4yMS5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vRGVyaXZhdGlvblR5cGUiVQoQQ2FyZGFub1B1YmxpY0tleRIMCgR4cHViGAEgAigJEjMKBG5vZGUYAiACKAsyJS5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLkhETm9kZVR5cGUiowYKEUNhcmRhbm9TaWduVHhJbml0EkYKDHNpZ25pbmdfbW9kZRgBIAIoDjIwLmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9UeFNpZ25pbmdNb2RlEhYKDnByb3RvY29sX21hZ2ljGAIgAigNEhIKCm5ldHdvcmtfaWQYAyACKA0SFAoMaW5wdXRzX2NvdW50GAQgAigNEhUKDW91dHB1dHNfY291bnQYBSACKA0SCwoDZmVlGAYgAigEEgsKA3R0bBgHIAEoBBIaChJjZXJ0aWZpY2F0ZXNfY291bnQYCCACKA0SGQoRd2l0aGRyYXdhbHNfY291bnQYCSACKA0SGgoSaGFzX2F1eGlsaWFyeV9kYXRhGAogAigIEh8KF3ZhbGlkaXR5X2ludGVydmFsX3N0YXJ0GAsgASgEEh4KFndpdG5lc3NfcmVxdWVzdHNfY291bnQYDCACKA0SIgoabWludGluZ19hc3NldF9ncm91cHNfY291bnQYDSACKA0SSgoPZGVyaXZhdGlvbl90eXBlGA4gAigOMjEuaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0Rlcml2YXRpb25UeXBlEiEKEmluY2x1ZGVfbmV0d29ya19pZBgPIAEoCDoFZmFsc2USGAoQc2NyaXB0X2RhdGFfaGFzaBgQIAEoDBIfChdjb2xsYXRlcmFsX2lucHV0c19jb3VudBgRIAIoDRIeChZyZXF1aXJlZF9zaWduZXJzX2NvdW50GBIgAigNEiQKFWhhc19jb2xsYXRlcmFsX3JldHVybhgTIAEoCDoFZmFsc2USGAoQdG90YWxfY29sbGF0ZXJhbBgUIAEoBBIhChZyZWZlcmVuY2VfaW5wdXRzX2NvdW50GBUgASgNOgEwEhAKCGNodW5raWZ5GBYgASgIEhwKDXRhZ19jYm9yX3NldHMYFyABKAg6BWZhbHNlEj4KC3BheW1lbnRfcmVxGBggASgLMikuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdCI3Cg5DYXJkYW5vVHhJbnB1dBIRCglwcmV2X2hhc2gYASACKAwSEgoKcHJldl9pbmRleBgCIAIoDSLWAgoPQ2FyZGFub1R4T3V0cHV0Eg8KB2FkZHJlc3MYASABKAkSVAoSYWRkcmVzc19wYXJhbWV0ZXJzGAIgASgLMjguaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0FkZHJlc3NQYXJhbWV0ZXJzVHlwZRIOCgZhbW91bnQYAyACKAQSGgoSYXNzZXRfZ3JvdXBzX2NvdW50GAQgAigNEhIKCmRhdHVtX2hhc2gYBSABKAwSXAoGZm9ybWF0GAYgASgOMj4uaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub1R4T3V0cHV0U2VyaWFsaXphdGlvbkZvcm1hdDoMQVJSQVlfTEVHQUNZEhwKEWlubGluZV9kYXR1bV9zaXplGAcgASgNOgEwEiAKFXJlZmVyZW5jZV9zY3JpcHRfc2l6ZRgIIAEoDToBMCI8ChFDYXJkYW5vQXNzZXRHcm91cBIRCglwb2xpY3lfaWQYASACKAwSFAoMdG9rZW5zX2NvdW50GAIgAigNIk0KDENhcmRhbm9Ub2tlbhIYChBhc3NldF9uYW1lX2J5dGVzGAEgAigMEg4KBmFtb3VudBgCIAEoBBITCgttaW50X2Ftb3VudBgDIAEoEiIpChlDYXJkYW5vVHhJbmxpbmVEYXR1bUNodW5rEgwKBGRhdGEYASACKAwiLQodQ2FyZGFub1R4UmVmZXJlbmNlU2NyaXB0Q2h1bmsSDAoEZGF0YRgBIAIoDCJGChBDYXJkYW5vUG9vbE93bmVyEhgKEHN0YWtpbmdfa2V5X3BhdGgYASADKA0SGAoQc3Rha2luZ19rZXlfaGFzaBgCIAEoDCKpAQoaQ2FyZGFub1Bvb2xSZWxheVBhcmFtZXRlcnMSPgoEdHlwZRgBIAIoDjIwLmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9Qb29sUmVsYXlUeXBlEhQKDGlwdjRfYWRkcmVzcxgCIAEoDBIUCgxpcHY2X2FkZHJlc3MYAyABKAwSEQoJaG9zdF9uYW1lGAQgASgJEgwKBHBvcnQYBSABKA0iNAoXQ2FyZGFub1Bvb2xNZXRhZGF0YVR5cGUSCwoDdXJsGAEgAigJEgwKBGhhc2gYAiACKAwioQIKGUNhcmRhbm9Qb29sUGFyYW1ldGVyc1R5cGUSDwoHcG9vbF9pZBgBIAIoDBIUCgx2cmZfa2V5X2hhc2gYAiACKAwSDgoGcGxlZGdlGAMgAigEEgwKBGNvc3QYBCACKAQSGAoQbWFyZ2luX251bWVyYXRvchgFIAIoBBIaChJtYXJnaW5fZGVub21pbmF0b3IYBiACKAQSFgoOcmV3YXJkX2FjY291bnQYByACKAkSRQoIbWV0YWRhdGEYCiABKAsyMy5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vUG9vbE1ldGFkYXRhVHlwZRIUCgxvd25lcnNfY291bnQYCyACKA0SFAoMcmVsYXlzX2NvdW50GAwgAigNIm8KC0NhcmRhbm9EUmVwEjkKBHR5cGUYASACKA4yKy5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vRFJlcFR5cGUSEAoIa2V5X2hhc2gYAiABKAwSEwoLc2NyaXB0X2hhc2gYAyABKAwiswIKFENhcmRhbm9UeENlcnRpZmljYXRlEkAKBHR5cGUYASACKA4yMi5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vQ2VydGlmaWNhdGVUeXBlEgwKBHBhdGgYAiADKA0SDAoEcG9vbBgDIAEoDBJOCg9wb29sX3BhcmFtZXRlcnMYBCABKAsyNS5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vUG9vbFBhcmFtZXRlcnNUeXBlEhMKC3NjcmlwdF9oYXNoGAUgASgMEhAKCGtleV9oYXNoGAYgASgMEg8KB2RlcG9zaXQYByABKAQSNQoEZHJlcBgIIAEoCzInLmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9EUmVwIloKE0NhcmRhbm9UeFdpdGhkcmF3YWwSDAoEcGF0aBgBIAMoDRIOCgZhbW91bnQYAiACKAQSEwoLc2NyaXB0X2hhc2gYAyABKAwSEAoIa2V5X2hhc2gYBCABKAwiTQoiQ2FyZGFub0NWb3RlUmVnaXN0cmF0aW9uRGVsZWdhdGlvbhIXCg92b3RlX3B1YmxpY19rZXkYASACKAwSDgoGd2VpZ2h0GAIgAigNIp0DCiZDYXJkYW5vQ1ZvdGVSZWdpc3RyYXRpb25QYXJhbWV0ZXJzVHlwZRIXCg92b3RlX3B1YmxpY19rZXkYASABKAwSFAoMc3Rha2luZ19wYXRoGAIgAygNElwKGnBheW1lbnRfYWRkcmVzc19wYXJhbWV0ZXJzGAMgASgLMjguaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0FkZHJlc3NQYXJhbWV0ZXJzVHlwZRINCgVub25jZRgEIAIoBBJRCgZmb3JtYXQYBSABKA4yOi5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vQ1ZvdGVSZWdpc3RyYXRpb25Gb3JtYXQ6BUNJUDE1ElMKC2RlbGVnYXRpb25zGAYgAygLMj4uaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0NWb3RlUmVnaXN0cmF0aW9uRGVsZWdhdGlvbhIWCg52b3RpbmdfcHVycG9zZRgHIAEoBBIXCg9wYXltZW50X2FkZHJlc3MYCCABKAkikQEKFkNhcmRhbm9UeEF1eGlsaWFyeURhdGESaQodY3ZvdGVfcmVnaXN0cmF0aW9uX3BhcmFtZXRlcnMYASABKAsyQi5ody50cmV6b3IubWVzc2FnZXMuY2FyZGFuby5DYXJkYW5vQ1ZvdGVSZWdpc3RyYXRpb25QYXJhbWV0ZXJzVHlwZRIMCgRoYXNoGAIgASgMIisKDUNhcmRhbm9UeE1pbnQSGgoSYXNzZXRfZ3JvdXBzX2NvdW50GAEgAigNIkEKGENhcmRhbm9UeENvbGxhdGVyYWxJbnB1dBIRCglwcmV2X2hhc2gYASACKAwSEgoKcHJldl9pbmRleBgCIAIoDSI9ChdDYXJkYW5vVHhSZXF1aXJlZFNpZ25lchIQCghrZXlfaGFzaBgBIAEoDBIQCghrZXlfcGF0aBgCIAMoDSJAChdDYXJkYW5vVHhSZWZlcmVuY2VJbnB1dBIRCglwcmV2X2hhc2gYASACKAwSEgoKcHJldl9pbmRleBgCIAIoDSISChBDYXJkYW5vVHhJdGVtQWNrIrUBCiBDYXJkYW5vVHhBdXhpbGlhcnlEYXRhU3VwcGxlbWVudBJOCgR0eXBlGAEgAigOMkAuaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub1R4QXV4aWxpYXJ5RGF0YVN1cHBsZW1lbnRUeXBlEhsKE2F1eGlsaWFyeV9kYXRhX2hhc2gYAiABKAwSJAocY3ZvdGVfcmVnaXN0cmF0aW9uX3NpZ25hdHVyZRgDIAEoDCInChdDYXJkYW5vVHhXaXRuZXNzUmVxdWVzdBIMCgRwYXRoGAEgAygNIpIBChhDYXJkYW5vVHhXaXRuZXNzUmVzcG9uc2USPgoEdHlwZRgBIAIoDjIwLmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9UeFdpdG5lc3NUeXBlEg8KB3B1Yl9rZXkYAiACKAwSEQoJc2lnbmF0dXJlGAMgAigMEhIKCmNoYWluX2NvZGUYBCABKAwiEgoQQ2FyZGFub1R4SG9zdEFjayIkChFDYXJkYW5vVHhCb2R5SGFzaBIPCgd0eF9oYXNoGAEgAigMIhcKFUNhcmRhbm9TaWduVHhGaW5pc2hlZCKuAgoWQ2FyZGFub1NpZ25NZXNzYWdlSW5pdBIWCg5wcm90b2NvbF9tYWdpYxgBIAEoDRISCgpuZXR3b3JrX2lkGAIgASgNEhQKDHNpZ25pbmdfcGF0aBgDIAMoDRIUCgxwYXlsb2FkX3NpemUYBCACKA0SGgoScHJlZmVyX2hleF9kaXNwbGF5GAUgAigIElQKEmFkZHJlc3NfcGFyYW1ldGVycxgGIAEoCzI4Lmh3LnRyZXpvci5tZXNzYWdlcy5jYXJkYW5vLkNhcmRhbm9BZGRyZXNzUGFyYW1ldGVyc1R5cGUSSgoPZGVyaXZhdGlvbl90eXBlGAcgAigOMjEuaHcudHJlem9yLm1lc3NhZ2VzLmNhcmRhbm8uQ2FyZGFub0Rlcml2YXRpb25UeXBlIjsKGUNhcmRhbm9NZXNzYWdlRGF0YVJlcXVlc3QSDgoGbGVuZ3RoGAEgAigNEg4KBm9mZnNldBgCIAIoDSIqChpDYXJkYW5vTWVzc2FnZURhdGFSZXNwb25zZRIMCgRkYXRhGAEgAigMIk4KF0NhcmRhbm9NZXNzYWdlU2lnbmF0dXJlEhEKCXNpZ25hdHVyZRgBIAIoDBIPCgdhZGRyZXNzGAIgAigMEg8KB3B1Yl9rZXkYAyACKAwqQgoVQ2FyZGFub0Rlcml2YXRpb25UeXBlEgoKBkxFREdFUhAAEgoKBklDQVJVUxABEhEKDUlDQVJVU19UUkVaT1IQAirSAQoSQ2FyZGFub0FkZHJlc3NUeXBlEggKBEJBU0UQABITCg9CQVNFX1NDUklQVF9LRVkQARITCg9CQVNFX0tFWV9TQ1JJUFQQAhIWChJCQVNFX1NDUklQVF9TQ1JJUFQQAxILCgdQT0lOVEVSEAQSEgoOUE9JTlRFUl9TQ1JJUFQQBRIOCgpFTlRFUlBSSVNFEAYSFQoRRU5URVJQUklTRV9TQ1JJUFQQBxIJCgVCWVJPThAIEgoKBlJFV0FSRBAOEhEKDVJFV0FSRF9TQ1JJUFQQDypvChdDYXJkYW5vTmF0aXZlU2NyaXB0VHlwZRILCgdQVUJfS0VZEAASBwoDQUxMEAESBwoDQU5ZEAISCgoGTl9PRl9LEAMSEgoOSU5WQUxJRF9CRUZPUkUQBBIVChFJTlZBTElEX0hFUkVBRlRFUhAFKksKJENhcmRhbm9OYXRpdmVTY3JpcHRIYXNoRGlzcGxheUZvcm1hdBIICgRISURFEAASCgoGQkVDSDMyEAESDQoJUE9MSUNZX0lEEAIqRwoiQ2FyZGFub1R4T3V0cHV0U2VyaWFsaXphdGlvbkZvcm1hdBIQCgxBUlJBWV9MRUdBQ1kQABIPCgtNQVBfQkFCQkFHRRABKtIBChZDYXJkYW5vQ2VydGlmaWNhdGVUeXBlEhYKElNUQUtFX1JFR0lTVFJBVElPThAAEhgKFFNUQUtFX0RFUkVHSVNUUkFUSU9OEAESFAoQU1RBS0VfREVMRUdBVElPThACEhsKF1NUQUtFX1BPT0xfUkVHSVNUUkFUSU9OEAMSHQoZU1RBS0VfUkVHSVNUUkFUSU9OX0NPTldBWRAHEh8KG1NUQUtFX0RFUkVHSVNUUkFUSU9OX0NPTldBWRAIEhMKD1ZPVEVfREVMRUdBVElPThAJKlAKD0NhcmRhbm9EUmVwVHlwZRIMCghLRVlfSEFTSBAAEg8KC1NDUklQVF9IQVNIEAESCwoHQUJTVEFJThACEhEKDU5PX0NPTkZJREVOQ0UQAypYChRDYXJkYW5vUG9vbFJlbGF5VHlwZRISCg5TSU5HTEVfSE9TVF9JUBAAEhQKEFNJTkdMRV9IT1NUX05BTUUQARIWChJNVUxUSVBMRV9IT1NUX05BTUUQAipSCiRDYXJkYW5vVHhBdXhpbGlhcnlEYXRhU3VwcGxlbWVudFR5cGUSCAoETk9ORRAAEiAKHENWT1RFX1JFR0lTVFJBVElPTl9TSUdOQVRVUkUQASo2Ch5DYXJkYW5vQ1ZvdGVSZWdpc3RyYXRpb25Gb3JtYXQSCQoFQ0lQMTUQABIJCgVDSVAzNhABKoIBChRDYXJkYW5vVHhTaWduaW5nTW9kZRIYChRPUkRJTkFSWV9UUkFOU0FDVElPThAAEh4KGlBPT0xfUkVHSVNUUkFUSU9OX0FTX09XTkVSEAESGAoUTVVMVElTSUdfVFJBTlNBQ1RJT04QAhIWChJQTFVUVVNfVFJBTlNBQ1RJT04QAyo+ChRDYXJkYW5vVHhXaXRuZXNzVHlwZRIRCg1CWVJPTl9XSVRORVNTEAASEwoPU0hFTExFWV9XSVRORVNTEAFCOwojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCFFRyZXpvck1lc3NhZ2VDYXJkYW5v',\n [file_messages_common],\n);\nexport const CardanoBlockchainPointerTypeSchema = messageDesc(file_messages_cardano, 0);\nexport const CardanoNativeScriptSchema = messageDesc(file_messages_cardano, 1);\nexport const CardanoGetNativeScriptHashSchema = messageDesc(file_messages_cardano, 2);\nexport const CardanoNativeScriptHashSchema = messageDesc(file_messages_cardano, 3);\nexport const CardanoAddressParametersTypeSchema = messageDesc(file_messages_cardano, 4);\nexport const CardanoGetAddressSchema = messageDesc(file_messages_cardano, 5);\nexport const CardanoAddressSchema = messageDesc(file_messages_cardano, 6);\nexport const CardanoGetPublicKeySchema = messageDesc(file_messages_cardano, 7);\nexport const CardanoPublicKeySchema = messageDesc(file_messages_cardano, 8);\nexport const CardanoSignTxInitSchema = messageDesc(file_messages_cardano, 9);\nexport const CardanoTxInputSchema = messageDesc(file_messages_cardano, 10);\nexport const CardanoTxOutputSchema = messageDesc(file_messages_cardano, 11);\nexport const CardanoAssetGroupSchema = messageDesc(file_messages_cardano, 12);\nexport const CardanoTokenSchema = messageDesc(file_messages_cardano, 13);\nexport const CardanoTxInlineDatumChunkSchema = messageDesc(file_messages_cardano, 14);\nexport const CardanoTxReferenceScriptChunkSchema = messageDesc(file_messages_cardano, 15);\nexport const CardanoPoolOwnerSchema = messageDesc(file_messages_cardano, 16);\nexport const CardanoPoolRelayParametersSchema = messageDesc(file_messages_cardano, 17);\nexport const CardanoPoolMetadataTypeSchema = messageDesc(file_messages_cardano, 18);\nexport const CardanoPoolParametersTypeSchema = messageDesc(file_messages_cardano, 19);\nexport const CardanoDRepSchema = messageDesc(file_messages_cardano, 20);\nexport const CardanoTxCertificateSchema = messageDesc(file_messages_cardano, 21);\nexport const CardanoTxWithdrawalSchema = messageDesc(file_messages_cardano, 22);\nexport const CardanoCVoteRegistrationDelegationSchema = messageDesc(file_messages_cardano, 23);\nexport const CardanoCVoteRegistrationParametersTypeSchema = messageDesc(file_messages_cardano, 24);\nexport const CardanoTxAuxiliaryDataSchema = messageDesc(file_messages_cardano, 25);\nexport const CardanoTxMintSchema = messageDesc(file_messages_cardano, 26);\nexport const CardanoTxCollateralInputSchema = messageDesc(file_messages_cardano, 27);\nexport const CardanoTxRequiredSignerSchema = messageDesc(file_messages_cardano, 28);\nexport const CardanoTxReferenceInputSchema = messageDesc(file_messages_cardano, 29);\nexport const CardanoTxItemAckSchema = messageDesc(file_messages_cardano, 30);\nexport const CardanoTxAuxiliaryDataSupplementSchema = messageDesc(file_messages_cardano, 31);\nexport const CardanoTxWitnessRequestSchema = messageDesc(file_messages_cardano, 32);\nexport const CardanoTxWitnessResponseSchema = messageDesc(file_messages_cardano, 33);\nexport const CardanoTxHostAckSchema = messageDesc(file_messages_cardano, 34);\nexport const CardanoTxBodyHashSchema = messageDesc(file_messages_cardano, 35);\nexport const CardanoSignTxFinishedSchema = messageDesc(file_messages_cardano, 36);\nexport const CardanoSignMessageInitSchema = messageDesc(file_messages_cardano, 37);\nexport const CardanoMessageDataRequestSchema = messageDesc(file_messages_cardano, 38);\nexport const CardanoMessageDataResponseSchema = messageDesc(file_messages_cardano, 39);\nexport const CardanoMessageSignatureSchema = messageDesc(file_messages_cardano, 40);\nexport const CardanoDerivationTypeSchema = enumDesc(file_messages_cardano, 0);\nexport const CardanoDerivationType = tsEnum(CardanoDerivationTypeSchema);\nexport const CardanoAddressTypeSchema = enumDesc(file_messages_cardano, 1);\nexport const CardanoAddressType = tsEnum(CardanoAddressTypeSchema);\nexport const CardanoNativeScriptTypeSchema = enumDesc(file_messages_cardano, 2);\nexport const CardanoNativeScriptType = tsEnum(CardanoNativeScriptTypeSchema);\nexport const CardanoNativeScriptHashDisplayFormatSchema = enumDesc(file_messages_cardano, 3);\nexport const CardanoNativeScriptHashDisplayFormat = tsEnum(\n CardanoNativeScriptHashDisplayFormatSchema,\n);\nexport const CardanoTxOutputSerializationFormatSchema = enumDesc(file_messages_cardano, 4);\nexport const CardanoTxOutputSerializationFormat = tsEnum(CardanoTxOutputSerializationFormatSchema);\nexport const CardanoCertificateTypeSchema = enumDesc(file_messages_cardano, 5);\nexport const CardanoCertificateType = tsEnum(CardanoCertificateTypeSchema);\nexport const CardanoDRepTypeSchema = enumDesc(file_messages_cardano, 6);\nexport const CardanoDRepType = tsEnum(CardanoDRepTypeSchema);\nexport const CardanoPoolRelayTypeSchema = enumDesc(file_messages_cardano, 7);\nexport const CardanoPoolRelayType = tsEnum(CardanoPoolRelayTypeSchema);\nexport const CardanoTxAuxiliaryDataSupplementTypeSchema = enumDesc(file_messages_cardano, 8);\nexport const CardanoTxAuxiliaryDataSupplementType = tsEnum(\n CardanoTxAuxiliaryDataSupplementTypeSchema,\n);\nexport const CardanoCVoteRegistrationFormatSchema = enumDesc(file_messages_cardano, 9);\nexport const CardanoCVoteRegistrationFormat = tsEnum(CardanoCVoteRegistrationFormatSchema);\nexport const CardanoTxSigningModeSchema = enumDesc(file_messages_cardano, 10);\nexport const CardanoTxSigningMode = tsEnum(CardanoTxSigningModeSchema);\nexport const CardanoTxWitnessTypeSchema = enumDesc(file_messages_cardano, 11);\nexport const CardanoTxWitnessType = tsEnum(CardanoTxWitnessTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-crypto.proto (package hw.trezor.messages.crypto, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nimport { file_options } from './options_pb';\nexport const file_messages_crypto = fileDesc(\n 'ChVtZXNzYWdlcy1jcnlwdG8ucHJvdG8SGWh3LnRyZXpvci5tZXNzYWdlcy5jcnlwdG8ijAEKDkNpcGhlcktleVZhbHVlEhEKCWFkZHJlc3NfbhgBIAMoDRILCgNrZXkYAiACKAkSDQoFdmFsdWUYAyACKAwSDwoHZW5jcnlwdBgEIAEoCBIWCg5hc2tfb25fZW5jcnlwdBgFIAEoCBIWCg5hc2tfb25fZGVjcnlwdBgGIAEoCBIKCgJpdhgHIAEoDCIhChBDaXBoZXJlZEtleVZhbHVlEg0KBXZhbHVlGAEgAigMImcKDElkZW50aXR5VHlwZRINCgVwcm90bxgBIAEoCRIMCgR1c2VyGAIgASgJEgwKBGhvc3QYAyABKAkSDAoEcG9ydBgEIAEoCRIMCgRwYXRoGAUgASgJEhAKBWluZGV4GAYgASgNOgEwIpsBCgxTaWduSWRlbnRpdHkSOQoIaWRlbnRpdHkYASACKAsyJy5ody50cmV6b3IubWVzc2FnZXMuY3J5cHRvLklkZW50aXR5VHlwZRIaChBjaGFsbGVuZ2VfaGlkZGVuGAIgASgMOgASGgoQY2hhbGxlbmdlX3Zpc3VhbBgDIAEoCToAEhgKEGVjZHNhX2N1cnZlX25hbWUYBCABKAkiSAoOU2lnbmVkSWRlbnRpdHkSDwoHYWRkcmVzcxgBIAEoCRISCgpwdWJsaWNfa2V5GAIgAigMEhEKCXNpZ25hdHVyZRgDIAIoDCKBAQoRR2V0RUNESFNlc3Npb25LZXkSOQoIaWRlbnRpdHkYASACKAsyJy5ody50cmV6b3IubWVzc2FnZXMuY3J5cHRvLklkZW50aXR5VHlwZRIXCg9wZWVyX3B1YmxpY19rZXkYAiACKAwSGAoQZWNkc2FfY3VydmVfbmFtZRgDIAEoCSI5Cg5FQ0RIU2Vzc2lvbktleRITCgtzZXNzaW9uX2tleRgBIAIoDBISCgpwdWJsaWNfa2V5GAIgASgMIlUKE1BheW1lbnROb3RpZmljYXRpb24SPgoLcGF5bWVudF9yZXEYASABKAsyKS5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLlBheW1lbnRSZXF1ZXN0Qj4KI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhNUcmV6b3JNZXNzYWdlQ3J5cHRvgKYdAQ',\n [file_messages_common, file_options],\n);\nexport const CipherKeyValueSchema = messageDesc(file_messages_crypto, 0);\nexport const CipheredKeyValueSchema = messageDesc(file_messages_crypto, 1);\nexport const IdentityTypeSchema = messageDesc(file_messages_crypto, 2);\nexport const SignIdentitySchema = messageDesc(file_messages_crypto, 3);\nexport const SignedIdentitySchema = messageDesc(file_messages_crypto, 4);\nexport const GetECDHSessionKeySchema = messageDesc(file_messages_crypto, 5);\nexport const ECDHSessionKeySchema = messageDesc(file_messages_crypto, 6);\nexport const PaymentNotificationSchema = messageDesc(file_messages_crypto, 7);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-debug.proto (package hw.trezor.messages.debug, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nimport { file_messages_management } from './messages-management_pb';\nimport { file_options } from './options_pb';\nexport const file_messages_debug = fileDesc(\n 'ChRtZXNzYWdlcy1kZWJ1Zy5wcm90bxIYaHcudHJlem9yLm1lc3NhZ2VzLmRlYnVnIqIFChFEZWJ1Z0xpbmtEZWNpc2lvbhJHCgZidXR0b24YASABKA4yNy5ody50cmV6b3IubWVzc2FnZXMuZGVidWcuRGVidWdMaW5rRGVjaXNpb24uRGVidWdCdXR0b24STgoFc3dpcGUYAiABKA4yPy5ody50cmV6b3IubWVzc2FnZXMuZGVidWcuRGVidWdMaW5rRGVjaXNpb24uRGVidWdTd2lwZURpcmVjdGlvbhINCgVpbnB1dBgDIAEoCRIJCgF4GAQgASgNEgkKAXkYBSABKA0SEAoEd2FpdBgGIAEoCEICGAESDwoHaG9sZF9tcxgHIAEoDRJYCg9waHlzaWNhbF9idXR0b24YCCABKA4yPy5ody50cmV6b3IubWVzc2FnZXMuZGVidWcuRGVidWdMaW5rRGVjaXNpb24uRGVidWdQaHlzaWNhbEJ1dHRvbhJZChB0b3VjaF9ldmVudF90eXBlGAkgASgOMj8uaHcudHJlem9yLm1lc3NhZ2VzLmRlYnVnLkRlYnVnTGlua0RlY2lzaW9uLkRlYnVnVG91Y2hFdmVudFR5cGUiPAoTRGVidWdTd2lwZURpcmVjdGlvbhIGCgJVUBAAEggKBERPV04QARIICgRMRUZUEAISCQoFUklHSFQQAyIoCgtEZWJ1Z0J1dHRvbhIGCgJOTxAAEgcKA1lFUxABEggKBElORk8QAiJCChNEZWJ1Z1BoeXNpY2FsQnV0dG9uEgwKCExFRlRfQlROEAASDgoKTUlERExFX0JUThABEg0KCVJJR0hUX0JUThACIksKE0RlYnVnVG91Y2hFdmVudFR5cGUSFAoQVE9VQ0hfRlVMTF9DTElDSxAAEg8KC1RPVUNIX1NUQVJUEAESDQoJVE9VQ0hfRU5EEAIiJQoPRGVidWdMaW5rTGF5b3V0Eg4KBnRva2VucxgBIAMoCToCGAEiJgoVRGVidWdMaW5rUmVzZWVkUmFuZG9tEg0KBXZhbHVlGAEgASgNIksKFURlYnVnTGlua1JlY29yZFNjcmVlbhIYChB0YXJnZXRfZGlyZWN0b3J5GAEgASgJEhgKDXJlZnJlc2hfaW5kZXgYAiABKA06ATAijQIKEURlYnVnTGlua0dldFN0YXRlEhoKDndhaXRfd29yZF9saXN0GAEgASgIQgIYARIZCg13YWl0X3dvcmRfcG9zGAIgASgIQgIYARJZCgt3YWl0X2xheW91dBgDIAEoDjI5Lmh3LnRyZXpvci5tZXNzYWdlcy5kZWJ1Zy5EZWJ1Z0xpbmtHZXRTdGF0ZS5EZWJ1Z1dhaXRUeXBlOglJTU1FRElBVEUSIQoScmV0dXJuX2VtcHR5X3N0YXRlGAQgASgIOgVmYWxzZSJDCg1EZWJ1Z1dhaXRUeXBlEg0KCUlNTUVESUFURRAAEg8KC05FWFRfTEFZT1VUEAESEgoOQ1VSUkVOVF9MQVlPVVQQAiL2AgoORGVidWdMaW5rU3RhdGUSDgoGbGF5b3V0GAEgASgMEgsKA3BpbhgCIAEoCRIOCgZtYXRyaXgYAyABKAkSFwoPbW5lbW9uaWNfc2VjcmV0GAQgASgMEjMKBG5vZGUYBSABKAsyJS5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLkhETm9kZVR5cGUSHQoVcGFzc3BocmFzZV9wcm90ZWN0aW9uGAYgASgIEhIKCnJlc2V0X3dvcmQYByABKAkSFQoNcmVzZXRfZW50cm9weRgIIAEoDBIaChJyZWNvdmVyeV9mYWtlX3dvcmQYCSABKAkSGQoRcmVjb3Zlcnlfd29yZF9wb3MYCiABKA0SFgoOcmVzZXRfd29yZF9wb3MYCyABKA0SQAoNbW5lbW9uaWNfdHlwZRgMIAEoDjIpLmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkJhY2t1cFR5cGUSDgoGdG9rZW5zGA0gAygJIl4KF0RlYnVnTGlua0dldFBhaXJpbmdJbmZvEhIKCmNoYW5uZWxfaWQYASABKAwSFgoOaGFuZHNoYWtlX2hhc2gYAiABKAwSFwoPbmZjX3NlY3JldF9ob3N0GAMgASgMIowBChREZWJ1Z0xpbmtQYWlyaW5nSW5mbxISCgpjaGFubmVsX2lkGAEgASgMEhYKDmhhbmRzaGFrZV9oYXNoGAIgASgMEhcKD2NvZGVfZW50cnlfY29kZRgDIAEoDRIUCgxjb2RlX3FyX2NvZGUYBCABKAwSGQoRbmZjX3NlY3JldF90cmV6b3IYBSABKAwiDwoNRGVidWdMaW5rU3RvcCI7CgxEZWJ1Z0xpbmtMb2cSDQoFbGV2ZWwYASABKA0SDgoGYnVja2V0GAIgASgJEgwKBHRleHQYAyABKAkiNgoTRGVidWdMaW5rTWVtb3J5UmVhZBIPCgdhZGRyZXNzGAEgASgNEg4KBmxlbmd0aBgCIAEoDSIhCg9EZWJ1Z0xpbmtNZW1vcnkSDgoGbWVtb3J5GAEgASgMIkYKFERlYnVnTGlua01lbW9yeVdyaXRlEg8KB2FkZHJlc3MYASABKA0SDgoGbWVtb3J5GAIgASgMEg0KBWZsYXNoGAMgASgIIiUKE0RlYnVnTGlua0ZsYXNoRXJhc2USDgoGc2VjdG9yGAEgASgNIiYKFERlYnVnTGlua0VyYXNlU2RDYXJkEg4KBmZvcm1hdBgBIAEoCCLDAQoYRGVidWdMaW5rU2V0QmF0dGVyeVN0YXRlEgsKA3NvYxgBIAEoDRIVCg11c2JfY29ubmVjdGVkGAIgASgIEhoKEndpcmVsZXNzX2Nvbm5lY3RlZBgDIAEoCBIVCg1udGNfY29ubmVjdGVkGAQgASgIEhgKEGNoYXJnaW5nX2xpbWl0ZWQYBSABKAgSGwoTdGVtcF9jb250cm9sX2FjdGl2ZRgGIAEoCBIZChFiYXR0ZXJ5X2Nvbm5lY3RlZBgHIAEoCCIpChREZWJ1Z0xpbmtXYXRjaExheW91dBINCgV3YXRjaBgBIAEoCDoCGAEiHwoZRGVidWdMaW5rUmVzZXREZWJ1Z0V2ZW50czoCGAEiGgoYRGVidWdMaW5rT3B0aWdhU2V0U2VjTWF4IhQKEkRlYnVnTGlua0dldEdjSW5mbyKTAQoPRGVidWdMaW5rR2NJbmZvEkwKBWl0ZW1zGAEgAygLMj0uaHcudHJlem9yLm1lc3NhZ2VzLmRlYnVnLkRlYnVnTGlua0djSW5mby5EZWJ1Z0xpbmtHY0luZm9JdGVtGjIKE0RlYnVnTGlua0djSW5mb0l0ZW0SDAoEbmFtZRgBIAIoCRINCgV2YWx1ZRgCIAIoBCInChVEZWJ1Z0xpbmtTZXRMb2dGaWx0ZXISDgoGZmlsdGVyGAEgASgJIhgKFkRlYnVnTGlua040VzFDb25uZWN0ZWQiMAoSRGVidWdMaW5rTjRXMVdyaXRlEgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCIgChFEZWJ1Z0xpbmtONFcxUmVhZBILCgNrZXkYASABKAkiJgoVRGVidWdMaW5rTjRXMVJlc3BvbnNlEg0KBXZhbHVlGAEgASgMQj0KI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhJUcmV6b3JNZXNzYWdlRGVidWeAph0B',\n [file_messages_common, file_messages_management, file_options],\n);\nexport const DebugLinkDecisionSchema = messageDesc(file_messages_debug, 0);\nexport const DebugLinkDecision_DebugSwipeDirectionSchema = enumDesc(file_messages_debug, 0, 0);\nexport const DebugLinkDecision_DebugSwipeDirection = tsEnum(\n DebugLinkDecision_DebugSwipeDirectionSchema,\n);\nexport const DebugLinkDecision_DebugButtonSchema = enumDesc(file_messages_debug, 0, 1);\nexport const DebugLinkDecision_DebugButton = tsEnum(DebugLinkDecision_DebugButtonSchema);\nexport const DebugLinkDecision_DebugPhysicalButtonSchema = enumDesc(file_messages_debug, 0, 2);\nexport const DebugLinkDecision_DebugPhysicalButton = tsEnum(\n DebugLinkDecision_DebugPhysicalButtonSchema,\n);\nexport const DebugLinkDecision_DebugTouchEventTypeSchema = enumDesc(file_messages_debug, 0, 3);\nexport const DebugLinkDecision_DebugTouchEventType = tsEnum(\n DebugLinkDecision_DebugTouchEventTypeSchema,\n);\nexport const DebugLinkLayoutSchema = messageDesc(file_messages_debug, 1);\nexport const DebugLinkReseedRandomSchema = messageDesc(file_messages_debug, 2);\nexport const DebugLinkRecordScreenSchema = messageDesc(file_messages_debug, 3);\nexport const DebugLinkGetStateSchema = messageDesc(file_messages_debug, 4);\nexport const DebugLinkGetState_DebugWaitTypeSchema = enumDesc(file_messages_debug, 4, 0);\nexport const DebugLinkGetState_DebugWaitType = tsEnum(DebugLinkGetState_DebugWaitTypeSchema);\nexport const DebugLinkStateSchema = messageDesc(file_messages_debug, 5);\nexport const DebugLinkGetPairingInfoSchema = messageDesc(file_messages_debug, 6);\nexport const DebugLinkPairingInfoSchema = messageDesc(file_messages_debug, 7);\nexport const DebugLinkStopSchema = messageDesc(file_messages_debug, 8);\nexport const DebugLinkLogSchema = messageDesc(file_messages_debug, 9);\nexport const DebugLinkMemoryReadSchema = messageDesc(file_messages_debug, 10);\nexport const DebugLinkMemorySchema = messageDesc(file_messages_debug, 11);\nexport const DebugLinkMemoryWriteSchema = messageDesc(file_messages_debug, 12);\nexport const DebugLinkFlashEraseSchema = messageDesc(file_messages_debug, 13);\nexport const DebugLinkEraseSdCardSchema = messageDesc(file_messages_debug, 14);\nexport const DebugLinkSetBatteryStateSchema = messageDesc(file_messages_debug, 15);\nexport const DebugLinkWatchLayoutSchema = messageDesc(file_messages_debug, 16);\nexport const DebugLinkResetDebugEventsSchema = messageDesc(file_messages_debug, 17);\nexport const DebugLinkOptigaSetSecMaxSchema = messageDesc(file_messages_debug, 18);\nexport const DebugLinkGetGcInfoSchema = messageDesc(file_messages_debug, 19);\nexport const DebugLinkGcInfoSchema = messageDesc(file_messages_debug, 20);\nexport const DebugLinkGcInfo_DebugLinkGcInfoItemSchema = messageDesc(file_messages_debug, 20, 0);\nexport const DebugLinkSetLogFilterSchema = messageDesc(file_messages_debug, 21);\nexport const DebugLinkN4W1ConnectedSchema = messageDesc(file_messages_debug, 22);\nexport const DebugLinkN4W1WriteSchema = messageDesc(file_messages_debug, 23);\nexport const DebugLinkN4W1ReadSchema = messageDesc(file_messages_debug, 24);\nexport const DebugLinkN4W1ResponseSchema = messageDesc(file_messages_debug, 25);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-management.proto (package hw.trezor.messages.management, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_management = fileDesc(\n 'ChltZXNzYWdlcy1tYW5hZ2VtZW50LnByb3RvEh1ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudCJWCgpJbml0aWFsaXplEhIKCnNlc3Npb25faWQYASABKAwSHAoQX3NraXBfcGFzc3BocmFzZRgCIAEoCEICGAESFgoOZGVyaXZlX2NhcmRhbm8YAyABKAgiDQoLR2V0RmVhdHVyZXMiuxQKCEZlYXR1cmVzEg4KBnZlbmRvchgBIAEoCRIVCg1tYWpvcl92ZXJzaW9uGAIgAigNEhUKDW1pbm9yX3ZlcnNpb24YAyACKA0SFQoNcGF0Y2hfdmVyc2lvbhgEIAIoDRIVCg1idWlsZF92ZXJzaW9uGD0gASgNEhcKD2Jvb3Rsb2FkZXJfbW9kZRgFIAEoCBIRCglkZXZpY2VfaWQYBiABKAkSFgoOcGluX3Byb3RlY3Rpb24YByABKAgSHQoVcGFzc3BocmFzZV9wcm90ZWN0aW9uGAggASgIEhAKCGxhbmd1YWdlGAkgASgJEg0KBWxhYmVsGAogASgJEhMKC2luaXRpYWxpemVkGAwgASgIEhAKCHJldmlzaW9uGA0gASgMEhcKD2Jvb3Rsb2FkZXJfaGFzaBgOIAEoDBIQCghpbXBvcnRlZBgPIAEoCBIQCgh1bmxvY2tlZBgQIAEoCBIeChJfcGFzc3BocmFzZV9jYWNoZWQYESABKAhCAhgBEhgKEGZpcm13YXJlX3ByZXNlbnQYEiABKAgSVwoTYmFja3VwX2F2YWlsYWJpbGl0eRgTIAEoDjI6Lmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkZlYXR1cmVzLkJhY2t1cEF2YWlsYWJpbGl0eRINCgVmbGFncxgUIAEoDRINCgVtb2RlbBgVIAEoCRIQCghmd19tYWpvchgWIAEoDRIQCghmd19taW5vchgXIAEoDRIQCghmd19wYXRjaBgYIAEoDRIQCghmd19idWlsZBg+IAEoDRIRCglmd192ZW5kb3IYGSABKAkSGQoRdW5maW5pc2hlZF9iYWNrdXAYGyABKAgSEQoJbm9fYmFja3VwGBwgASgIEk8KD3JlY292ZXJ5X3N0YXR1cxgdIAEoDjI2Lmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkZlYXR1cmVzLlJlY292ZXJ5U3RhdHVzEkgKDGNhcGFiaWxpdGllcxgeIAMoDjIyLmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkZlYXR1cmVzLkNhcGFiaWxpdHkSPgoLYmFja3VwX3R5cGUYHyABKA4yKS5ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudC5CYWNrdXBUeXBlEhcKD3NkX2NhcmRfcHJlc2VudBggIAEoCBIVCg1zZF9wcm90ZWN0aW9uGCEgASgIEhwKFHdpcGVfY29kZV9wcm90ZWN0aW9uGCIgASgIEhIKCnNlc3Npb25faWQYIyABKAwSIwobcGFzc3BocmFzZV9hbHdheXNfb25fZGV2aWNlGCQgASgIEkYKDXNhZmV0eV9jaGVja3MYJSABKA4yLy5ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudC5TYWZldHlDaGVja0xldmVsEhoKEmF1dG9fbG9ja19kZWxheV9tcxgmIAEoDRJIChBkaXNwbGF5X3JvdGF0aW9uGCcgASgOMi4uaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuRGlzcGxheVJvdGF0aW9uEh0KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgoIAEoCBIMCgRidXN5GCkgASgIEkoKEWhvbWVzY3JlZW5fZm9ybWF0GCogASgOMi8uaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuSG9tZXNjcmVlbkZvcm1hdBIhChloaWRlX3Bhc3NwaHJhc2VfZnJvbV9ob3N0GCsgASgIEhYKDmludGVybmFsX21vZGVsGCwgASgJEhIKCnVuaXRfY29sb3IYLSABKA0SFAoMdW5pdF9idGNvbmx5GC4gASgIEhgKEGhvbWVzY3JlZW5fd2lkdGgYLyABKA0SGQoRaG9tZXNjcmVlbl9oZWlnaHQYMCABKA0SGQoRYm9vdGxvYWRlcl9sb2NrZWQYMSABKAgSJgoYbGFuZ3VhZ2VfdmVyc2lvbl9tYXRjaGVzGDIgASgIOgR0cnVlEhYKDnVuaXRfcGFja2FnaW5nGDMgASgNEhcKD2hhcHRpY19mZWVkYmFjaxg0IAEoCBJCCg1yZWNvdmVyeV90eXBlGDUgASgOMisuaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuUmVjb3ZlcnlUeXBlEhIKCm9wdGlnYV9zZWMYNiABKA0SCwoDc29jGDcgASgNEhoKEmZpcm13YXJlX2NvcnJ1cHRlZBg4IAEoCBIiChphdXRvX2xvY2tfZGVsYXlfYmF0dGVyeV9tcxg5IAEoDRILCgNsZWQYOiABKAgSFQoNdXNiX2Nvbm5lY3RlZBg7IAEoCBIaChJ3aXJlbGVzc19jb25uZWN0ZWQYPCABKAgiQwoSQmFja3VwQXZhaWxhYmlsaXR5EhAKDE5vdEF2YWlsYWJsZRAAEgwKCFJlcXVpcmVkEAESDQoJQXZhaWxhYmxlEAIiNwoOUmVjb3ZlcnlTdGF0dXMSCwoHTm90aGluZxAAEgwKCFJlY292ZXJ5EAESCgoGQmFja3VwEAIipgUKCkNhcGFiaWxpdHkSHAoSQ2FwYWJpbGl0eV9CaXRjb2luEAEaBICmHQESGwoXQ2FwYWJpbGl0eV9CaXRjb2luX2xpa2UQAhIWChJDYXBhYmlsaXR5X0JpbmFuY2UQAxIWChJDYXBhYmlsaXR5X0NhcmRhbm8QBBIbChFDYXBhYmlsaXR5X0NyeXB0bxAFGgSAph0BEhIKDkNhcGFiaWxpdHlfRU9TEAYSFwoTQ2FwYWJpbGl0eV9FdGhlcmV1bRAHEhcKD0NhcGFiaWxpdHlfTGlzaxAIGgIIARIVChFDYXBhYmlsaXR5X01vbmVybxAJEhIKDkNhcGFiaWxpdHlfTkVNEAoSFQoRQ2FwYWJpbGl0eV9SaXBwbGUQCxIWChJDYXBhYmlsaXR5X1N0ZWxsYXIQDBIUChBDYXBhYmlsaXR5X1Rlem9zEA0SEgoOQ2FwYWJpbGl0eV9VMkYQDhIbChFDYXBhYmlsaXR5X1NoYW1pchAPGgSAph0BEiEKF0NhcGFiaWxpdHlfU2hhbWlyR3JvdXBzEBAaBICmHQESJAoaQ2FwYWJpbGl0eV9QYXNzcGhyYXNlRW50cnkQERoEgKYdARIVChFDYXBhYmlsaXR5X1NvbGFuYRASEiEKF0NhcGFiaWxpdHlfVHJhbnNsYXRpb25zEBMaBICmHQESHwoVQ2FwYWJpbGl0eV9CcmlnaHRuZXNzEBQaBICmHQESGwoRQ2FwYWJpbGl0eV9IYXB0aWMQFRoEgKYdARIYCg5DYXBhYmlsaXR5X0JMRRAWGgSAph0BEhgKDkNhcGFiaWxpdHlfTkZDEBcaBICmHQESEwoPQ2FwYWJpbGl0eV9Ucm9uEBgSGQoPQ2FwYWJpbGl0eV9ONFcxEBkaBICmHQEaBMjzGAEiDAoKTG9ja0RldmljZSIcCgdTZXRCdXN5EhEKCWV4cGlyeV9tcxgBIAEoDSIMCgpFbmRTZXNzaW9uIu0DCg1BcHBseVNldHRpbmdzEhQKCGxhbmd1YWdlGAEgASgJQgIYARINCgVsYWJlbBgCIAEoCRIWCg51c2VfcGFzc3BocmFzZRgDIAEoCBISCgpob21lc2NyZWVuGAQgASgMEh4KEl9wYXNzcGhyYXNlX3NvdXJjZRgFIAEoDUICGAESGgoSYXV0b19sb2NrX2RlbGF5X21zGAYgASgNEkgKEGRpc3BsYXlfcm90YXRpb24YByABKA4yLi5ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudC5EaXNwbGF5Um90YXRpb24SIwobcGFzc3BocmFzZV9hbHdheXNfb25fZGV2aWNlGAggASgIEkYKDXNhZmV0eV9jaGVja3MYCSABKA4yLy5ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudC5TYWZldHlDaGVja0xldmVsEh0KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgKIAEoCBIhChloaWRlX3Bhc3NwaHJhc2VfZnJvbV9ob3N0GAsgASgIEhcKD2hhcHRpY19mZWVkYmFjaxgNIAEoCBIZChFob21lc2NyZWVuX2xlbmd0aBgOIAEoDRIiChphdXRvX2xvY2tfZGVsYXlfYmF0dGVyeV9tcxgPIAEoDSI7Cg5DaGFuZ2VMYW5ndWFnZRITCgtkYXRhX2xlbmd0aBgBIAIoDRIUCgxzaG93X2Rpc3BsYXkYAiABKAgiPAoQRGF0YUNodW5rUmVxdWVzdBITCgtkYXRhX2xlbmd0aBgBIAIoDRITCgtkYXRhX29mZnNldBgCIAIoDSIiCgxEYXRhQ2h1bmtBY2sSEgoKZGF0YV9jaHVuaxgBIAIoDCIbCgpBcHBseUZsYWdzEg0KBWZsYWdzGAEgAigNIhsKCUNoYW5nZVBpbhIOCgZyZW1vdmUYASABKAgiIAoOQ2hhbmdlV2lwZUNvZGUSDgoGcmVtb3ZlGAEgASgIIp8BCglTZFByb3RlY3QSUgoJb3BlcmF0aW9uGAEgAigOMj8uaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuU2RQcm90ZWN0LlNkUHJvdGVjdE9wZXJhdGlvblR5cGUiPgoWU2RQcm90ZWN0T3BlcmF0aW9uVHlwZRILCgdESVNBQkxFEAASCgoGRU5BQkxFEAESCwoHUkVGUkVTSBACIjQKBFBpbmcSEQoHbWVzc2FnZRgBIAEoCToAEhkKEWJ1dHRvbl9wcm90ZWN0aW9uGAIgASgIIggKBkNhbmNlbCIaCgpHZXRFbnRyb3B5EgwKBHNpemUYASACKA0iGgoHRW50cm9weRIPCgdlbnRyb3B5GAEgAigMIiQKD0dldEZpcm13YXJlSGFzaBIRCgljaGFsbGVuZ2UYASABKAwiHAoMRmlybXdhcmVIYXNoEgwKBGhhc2gYASACKAwiJwoSQXV0aGVudGljYXRlRGV2aWNlEhEKCWNoYWxsZW5nZRgBIAIoDCKyAQoRQXV0aGVudGljaXR5UHJvb2YSGwoTb3B0aWdhX2NlcnRpZmljYXRlcxgBIAMoDBIYChBvcHRpZ2Ffc2lnbmF0dXJlGAIgAigMEhsKE3Ryb3BpY19jZXJ0aWZpY2F0ZXMYAyADKAwSGAoQdHJvcGljX3NpZ25hdHVyZRgEIAEoDBIYChBtY3VfY2VydGlmaWNhdGVzGAUgAygMEhUKDW1jdV9zaWduYXR1cmUYBiABKAwiDAoKV2lwZURldmljZSLgAQoKTG9hZERldmljZRIRCgltbmVtb25pY3MYASADKAkSCwoDcGluGAMgASgJEh0KFXBhc3NwaHJhc2VfcHJvdGVjdGlvbhgEIAEoCBIUCghsYW5ndWFnZRgFIAEoCUICGAESDQoFbGFiZWwYBiABKAkSFQoNc2tpcF9jaGVja3N1bRgHIAEoCBITCgt1MmZfY291bnRlchgIIAEoDRIUCgxuZWVkc19iYWNrdXAYCSABKAgSEQoJbm9fYmFja3VwGAogASgIEhkKEXVuZmluaXNoZWRfYmFja3VwGAsgASgIIu4CCgtSZXNldERldmljZRIVCghzdHJlbmd0aBgCIAEoDToDMjU2Eh0KFXBhc3NwaHJhc2VfcHJvdGVjdGlvbhgDIAEoCBIWCg5waW5fcHJvdGVjdGlvbhgEIAEoCBIUCghsYW5ndWFnZRgFIAEoCUICGAESDQoFbGFiZWwYBiABKAkSEwoLdTJmX2NvdW50ZXIYByABKA0SEwoLc2tpcF9iYWNrdXAYCCABKAgSEQoJbm9fYmFja3VwGAkgASgIEkUKC2JhY2t1cF90eXBlGAogASgOMikuaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuQmFja3VwVHlwZToFQmlwMzkSFQoNZW50cm9weV9jaGVjaxgLIAEoCBJLCg1iYWNrdXBfbWV0aG9kGAwgASgOMisuaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuQmFja3VwTWV0aG9kOgdEaXNwbGF5SgQIARACIvwBCgxCYWNrdXBEZXZpY2USFwoPZ3JvdXBfdGhyZXNob2xkGAEgASgNEkcKBmdyb3VwcxgCIAMoCzI3Lmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkJhY2t1cERldmljZS5TbGlwMzlHcm91cBJLCg1iYWNrdXBfbWV0aG9kGAMgASgOMisuaHcudHJlem9yLm1lc3NhZ2VzLm1hbmFnZW1lbnQuQmFja3VwTWV0aG9kOgdEaXNwbGF5Gj0KC1NsaXAzOUdyb3VwEhgKEG1lbWJlcl90aHJlc2hvbGQYASACKA0SFAoMbWVtYmVyX2NvdW50GAIgAigNIkIKDkVudHJvcHlSZXF1ZXN0EhoKEmVudHJvcHlfY29tbWl0bWVudBgBIAEoDBIUCgxwcmV2X2VudHJvcHkYAiABKAwiHQoKRW50cm9weUFjaxIPCgdlbnRyb3B5GAEgAigMIhMKEUVudHJvcHlDaGVja1JlYWR5Ii0KFEVudHJvcHlDaGVja0NvbnRpbnVlEhUKBmZpbmlzaBgBIAEoCDoFZmFsc2Ui4AMKDlJlY292ZXJ5RGV2aWNlEhIKCndvcmRfY291bnQYASABKA0SHQoVcGFzc3BocmFzZV9wcm90ZWN0aW9uGAIgASgIEhYKDnBpbl9wcm90ZWN0aW9uGAMgASgIEhQKCGxhbmd1YWdlGAQgASgJQgIYARINCgVsYWJlbBgFIAEoCRIYChBlbmZvcmNlX3dvcmRsaXN0GAYgASgIEl0KDGlucHV0X21ldGhvZBgIIAEoDjJHLmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LlJlY292ZXJ5RGV2aWNlLlJlY292ZXJ5RGV2aWNlSW5wdXRNZXRob2QSEwoLdTJmX2NvdW50ZXIYCSABKA0SSQoEdHlwZRgKIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LlJlY292ZXJ5VHlwZToOTm9ybWFsUmVjb3ZlcnkSQgoNYmFja3VwX21ldGhvZBgLIAEoDjIrLmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LkJhY2t1cE1ldGhvZCI7ChlSZWNvdmVyeURldmljZUlucHV0TWV0aG9kEhIKDlNjcmFtYmxlZFdvcmRzEAASCgoGTWF0cml4EAFKBAgHEAgivwEKC1dvcmRSZXF1ZXN0EkgKBHR5cGUYASACKA4yOi5ody50cmV6b3IubWVzc2FnZXMubWFuYWdlbWVudC5Xb3JkUmVxdWVzdC5Xb3JkUmVxdWVzdFR5cGUiZgoPV29yZFJlcXVlc3RUeXBlEhkKFVdvcmRSZXF1ZXN0VHlwZV9QbGFpbhAAEhsKF1dvcmRSZXF1ZXN0VHlwZV9NYXRyaXg5EAESGwoXV29yZFJlcXVlc3RUeXBlX01hdHJpeDYQAiIXCgdXb3JkQWNrEgwKBHdvcmQYASACKAkiJAoNU2V0VTJGQ291bnRlchITCgt1MmZfY291bnRlchgBIAIoDSITChFHZXROZXh0VTJGQ291bnRlciIlCg5OZXh0VTJGQ291bnRlchITCgt1MmZfY291bnRlchgBIAIoDSIRCg9Eb1ByZWF1dGhvcml6ZWQiFgoUUHJlYXV0aG9yaXplZFJlcXVlc3QiFQoTQ2FuY2VsQXV0aG9yaXphdGlvbiLOAQoSUmVib290VG9Cb290bG9hZGVyEmIKDGJvb3RfY29tbWFuZBgBIAEoDjI9Lmh3LnRyZXpvci5tZXNzYWdlcy5tYW5hZ2VtZW50LlJlYm9vdFRvQm9vdGxvYWRlci5Cb290Q29tbWFuZDoNU1RPUF9BTkRfV0FJVBIXCg9maXJtd2FyZV9oZWFkZXIYAiABKAwiNQoLQm9vdENvbW1hbmQSEQoNU1RPUF9BTkRfV0FJVBAAEhMKD0lOU1RBTExfVVBHUkFERRABSgQIAxAEIgoKCEdldE5vbmNlIhYKBU5vbmNlEg0KBW5vbmNlGAEgAigMIiwKClVubG9ja1BhdGgSEQoJYWRkcmVzc19uGAEgAygNEgsKA21hYxgCIAEoDCIiChNVbmxvY2tlZFBhdGhSZXF1ZXN0EgsKA21hYxgBIAIoDCIUChJTaG93RGV2aWNlVHV0b3JpYWwiEgoQVW5sb2NrQm9vdGxvYWRlciIeCg1TZXRCcmlnaHRuZXNzEg0KBXZhbHVlGAEgASgNIhEKD0dldFNlcmlhbE51bWJlciIlCgxTZXJpYWxOdW1iZXISFQoNc2VyaWFsX251bWJlchgBIAIoCSqZAQoKQmFja3VwVHlwZRIJCgVCaXAzORAAEhAKDFNsaXAzOV9CYXNpYxABEhMKD1NsaXAzOV9BZHZhbmNlZBACEhwKGFNsaXAzOV9TaW5nbGVfRXh0ZW5kYWJsZRADEhsKF1NsaXAzOV9CYXNpY19FeHRlbmRhYmxlEAQSHgoaU2xpcDM5X0FkdmFuY2VkX0V4dGVuZGFibGUQBSolCgxCYWNrdXBNZXRob2QSCwoHRGlzcGxheRAAEggKBE40VzEQASpHChBTYWZldHlDaGVja0xldmVsEgoKBlN0cmljdBAAEhAKDFByb21wdEFsd2F5cxABEhUKEVByb21wdFRlbXBvcmFyaWx5EAIqPQoPRGlzcGxheVJvdGF0aW9uEgkKBU5vcnRoEAASCAoERWFzdBBaEgoKBVNvdXRoELQBEgkKBFdlc3QQjgIqMAoQSG9tZXNjcmVlbkZvcm1hdBIICgRUb2lmEAESCAoESnBlZxACEggKBFRvaUcQAypICgxSZWNvdmVyeVR5cGUSEgoOTm9ybWFsUmVjb3ZlcnkQABIKCgZEcnlSdW4QARIYChRVbmxvY2tSZXBlYXRlZEJhY2t1cBACQkIKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhdUcmV6b3JNZXNzYWdlTWFuYWdlbWVudICmHQE',\n [file_options],\n);\nexport const InitializeSchema = messageDesc(file_messages_management, 0);\nexport const GetFeaturesSchema = messageDesc(file_messages_management, 1);\nexport const FeaturesSchema = messageDesc(file_messages_management, 2);\nexport const Features_BackupAvailabilitySchema = enumDesc(file_messages_management, 2, 0);\nexport const Features_BackupAvailability = tsEnum(Features_BackupAvailabilitySchema);\nexport const Features_RecoveryStatusSchema = enumDesc(file_messages_management, 2, 1);\nexport const Features_RecoveryStatus = tsEnum(Features_RecoveryStatusSchema);\nexport const Features_CapabilitySchema = enumDesc(file_messages_management, 2, 2);\nexport const Features_Capability = tsEnum(Features_CapabilitySchema);\nexport const LockDeviceSchema = messageDesc(file_messages_management, 3);\nexport const SetBusySchema = messageDesc(file_messages_management, 4);\nexport const EndSessionSchema = messageDesc(file_messages_management, 5);\nexport const ApplySettingsSchema = messageDesc(file_messages_management, 6);\nexport const ChangeLanguageSchema = messageDesc(file_messages_management, 7);\nexport const DataChunkRequestSchema = messageDesc(file_messages_management, 8);\nexport const DataChunkAckSchema = messageDesc(file_messages_management, 9);\nexport const ApplyFlagsSchema = messageDesc(file_messages_management, 10);\nexport const ChangePinSchema = messageDesc(file_messages_management, 11);\nexport const ChangeWipeCodeSchema = messageDesc(file_messages_management, 12);\nexport const SdProtectSchema = messageDesc(file_messages_management, 13);\nexport const SdProtect_SdProtectOperationTypeSchema = enumDesc(file_messages_management, 13, 0);\nexport const SdProtect_SdProtectOperationType = tsEnum(SdProtect_SdProtectOperationTypeSchema);\nexport const PingSchema = messageDesc(file_messages_management, 14);\nexport const CancelSchema = messageDesc(file_messages_management, 15);\nexport const GetEntropySchema = messageDesc(file_messages_management, 16);\nexport const EntropySchema = messageDesc(file_messages_management, 17);\nexport const GetFirmwareHashSchema = messageDesc(file_messages_management, 18);\nexport const FirmwareHashSchema = messageDesc(file_messages_management, 19);\nexport const AuthenticateDeviceSchema = messageDesc(file_messages_management, 20);\nexport const AuthenticityProofSchema = messageDesc(file_messages_management, 21);\nexport const WipeDeviceSchema = messageDesc(file_messages_management, 22);\nexport const LoadDeviceSchema = messageDesc(file_messages_management, 23);\nexport const ResetDeviceSchema = messageDesc(file_messages_management, 24);\nexport const BackupDeviceSchema = messageDesc(file_messages_management, 25);\nexport const BackupDevice_Slip39GroupSchema = messageDesc(file_messages_management, 25, 0);\nexport const EntropyRequestSchema = messageDesc(file_messages_management, 26);\nexport const EntropyAckSchema = messageDesc(file_messages_management, 27);\nexport const EntropyCheckReadySchema = messageDesc(file_messages_management, 28);\nexport const EntropyCheckContinueSchema = messageDesc(file_messages_management, 29);\nexport const RecoveryDeviceSchema = messageDesc(file_messages_management, 30);\nexport const RecoveryDevice_RecoveryDeviceInputMethodSchema = enumDesc(\n file_messages_management,\n 30,\n 0,\n);\nexport const RecoveryDevice_RecoveryDeviceInputMethod = tsEnum(\n RecoveryDevice_RecoveryDeviceInputMethodSchema,\n);\nexport const WordRequestSchema = messageDesc(file_messages_management, 31);\nexport const WordRequest_WordRequestTypeSchema = enumDesc(file_messages_management, 31, 0);\nexport const WordRequest_WordRequestType = tsEnum(WordRequest_WordRequestTypeSchema);\nexport const WordAckSchema = messageDesc(file_messages_management, 32);\nexport const SetU2FCounterSchema = messageDesc(file_messages_management, 33);\nexport const GetNextU2FCounterSchema = messageDesc(file_messages_management, 34);\nexport const NextU2FCounterSchema = messageDesc(file_messages_management, 35);\nexport const DoPreauthorizedSchema = messageDesc(file_messages_management, 36);\nexport const PreauthorizedRequestSchema = messageDesc(file_messages_management, 37);\nexport const CancelAuthorizationSchema = messageDesc(file_messages_management, 38);\nexport const RebootToBootloaderSchema = messageDesc(file_messages_management, 39);\nexport const RebootToBootloader_BootCommandSchema = enumDesc(file_messages_management, 39, 0);\nexport const RebootToBootloader_BootCommand = tsEnum(RebootToBootloader_BootCommandSchema);\nexport const GetNonceSchema = messageDesc(file_messages_management, 40);\nexport const NonceSchema = messageDesc(file_messages_management, 41);\nexport const UnlockPathSchema = messageDesc(file_messages_management, 42);\nexport const UnlockedPathRequestSchema = messageDesc(file_messages_management, 43);\nexport const ShowDeviceTutorialSchema = messageDesc(file_messages_management, 44);\nexport const UnlockBootloaderSchema = messageDesc(file_messages_management, 45);\nexport const SetBrightnessSchema = messageDesc(file_messages_management, 46);\nexport const GetSerialNumberSchema = messageDesc(file_messages_management, 47);\nexport const SerialNumberSchema = messageDesc(file_messages_management, 48);\nexport const BackupTypeSchema = enumDesc(file_messages_management, 0);\nexport const BackupType = tsEnum(BackupTypeSchema);\nexport const BackupMethodSchema = enumDesc(file_messages_management, 1);\nexport const BackupMethod = tsEnum(BackupMethodSchema);\nexport const SafetyCheckLevelSchema = enumDesc(file_messages_management, 2);\nexport const SafetyCheckLevel = tsEnum(SafetyCheckLevelSchema);\nexport const DisplayRotationSchema = enumDesc(file_messages_management, 3);\nexport const DisplayRotation = tsEnum(DisplayRotationSchema);\nexport const HomescreenFormatSchema = enumDesc(file_messages_management, 4);\nexport const HomescreenFormat = tsEnum(HomescreenFormatSchema);\nexport const RecoveryTypeSchema = enumDesc(file_messages_management, 5);\nexport const RecoveryType = tsEnum(RecoveryTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-definitions.proto (package hw.trezor.messages.definitions, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_definitions = fileDesc(\n 'ChptZXNzYWdlcy1kZWZpbml0aW9ucy5wcm90bxIeaHcudHJlem9yLm1lc3NhZ2VzLmRlZmluaXRpb25zIlUKE0V0aGVyZXVtTmV0d29ya0luZm8SEAoIY2hhaW5faWQYASACKAQSDgoGc3ltYm9sGAIgAigJEg4KBnNsaXA0NBgDIAIoDRIMCgRuYW1lGAQgAigJImYKEUV0aGVyZXVtVG9rZW5JbmZvEg8KB2FkZHJlc3MYASACKAwSEAoIY2hhaW5faWQYAiACKAQSDgoGc3ltYm9sGAMgAigJEhAKCGRlY2ltYWxzGAQgAigNEgwKBG5hbWUYBSACKAkiPQoPU29sYW5hVG9rZW5JbmZvEgwKBG1pbnQYASACKAwSDgoGc3ltYm9sGAIgAigJEgwKBG5hbWUYAyACKAkqTAoORGVmaW5pdGlvblR5cGUSFAoQRVRIRVJFVU1fTkVUV09SSxAAEhIKDkVUSEVSRVVNX1RPS0VOEAESEAoMU09MQU5BX1RPS0VOEAJCPwojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCGFRyZXpvck1lc3NhZ2VEZWZpbml0aW9ucw',\n);\nexport const EthereumNetworkInfoSchema = messageDesc(file_messages_definitions, 0);\nexport const EthereumTokenInfoSchema = messageDesc(file_messages_definitions, 1);\nexport const SolanaTokenInfoSchema = messageDesc(file_messages_definitions, 2);\nexport const DefinitionTypeSchema = enumDesc(file_messages_definitions, 0);\nexport const DefinitionType = tsEnum(DefinitionTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-eos.proto (package hw.trezor.messages.eos, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_eos = fileDesc(\n 'ChJtZXNzYWdlcy1lb3MucHJvdG8SFmh3LnRyZXpvci5tZXNzYWdlcy5lb3MiTAoPRW9zR2V0UHVibGljS2V5EhEKCWFkZHJlc3NfbhgBIAMoDRIUCgxzaG93X2Rpc3BsYXkYAiABKAgSEAoIY2h1bmtpZnkYAyABKAgiPgoMRW9zUHVibGljS2V5EhYKDndpZl9wdWJsaWNfa2V5GAEgAigJEhYKDnJhd19wdWJsaWNfa2V5GAIgAigMIrUCCglFb3NTaWduVHgSEQoJYWRkcmVzc19uGAEgAygNEhAKCGNoYWluX2lkGAIgAigMEj0KBmhlYWRlchgDIAIoCzItLmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zU2lnblR4LkVvc1R4SGVhZGVyEhMKC251bV9hY3Rpb25zGAQgAigNEhAKCGNodW5raWZ5GAUgASgIGpwBCgtFb3NUeEhlYWRlchISCgpleHBpcmF0aW9uGAEgAigNEhUKDXJlZl9ibG9ja19udW0YAiACKA0SGAoQcmVmX2Jsb2NrX3ByZWZpeBgDIAIoDRIbChNtYXhfbmV0X3VzYWdlX3dvcmRzGAQgAigNEhgKEG1heF9jcHVfdXNhZ2VfbXMYBSACKA0SEQoJZGVsYXlfc2VjGAYgAigNIicKEkVvc1R4QWN0aW9uUmVxdWVzdBIRCglkYXRhX3NpemUYASABKA0ilhsKDkVvc1R4QWN0aW9uQWNrEkYKBmNvbW1vbhgBIAIoCzI2Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uQ29tbW9uEkoKCHRyYW5zZmVyGAIgASgLMjguaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBY3Rpb25UcmFuc2ZlchJKCghkZWxlZ2F0ZRgDIAEoCzI4Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uRGVsZWdhdGUSTgoKdW5kZWxlZ2F0ZRgEIAEoCzI6Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uVW5kZWxlZ2F0ZRJGCgZyZWZ1bmQYBSABKAsyNi5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0FjdGlvblJlZnVuZBJHCgdidXlfcmFtGAYgASgLMjYuaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBY3Rpb25CdXlSYW0SUgoNYnV5X3JhbV9ieXRlcxgHIAEoCzI7Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uQnV5UmFtQnl0ZXMSSQoIc2VsbF9yYW0YCCABKAsyNy5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0FjdGlvblNlbGxSYW0SUwoNdm90ZV9wcm9kdWNlchgJIAEoCzI8Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uVm90ZVByb2R1Y2VyEk8KC3VwZGF0ZV9hdXRoGAogASgLMjouaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBY3Rpb25VcGRhdGVBdXRoEk8KC2RlbGV0ZV9hdXRoGAsgASgLMjouaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBY3Rpb25EZWxldGVBdXRoEksKCWxpbmtfYXV0aBgMIAEoCzI4Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uTGlua0F1dGgSTwoLdW5saW5rX2F1dGgYDSABKAsyOi5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0FjdGlvblVubGlua0F1dGgSTwoLbmV3X2FjY291bnQYDiABKAsyOi5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0FjdGlvbk5ld0FjY291bnQSSAoHdW5rbm93bhgPIAEoCzI3Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQWN0aW9uVW5rbm93bhoqCghFb3NBc3NldBIOCgZhbW91bnQYASACKBISDgoGc3ltYm9sGAIgAigEGjcKEkVvc1Blcm1pc3Npb25MZXZlbBINCgVhY3RvchgBIAIoBBISCgpwZXJtaXNzaW9uGAIgAigEGlMKE0Vvc0F1dGhvcml6YXRpb25LZXkSDAoEdHlwZRgBIAIoDRILCgNrZXkYAiABKAwSEQoJYWRkcmVzc19uGAMgAygNEg4KBndlaWdodBgEIAIoDRp1ChdFb3NBdXRob3JpemF0aW9uQWNjb3VudBJKCgdhY2NvdW50GAEgAigLMjkuaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NQZXJtaXNzaW9uTGV2ZWwSDgoGd2VpZ2h0GAIgAigNGjgKFEVvc0F1dGhvcml6YXRpb25XYWl0EhAKCHdhaXRfc2VjGAEgAigNEg4KBndlaWdodBgCIAIoDRqNAgoQRW9zQXV0aG9yaXphdGlvbhIRCgl0aHJlc2hvbGQYASACKA0SSAoEa2V5cxgCIAMoCzI6Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQXV0aG9yaXphdGlvbktleRJQCghhY2NvdW50cxgDIAMoCzI+Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQXV0aG9yaXphdGlvbkFjY291bnQSSgoFd2FpdHMYBCADKAsyOy5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0F1dGhvcml6YXRpb25XYWl0GoIBCg9Fb3NBY3Rpb25Db21tb24SDwoHYWNjb3VudBgBIAIoBBIMCgRuYW1lGAIgAigEElAKDWF1dGhvcml6YXRpb24YAyADKAsyOS5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc1Blcm1pc3Npb25MZXZlbBqGAQoRRW9zQWN0aW9uVHJhbnNmZXISDgoGc2VuZGVyGAEgAigEEhAKCHJlY2VpdmVyGAIgAigEEkEKCHF1YW50aXR5GAMgAigLMi8uaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBc3NldBIMCgRtZW1vGAQgAigJGtUBChFFb3NBY3Rpb25EZWxlZ2F0ZRIOCgZzZW5kZXIYASACKAQSEAoIcmVjZWl2ZXIYAiACKAQSRQoMbmV0X3F1YW50aXR5GAMgAigLMi8uaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBc3NldBJFCgxjcHVfcXVhbnRpdHkYBCACKAsyLy5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0Fzc2V0EhAKCHRyYW5zZmVyGAUgAigIGsUBChNFb3NBY3Rpb25VbmRlbGVnYXRlEg4KBnNlbmRlchgBIAIoBBIQCghyZWNlaXZlchgCIAIoBBJFCgxuZXRfcXVhbnRpdHkYAyACKAsyLy5ody50cmV6b3IubWVzc2FnZXMuZW9zLkVvc1R4QWN0aW9uQWNrLkVvc0Fzc2V0EkUKDGNwdV9xdWFudGl0eRgEIAIoCzIvLmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQXNzZXQaIAoPRW9zQWN0aW9uUmVmdW5kEg0KBW93bmVyGAEgAigEGnUKD0Vvc0FjdGlvbkJ1eVJhbRINCgVwYXllchgBIAIoBBIQCghyZWNlaXZlchgCIAIoBBJBCghxdWFudGl0eRgDIAIoCzIvLmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQXNzZXQaRgoURW9zQWN0aW9uQnV5UmFtQnl0ZXMSDQoFcGF5ZXIYASACKAQSEAoIcmVjZWl2ZXIYAiACKAQSDQoFYnl0ZXMYAyACKA0aMgoQRW9zQWN0aW9uU2VsbFJhbRIPCgdhY2NvdW50GAEgAigEEg0KBWJ5dGVzGAIgAigEGkgKFUVvc0FjdGlvblZvdGVQcm9kdWNlchINCgV2b3RlchgBIAIoBBINCgVwcm94eRgCIAIoBBIRCglwcm9kdWNlcnMYAyADKAQakQEKE0Vvc0FjdGlvblVwZGF0ZUF1dGgSDwoHYWNjb3VudBgBIAIoBBISCgpwZXJtaXNzaW9uGAIgAigEEg4KBnBhcmVudBgDIAIoBBJFCgRhdXRoGAQgAigLMjcuaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBdXRob3JpemF0aW9uGjoKE0Vvc0FjdGlvbkRlbGV0ZUF1dGgSDwoHYWNjb3VudBgBIAIoBBISCgpwZXJtaXNzaW9uGAIgAigEGlUKEUVvc0FjdGlvbkxpbmtBdXRoEg8KB2FjY291bnQYASACKAQSDAoEY29kZRgCIAIoBBIMCgR0eXBlGAMgAigEEhMKC3JlcXVpcmVtZW50GAQgAigEGkIKE0Vvc0FjdGlvblVubGlua0F1dGgSDwoHYWNjb3VudBgBIAIoBBIMCgRjb2RlGAIgAigEEgwKBHR5cGUYAyACKAQaxQEKE0Vvc0FjdGlvbk5ld0FjY291bnQSDwoHY3JlYXRvchgBIAIoBBIMCgRuYW1lGAIgAigEEkYKBW93bmVyGAMgAigLMjcuaHcudHJlem9yLm1lc3NhZ2VzLmVvcy5Fb3NUeEFjdGlvbkFjay5Fb3NBdXRob3JpemF0aW9uEkcKBmFjdGl2ZRgEIAIoCzI3Lmh3LnRyZXpvci5tZXNzYWdlcy5lb3MuRW9zVHhBY3Rpb25BY2suRW9zQXV0aG9yaXphdGlvbho5ChBFb3NBY3Rpb25Vbmtub3duEhEKCWRhdGFfc2l6ZRgBIAIoDRISCgpkYXRhX2NodW5rGAIgAigMIiAKC0Vvc1NpZ25lZFR4EhEKCXNpZ25hdHVyZRgBIAIoCUI3CiNjb20uc2F0b3NoaWxhYnMudHJlem9yLmxpYi5wcm90b2J1ZkIQVHJlem9yTWVzc2FnZUVvcw',\n);\nexport const EosGetPublicKeySchema = messageDesc(file_messages_eos, 0);\nexport const EosPublicKeySchema = messageDesc(file_messages_eos, 1);\nexport const EosSignTxSchema = messageDesc(file_messages_eos, 2);\nexport const EosSignTx_EosTxHeaderSchema = messageDesc(file_messages_eos, 2, 0);\nexport const EosTxActionRequestSchema = messageDesc(file_messages_eos, 3);\nexport const EosTxActionAckSchema = messageDesc(file_messages_eos, 4);\nexport const EosTxActionAck_EosAssetSchema = messageDesc(file_messages_eos, 4, 0);\nexport const EosTxActionAck_EosPermissionLevelSchema = messageDesc(file_messages_eos, 4, 1);\nexport const EosTxActionAck_EosAuthorizationKeySchema = messageDesc(file_messages_eos, 4, 2);\nexport const EosTxActionAck_EosAuthorizationAccountSchema = messageDesc(file_messages_eos, 4, 3);\nexport const EosTxActionAck_EosAuthorizationWaitSchema = messageDesc(file_messages_eos, 4, 4);\nexport const EosTxActionAck_EosAuthorizationSchema = messageDesc(file_messages_eos, 4, 5);\nexport const EosTxActionAck_EosActionCommonSchema = messageDesc(file_messages_eos, 4, 6);\nexport const EosTxActionAck_EosActionTransferSchema = messageDesc(file_messages_eos, 4, 7);\nexport const EosTxActionAck_EosActionDelegateSchema = messageDesc(file_messages_eos, 4, 8);\nexport const EosTxActionAck_EosActionUndelegateSchema = messageDesc(file_messages_eos, 4, 9);\nexport const EosTxActionAck_EosActionRefundSchema = messageDesc(file_messages_eos, 4, 10);\nexport const EosTxActionAck_EosActionBuyRamSchema = messageDesc(file_messages_eos, 4, 11);\nexport const EosTxActionAck_EosActionBuyRamBytesSchema = messageDesc(file_messages_eos, 4, 12);\nexport const EosTxActionAck_EosActionSellRamSchema = messageDesc(file_messages_eos, 4, 13);\nexport const EosTxActionAck_EosActionVoteProducerSchema = messageDesc(file_messages_eos, 4, 14);\nexport const EosTxActionAck_EosActionUpdateAuthSchema = messageDesc(file_messages_eos, 4, 15);\nexport const EosTxActionAck_EosActionDeleteAuthSchema = messageDesc(file_messages_eos, 4, 16);\nexport const EosTxActionAck_EosActionLinkAuthSchema = messageDesc(file_messages_eos, 4, 17);\nexport const EosTxActionAck_EosActionUnlinkAuthSchema = messageDesc(file_messages_eos, 4, 18);\nexport const EosTxActionAck_EosActionNewAccountSchema = messageDesc(file_messages_eos, 4, 19);\nexport const EosTxActionAck_EosActionUnknownSchema = messageDesc(file_messages_eos, 4, 20);\nexport const EosSignedTxSchema = messageDesc(file_messages_eos, 5);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-ethereum-eip712.proto (package hw.trezor.messages.ethereum_eip712, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_ethereum } from './messages-ethereum_pb';\nexport const file_messages_ethereum_eip712 = fileDesc(\n 'Ch5tZXNzYWdlcy1ldGhlcmV1bS1laXA3MTIucHJvdG8SImh3LnRyZXpvci5tZXNzYWdlcy5ldGhlcmV1bV9laXA3MTIixAEKFUV0aGVyZXVtU2lnblR5cGVkRGF0YRIRCglhZGRyZXNzX24YASADKA0SFAoMcHJpbWFyeV90eXBlGAIgAigJEiAKEm1ldGFtYXNrX3Y0X2NvbXBhdBgDIAEoCDoEdHJ1ZRJFCgtkZWZpbml0aW9ucxgEIAEoCzIwLmh3LnRyZXpvci5tZXNzYWdlcy5ldGhlcmV1bS5FdGhlcmV1bURlZmluaXRpb25zEhkKEXNob3dfbWVzc2FnZV9oYXNoGAUgASgMIi4KHkV0aGVyZXVtVHlwZWREYXRhU3RydWN0UmVxdWVzdBIMCgRuYW1lGAEgAigJIvgEChpFdGhlcmV1bVR5cGVkRGF0YVN0cnVjdEFjaxJkCgdtZW1iZXJzGAEgAygLMlMuaHcudHJlem9yLm1lc3NhZ2VzLmV0aGVyZXVtX2VpcDcxMi5FdGhlcmV1bVR5cGVkRGF0YVN0cnVjdEFjay5FdGhlcmV1bVN0cnVjdE1lbWJlchqEAQoURXRoZXJldW1TdHJ1Y3RNZW1iZXISXgoEdHlwZRgBIAIoCzJQLmh3LnRyZXpvci5tZXNzYWdlcy5ldGhlcmV1bV9laXA3MTIuRXRoZXJldW1UeXBlZERhdGFTdHJ1Y3RBY2suRXRoZXJldW1GaWVsZFR5cGUSDAoEbmFtZRgCIAIoCRqAAgoRRXRoZXJldW1GaWVsZFR5cGUSYgoJZGF0YV90eXBlGAEgAigOMk8uaHcudHJlem9yLm1lc3NhZ2VzLmV0aGVyZXVtX2VpcDcxMi5FdGhlcmV1bVR5cGVkRGF0YVN0cnVjdEFjay5FdGhlcmV1bURhdGFUeXBlEgwKBHNpemUYAiABKA0SZAoKZW50cnlfdHlwZRgDIAEoCzJQLmh3LnRyZXpvci5tZXNzYWdlcy5ldGhlcmV1bV9laXA3MTIuRXRoZXJldW1UeXBlZERhdGFTdHJ1Y3RBY2suRXRoZXJldW1GaWVsZFR5cGUSEwoLc3RydWN0X25hbWUYBCABKAkiagoQRXRoZXJldW1EYXRhVHlwZRIICgRVSU5UEAESBwoDSU5UEAISCQoFQllURVMQAxIKCgZTVFJJTkcQBBIICgRCT09MEAUSCwoHQUREUkVTUxAGEgkKBUFSUkFZEAcSCgoGU1RSVUNUEAgiNAodRXRoZXJldW1UeXBlZERhdGFWYWx1ZVJlcXVlc3QSEwoLbWVtYmVyX3BhdGgYASADKA0iKgoZRXRoZXJldW1UeXBlZERhdGFWYWx1ZUFjaxINCgV2YWx1ZRgBIAIoDEJCCiNjb20uc2F0b3NoaWxhYnMudHJlem9yLmxpYi5wcm90b2J1ZkIbVHJlem9yTWVzc2FnZUV0aGVyZXVtRUlQNzEy',\n [file_messages_ethereum],\n);\nexport const EthereumSignTypedDataSchema = messageDesc(file_messages_ethereum_eip712, 0);\nexport const EthereumTypedDataStructRequestSchema = messageDesc(file_messages_ethereum_eip712, 1);\nexport const EthereumTypedDataStructAckSchema = messageDesc(file_messages_ethereum_eip712, 2);\nexport const EthereumTypedDataStructAck_EthereumStructMemberSchema = messageDesc(\n file_messages_ethereum_eip712,\n 2,\n 0,\n);\nexport const EthereumTypedDataStructAck_EthereumFieldTypeSchema = messageDesc(\n file_messages_ethereum_eip712,\n 2,\n 1,\n);\nexport const EthereumTypedDataStructAck_EthereumDataTypeSchema = enumDesc(\n file_messages_ethereum_eip712,\n 2,\n 0,\n);\nexport const EthereumTypedDataStructAck_EthereumDataType = tsEnum(\n EthereumTypedDataStructAck_EthereumDataTypeSchema,\n);\nexport const EthereumTypedDataValueRequestSchema = messageDesc(file_messages_ethereum_eip712, 3);\nexport const EthereumTypedDataValueAckSchema = messageDesc(file_messages_ethereum_eip712, 4);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-ethereum.proto (package hw.trezor.messages.ethereum, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nexport const file_messages_ethereum = fileDesc(\n 'ChdtZXNzYWdlcy1ldGhlcmV1bS5wcm90bxIbaHcudHJlem9yLm1lc3NhZ2VzLmV0aGVyZXVtIj8KFEV0aGVyZXVtR2V0UHVibGljS2V5EhEKCWFkZHJlc3NfbhgBIAMoDRIUCgxzaG93X2Rpc3BsYXkYAiABKAgiVgoRRXRoZXJldW1QdWJsaWNLZXkSMwoEbm9kZRgBIAIoCzIlLmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uSEROb2RlVHlwZRIMCgR4cHViGAIgAigJImgKEkV0aGVyZXVtR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhcKD2VuY29kZWRfbmV0d29yaxgDIAEoDBIQCghjaHVua2lmeRgEIAEoCCJJCg9FdGhlcmV1bUFkZHJlc3MSGAoMX29sZF9hZGRyZXNzGAEgASgMQgIYARIPCgdhZGRyZXNzGAIgASgJEgsKA21hYxgDIAEoDCLrAgoORXRoZXJldW1TaWduVHgSEQoJYWRkcmVzc19uGAEgAygNEg8KBW5vbmNlGAIgASgMOgASEQoJZ2FzX3ByaWNlGAMgAigMEhEKCWdhc19saW1pdBgEIAIoDBIMCgJ0bxgLIAEoCToAEg8KBXZhbHVlGAYgASgMOgASHAoSZGF0YV9pbml0aWFsX2NodW5rGAcgASgMOgASFgoLZGF0YV9sZW5ndGgYCCABKA06ATASEAoIY2hhaW5faWQYCSACKAQSDwoHdHhfdHlwZRgKIAEoDRJFCgtkZWZpbml0aW9ucxgMIAEoCzIwLmh3LnRyZXpvci5tZXNzYWdlcy5ldGhlcmV1bS5FdGhlcmV1bURlZmluaXRpb25zEhAKCGNodW5raWZ5GA0gASgIEj4KC3BheW1lbnRfcmVxGA4gASgLMikuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdCKPBAoVRXRoZXJldW1TaWduVHhFSVAxNTU5EhEKCWFkZHJlc3NfbhgBIAMoDRINCgVub25jZRgCIAIoDBITCgttYXhfZ2FzX2ZlZRgDIAIoDBIYChBtYXhfcHJpb3JpdHlfZmVlGAQgAigMEhEKCWdhc19saW1pdBgFIAIoDBIMCgJ0bxgGIAEoCToAEg0KBXZhbHVlGAcgAigMEhwKEmRhdGFfaW5pdGlhbF9jaHVuaxgIIAEoDDoAEhMKC2RhdGFfbGVuZ3RoGAkgAigNEhAKCGNoYWluX2lkGAogAigEEloKC2FjY2Vzc19saXN0GAsgAygLMkUuaHcudHJlem9yLm1lc3NhZ2VzLmV0aGVyZXVtLkV0aGVyZXVtU2lnblR4RUlQMTU1OS5FdGhlcmV1bUFjY2Vzc0xpc3QSRQoLZGVmaW5pdGlvbnMYDCABKAsyMC5ody50cmV6b3IubWVzc2FnZXMuZXRoZXJldW0uRXRoZXJldW1EZWZpbml0aW9ucxIQCghjaHVua2lmeRgNIAEoCBI+CgtwYXltZW50X3JlcRgOIAEoCzIpLmh3LnRyZXpvci5tZXNzYWdlcy5jb21tb24uUGF5bWVudFJlcXVlc3QaOwoSRXRoZXJldW1BY2Nlc3NMaXN0Eg8KB2FkZHJlc3MYASACKAkSFAoMc3RvcmFnZV9rZXlzGAIgAygMImcKEUV0aGVyZXVtVHhSZXF1ZXN0EhMKC2RhdGFfbGVuZ3RoGAEgASgNEhMKC3NpZ25hdHVyZV92GAIgASgNEhMKC3NpZ25hdHVyZV9yGAMgASgMEhMKC3NpZ25hdHVyZV9zGAQgASgMIiMKDUV0aGVyZXVtVHhBY2sSEgoKZGF0YV9jaHVuaxgBIAIoDCJkChNFdGhlcmV1bVNpZ25NZXNzYWdlEhEKCWFkZHJlc3NfbhgBIAMoDRIPCgdtZXNzYWdlGAIgAigMEhcKD2VuY29kZWRfbmV0d29yaxgDIAEoDBIQCghjaHVua2lmeRgEIAEoCCI+ChhFdGhlcmV1bU1lc3NhZ2VTaWduYXR1cmUSEQoJc2lnbmF0dXJlGAIgAigMEg8KB2FkZHJlc3MYAyACKAkiXgoVRXRoZXJldW1WZXJpZnlNZXNzYWdlEhEKCXNpZ25hdHVyZRgCIAIoDBIPCgdtZXNzYWdlGAMgAigMEg8KB2FkZHJlc3MYBCACKAkSEAoIY2h1bmtpZnkYBSABKAgieAoVRXRoZXJldW1TaWduVHlwZWRIYXNoEhEKCWFkZHJlc3NfbhgBIAMoDRIdChVkb21haW5fc2VwYXJhdG9yX2hhc2gYAiACKAwSFAoMbWVzc2FnZV9oYXNoGAMgASgMEhcKD2VuY29kZWRfbmV0d29yaxgEIAEoDCJAChpFdGhlcmV1bVR5cGVkRGF0YVNpZ25hdHVyZRIRCglzaWduYXR1cmUYASACKAwSDwoHYWRkcmVzcxgCIAIoCSJFChNFdGhlcmV1bURlZmluaXRpb25zEhcKD2VuY29kZWRfbmV0d29yaxgBIAEoDBIVCg1lbmNvZGVkX3Rva2VuGAIgASgMQjwKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhVUcmV6b3JNZXNzYWdlRXRoZXJldW0',\n [file_messages_common],\n);\nexport const EthereumGetPublicKeySchema = messageDesc(file_messages_ethereum, 0);\nexport const EthereumPublicKeySchema = messageDesc(file_messages_ethereum, 1);\nexport const EthereumGetAddressSchema = messageDesc(file_messages_ethereum, 2);\nexport const EthereumAddressSchema = messageDesc(file_messages_ethereum, 3);\nexport const EthereumSignTxSchema = messageDesc(file_messages_ethereum, 4);\nexport const EthereumSignTxEIP1559Schema = messageDesc(file_messages_ethereum, 5);\nexport const EthereumSignTxEIP1559_EthereumAccessListSchema = messageDesc(\n file_messages_ethereum,\n 5,\n 0,\n);\nexport const EthereumTxRequestSchema = messageDesc(file_messages_ethereum, 6);\nexport const EthereumTxAckSchema = messageDesc(file_messages_ethereum, 7);\nexport const EthereumSignMessageSchema = messageDesc(file_messages_ethereum, 8);\nexport const EthereumMessageSignatureSchema = messageDesc(file_messages_ethereum, 9);\nexport const EthereumVerifyMessageSchema = messageDesc(file_messages_ethereum, 10);\nexport const EthereumSignTypedHashSchema = messageDesc(file_messages_ethereum, 11);\nexport const EthereumTypedDataSignatureSchema = messageDesc(file_messages_ethereum, 12);\nexport const EthereumDefinitionsSchema = messageDesc(file_messages_ethereum, 13);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-evolu.proto (package hw.trezor.messages.evolu, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_evolu = fileDesc(\n 'ChRtZXNzYWdlcy1ldm9sdS5wcm90bxIYaHcudHJlem9yLm1lc3NhZ2VzLmV2b2x1IlMKDEV2b2x1R2V0Tm9kZRIjChtwcm9vZl9vZl9kZWxlZ2F0ZWRfaWRlbnRpdHkYASACKAwSHgoTbm9kZV9yb3RhdGlvbl9pbmRleBgCIAEoDToBMCIZCglFdm9sdU5vZGUSDAoEZGF0YRgBIAIoDCJ7ChxFdm9sdVNpZ25SZWdpc3RyYXRpb25SZXF1ZXN0Eh0KFWNoYWxsZW5nZV9mcm9tX3NlcnZlchgBIAIoDBIXCg9zaXplX3RvX2FjcXVpcmUYAiACKA0SIwobcHJvb2Zfb2ZfZGVsZWdhdGVkX2lkZW50aXR5GAMgAigMIkgKGEV2b2x1UmVnaXN0cmF0aW9uUmVxdWVzdBIZChFjZXJ0aWZpY2F0ZV9jaGFpbhgBIAMoDBIRCglzaWduYXR1cmUYAiACKAwiZAocRXZvbHVHZXREZWxlZ2F0ZWRJZGVudGl0eUtleRIWCg50aHBfY3JlZGVudGlhbBgBIAEoDBIWCg5yb3RhdGlvbl9pbmRleBgDIAEoDRIOCgZyb3RhdGUYBCABKAhKBAgCEAMiSAoZRXZvbHVEZWxlZ2F0ZWRJZGVudGl0eUtleRITCgtwcml2YXRlX2tleRgBIAIoDBIWCg5yb3RhdGlvbl9pbmRleBgCIAEoDSIuChRFdm9sdUluZGV4TWFuYWdlbWVudBIWCg5yb3RhdGlvbl9pbmRleBgBIAEoDSI2ChxFdm9sdUluZGV4TWFuYWdlbWVudFJlc3BvbnNlEhYKDnJvdGF0aW9uX2luZGV4GAEgASgNQj0KI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhJUcmV6b3JNZXNzYWdlRXZvbHWAph0B',\n [file_options],\n);\nexport const EvoluGetNodeSchema = messageDesc(file_messages_evolu, 0);\nexport const EvoluNodeSchema = messageDesc(file_messages_evolu, 1);\nexport const EvoluSignRegistrationRequestSchema = messageDesc(file_messages_evolu, 2);\nexport const EvoluRegistrationRequestSchema = messageDesc(file_messages_evolu, 3);\nexport const EvoluGetDelegatedIdentityKeySchema = messageDesc(file_messages_evolu, 4);\nexport const EvoluDelegatedIdentityKeySchema = messageDesc(file_messages_evolu, 5);\nexport const EvoluIndexManagementSchema = messageDesc(file_messages_evolu, 6);\nexport const EvoluIndexManagementResponseSchema = messageDesc(file_messages_evolu, 7);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-monero.proto (package hw.trezor.messages.monero, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_monero = fileDesc(\n 'ChVtZXNzYWdlcy1tb25lcm8ucHJvdG8SGWh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8inwUKHE1vbmVyb1RyYW5zYWN0aW9uU291cmNlRW50cnkSWgoHb3V0cHV0cxgBIAMoCzJJLmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvVHJhbnNhY3Rpb25Tb3VyY2VFbnRyeS5Nb25lcm9PdXRwdXRFbnRyeRITCgtyZWFsX291dHB1dBgCIAEoBBIXCg9yZWFsX291dF90eF9rZXkYAyABKAwSIwobcmVhbF9vdXRfYWRkaXRpb25hbF90eF9rZXlzGAQgAygMEh8KF3JlYWxfb3V0cHV0X2luX3R4X2luZGV4GAUgASgEEg4KBmFtb3VudBgGIAEoBBILCgNyY3QYByABKAgSDAoEbWFzaxgIIAEoDBJjCg5tdWx0aXNpZ19rTFJraRgJIAEoCzJLLmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvVHJhbnNhY3Rpb25Tb3VyY2VFbnRyeS5Nb25lcm9NdWx0aXNpZ0tMUmtpEhUKDXN1YmFkZHJfbWlub3IYCiABKA0awwEKEU1vbmVyb091dHB1dEVudHJ5EgsKA2lkeBgBIAEoBBJpCgNrZXkYAiABKAsyXC5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb1RyYW5zYWN0aW9uU291cmNlRW50cnkuTW9uZXJvT3V0cHV0RW50cnkuTW9uZXJvUmN0S2V5UHVibGljGjYKEk1vbmVyb1JjdEtleVB1YmxpYxIMCgRkZXN0GAEgAigMEhIKCmNvbW1pdG1lbnQYAiACKAwaQgoTTW9uZXJvTXVsdGlzaWdLTFJraRIJCgFLGAEgASgMEgkKAUwYAiABKAwSCQoBUhgDIAEoDBIKCgJraRgEIAEoDCKrAgohTW9uZXJvVHJhbnNhY3Rpb25EZXN0aW5hdGlvbkVudHJ5Eg4KBmFtb3VudBgBIAEoBBJlCgRhZGRyGAIgASgLMlcuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvbkRlc3RpbmF0aW9uRW50cnkuTW9uZXJvQWNjb3VudFB1YmxpY0FkZHJlc3MSFQoNaXNfc3ViYWRkcmVzcxgDIAEoCBIQCghvcmlnaW5hbBgEIAEoDBIVCg1pc19pbnRlZ3JhdGVkGAUgASgIGk8KGk1vbmVyb0FjY291bnRQdWJsaWNBZGRyZXNzEhgKEHNwZW5kX3B1YmxpY19rZXkYASABKAwSFwoPdmlld19wdWJsaWNfa2V5GAIgASgMIpoBChlNb25lcm9UcmFuc2FjdGlvblJzaWdEYXRhEhEKCXJzaWdfdHlwZRgBIAEoDRIUCgxvZmZsb2FkX3R5cGUYAiABKA0SEAoIZ3JvdXBpbmcYAyADKAQSDAoEbWFzaxgEIAEoDBIMCgRyc2lnGAUgASgMEhIKCnJzaWdfcGFydHMYBiADKAwSEgoKYnBfdmVyc2lvbhgHIAEoDSLOAQoQTW9uZXJvR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEksKDG5ldHdvcmtfdHlwZRgDIAEoDjIsLmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvTmV0d29ya1R5cGU6B01BSU5ORVQSDwoHYWNjb3VudBgEIAEoDRINCgVtaW5vchgFIAEoDRISCgpwYXltZW50X2lkGAYgASgMEhAKCGNodW5raWZ5GAcgASgIIiAKDU1vbmVyb0FkZHJlc3MSDwoHYWRkcmVzcxgBIAIoDCJzChFNb25lcm9HZXRXYXRjaEtleRIRCglhZGRyZXNzX24YASADKA0SSwoMbmV0d29ya190eXBlGAIgASgOMiwuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9OZXR3b3JrVHlwZToHTUFJTk5FVCI0Cg5Nb25lcm9XYXRjaEtleRIRCgl3YXRjaF9rZXkYASACKAwSDwoHYWRkcmVzcxgCIAIoDCL3BQocTW9uZXJvVHJhbnNhY3Rpb25Jbml0UmVxdWVzdBIPCgd2ZXJzaW9uGAEgASgNEhEKCWFkZHJlc3NfbhgCIAMoDRJLCgxuZXR3b3JrX3R5cGUYAyABKA4yLC5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb05ldHdvcmtUeXBlOgdNQUlOTkVUEl8KCHRzeF9kYXRhGAQgASgLMk0uaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvbkluaXRSZXF1ZXN0Lk1vbmVyb1RyYW5zYWN0aW9uRGF0YRqEBAoVTW9uZXJvVHJhbnNhY3Rpb25EYXRhEg8KB3ZlcnNpb24YASABKA0SEgoKcGF5bWVudF9pZBgCIAEoDBITCgt1bmxvY2tfdGltZRgDIAEoBBJNCgdvdXRwdXRzGAQgAygLMjwuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvbkRlc3RpbmF0aW9uRW50cnkSUAoKY2hhbmdlX2R0cxgFIAEoCzI8Lmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvVHJhbnNhY3Rpb25EZXN0aW5hdGlvbkVudHJ5EhIKCm51bV9pbnB1dHMYBiABKA0SDQoFbWl4aW4YByABKA0SCwoDZmVlGAggASgEEg8KB2FjY291bnQYCSABKA0SFQoNbWlub3JfaW5kaWNlcxgKIAMoDRJHCglyc2lnX2RhdGEYCyABKAsyNC5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb1RyYW5zYWN0aW9uUnNpZ0RhdGESGgoSaW50ZWdyYXRlZF9pbmRpY2VzGAwgAygNEhYKDmNsaWVudF92ZXJzaW9uGA0gASgNEhEKCWhhcmRfZm9yaxgOIAEoDRIWCg5tb25lcm9fdmVyc2lvbhgPIAEoDBIQCghjaHVua2lmeRgQIAEoCCJyChhNb25lcm9UcmFuc2FjdGlvbkluaXRBY2sSDQoFaG1hY3MYASADKAwSRwoJcnNpZ19kYXRhGAIgASgLMjQuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvblJzaWdEYXRhIm0KIE1vbmVyb1RyYW5zYWN0aW9uU2V0SW5wdXRSZXF1ZXN0EkkKCHNyY19lbnRyGAEgASgLMjcuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvblNvdXJjZUVudHJ5IpkBChxNb25lcm9UcmFuc2FjdGlvblNldElucHV0QWNrEgwKBHZpbmkYASABKAwSEQoJdmluaV9obWFjGAIgASgMEhIKCnBzZXVkb19vdXQYAyABKAwSFwoPcHNldWRvX291dF9obWFjGAQgASgMEhgKEHBzZXVkb19vdXRfYWxwaGEYBSABKAwSEQoJc3BlbmRfa2V5GAYgASgMIs4BCiFNb25lcm9UcmFuc2FjdGlvbklucHV0VmluaVJlcXVlc3QSSQoIc3JjX2VudHIYASABKAsyNy5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb1RyYW5zYWN0aW9uU291cmNlRW50cnkSDAoEdmluaRgCIAEoDBIRCgl2aW5pX2htYWMYAyABKAwSEgoKcHNldWRvX291dBgEIAEoDBIXCg9wc2V1ZG9fb3V0X2htYWMYBSABKAwSEAoIb3JpZ19pZHgYBiABKA0iHwodTW9uZXJvVHJhbnNhY3Rpb25JbnB1dFZpbmlBY2siJgokTW9uZXJvVHJhbnNhY3Rpb25BbGxJbnB1dHNTZXRSZXF1ZXN0ImsKIE1vbmVyb1RyYW5zYWN0aW9uQWxsSW5wdXRzU2V0QWNrEkcKCXJzaWdfZGF0YRgBIAEoCzI0Lmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvVHJhbnNhY3Rpb25Sc2lnRGF0YSLsAQohTW9uZXJvVHJhbnNhY3Rpb25TZXRPdXRwdXRSZXF1ZXN0Ek4KCGRzdF9lbnRyGAEgASgLMjwuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvbkRlc3RpbmF0aW9uRW50cnkSFQoNZHN0X2VudHJfaG1hYxgCIAEoDBJHCglyc2lnX2RhdGEYAyABKAsyNC5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb1RyYW5zYWN0aW9uUnNpZ0RhdGESFwoPaXNfb2ZmbG9hZGVkX2JwGAQgASgIIq8BCh1Nb25lcm9UcmFuc2FjdGlvblNldE91dHB1dEFjaxIOCgZ0eF9vdXQYASABKAwSEgoKdm91dGlfaG1hYxgCIAEoDBJHCglyc2lnX2RhdGEYAyABKAsyNC5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb1RyYW5zYWN0aW9uUnNpZ0RhdGESDgoGb3V0X3BrGAQgASgMEhEKCWVjZGhfaW5mbxgFIAEoDCJsCiFNb25lcm9UcmFuc2FjdGlvbkFsbE91dFNldFJlcXVlc3QSRwoJcnNpZ19kYXRhGAEgASgLMjQuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvblJzaWdEYXRhIv0BCh1Nb25lcm9UcmFuc2FjdGlvbkFsbE91dFNldEFjaxINCgVleHRyYRgBIAEoDBIWCg50eF9wcmVmaXhfaGFzaBgCIAEoDBJUCgJydhgEIAEoCzJILmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvVHJhbnNhY3Rpb25BbGxPdXRTZXRBY2suTW9uZXJvUmluZ0N0U2lnEhkKEWZ1bGxfbWVzc2FnZV9oYXNoGAUgASgMGkQKD01vbmVyb1JpbmdDdFNpZxIPCgd0eG5fZmVlGAEgASgEEg8KB21lc3NhZ2UYAiABKAwSDwoHcnZfdHlwZRgDIAEoDSL7AQohTW9uZXJvVHJhbnNhY3Rpb25TaWduSW5wdXRSZXF1ZXN0EkkKCHNyY19lbnRyGAEgASgLMjcuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9UcmFuc2FjdGlvblNvdXJjZUVudHJ5EgwKBHZpbmkYAiABKAwSEQoJdmluaV9obWFjGAMgASgMEhIKCnBzZXVkb19vdXQYBCABKAwSFwoPcHNldWRvX291dF9obWFjGAUgASgMEhgKEHBzZXVkb19vdXRfYWxwaGEYBiABKAwSEQoJc3BlbmRfa2V5GAcgASgMEhAKCG9yaWdfaWR4GAggASgNIkYKHU1vbmVyb1RyYW5zYWN0aW9uU2lnbklucHV0QWNrEhEKCXNpZ25hdHVyZRgBIAEoDBISCgpwc2V1ZG9fb3V0GAIgASgMIh8KHU1vbmVyb1RyYW5zYWN0aW9uRmluYWxSZXF1ZXN0IngKGU1vbmVyb1RyYW5zYWN0aW9uRmluYWxBY2sSEAoIY291dF9rZXkYASABKAwSDAoEc2FsdBgCIAEoDBIRCglyYW5kX211bHQYAyABKAwSEwoLdHhfZW5jX2tleXMYBCABKAwSEwoLb3BlbmluZ19rZXkYBSABKAwiyQIKH01vbmVyb0tleUltYWdlRXhwb3J0SW5pdFJlcXVlc3QSCwoDbnVtGAEgAigEEgwKBGhhc2gYAiACKAwSEQoJYWRkcmVzc19uGAMgAygNEksKDG5ldHdvcmtfdHlwZRgEIAEoDjIsLmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvTmV0d29ya1R5cGU6B01BSU5ORVQSZAoEc3VicxgFIAMoCzJWLmh3LnRyZXpvci5tZXNzYWdlcy5tb25lcm8uTW9uZXJvS2V5SW1hZ2VFeHBvcnRJbml0UmVxdWVzdC5Nb25lcm9TdWJBZGRyZXNzSW5kaWNlc0xpc3QaRQobTW9uZXJvU3ViQWRkcmVzc0luZGljZXNMaXN0Eg8KB2FjY291bnQYASACKA0SFQoNbWlub3JfaW5kaWNlcxgCIAMoDSIdChtNb25lcm9LZXlJbWFnZUV4cG9ydEluaXRBY2siqwIKHU1vbmVyb0tleUltYWdlU3luY1N0ZXBSZXF1ZXN0ElwKBHRkaXMYASADKAsyTi5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb0tleUltYWdlU3luY1N0ZXBSZXF1ZXN0Lk1vbmVyb1RyYW5zZmVyRGV0YWlscxqrAQoVTW9uZXJvVHJhbnNmZXJEZXRhaWxzEg8KB291dF9rZXkYASACKAwSEgoKdHhfcHViX2tleRgCIAIoDBIeChZhZGRpdGlvbmFsX3R4X3B1Yl9rZXlzGAMgAygMEh0KFWludGVybmFsX291dHB1dF9pbmRleBgEIAIoBBIWCg5zdWJfYWRkcl9tYWpvchgFIAEoDRIWCg5zdWJfYWRkcl9taW5vchgGIAEoDSKpAQoZTW9uZXJvS2V5SW1hZ2VTeW5jU3RlcEFjaxJYCgNraXMYASADKAsySy5ody50cmV6b3IubWVzc2FnZXMubW9uZXJvLk1vbmVyb0tleUltYWdlU3luY1N0ZXBBY2suTW9uZXJvRXhwb3J0ZWRLZXlJbWFnZRoyChZNb25lcm9FeHBvcnRlZEtleUltYWdlEgoKAml2GAEgASgMEgwKBGJsb2IYAyABKAwiIAoeTW9uZXJvS2V5SW1hZ2VTeW5jRmluYWxSZXF1ZXN0Ii0KGk1vbmVyb0tleUltYWdlU3luY0ZpbmFsQWNrEg8KB2VuY19rZXkYASABKAwi6wEKFU1vbmVyb0dldFR4S2V5UmVxdWVzdBIRCglhZGRyZXNzX24YASADKA0SSwoMbmV0d29ya190eXBlGAIgASgOMiwuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9OZXR3b3JrVHlwZToHTUFJTk5FVBINCgVzYWx0MRgDIAIoDBINCgVzYWx0MhgEIAIoDBITCgt0eF9lbmNfa2V5cxgFIAIoDBIWCg50eF9wcmVmaXhfaGFzaBgGIAIoDBIOCgZyZWFzb24YByABKA0SFwoPdmlld19wdWJsaWNfa2V5GAggASgMIkoKEU1vbmVyb0dldFR4S2V5QWNrEgwKBHNhbHQYASABKAwSDwoHdHhfa2V5cxgCIAEoDBIWCg50eF9kZXJpdmF0aW9ucxgDIAEoDCJ/Ch1Nb25lcm9MaXZlUmVmcmVzaFN0YXJ0UmVxdWVzdBIRCglhZGRyZXNzX24YASADKA0SSwoMbmV0d29ya190eXBlGAIgASgOMiwuaHcudHJlem9yLm1lc3NhZ2VzLm1vbmVyby5Nb25lcm9OZXR3b3JrVHlwZToHTUFJTk5FVCIbChlNb25lcm9MaXZlUmVmcmVzaFN0YXJ0QWNrIokBChxNb25lcm9MaXZlUmVmcmVzaFN0ZXBSZXF1ZXN0Eg8KB291dF9rZXkYASACKAwSEgoKcmVjdl9kZXJpdhgCIAIoDBIUCgxyZWFsX291dF9pZHgYAyACKAQSFgoOc3ViX2FkZHJfbWFqb3IYBCACKA0SFgoOc3ViX2FkZHJfbWlub3IYBSACKA0iOwoYTW9uZXJvTGl2ZVJlZnJlc2hTdGVwQWNrEgwKBHNhbHQYASABKAwSEQoJa2V5X2ltYWdlGAIgASgMIh8KHU1vbmVyb0xpdmVSZWZyZXNoRmluYWxSZXF1ZXN0IhsKGU1vbmVyb0xpdmVSZWZyZXNoRmluYWxBY2siZwoWRGVidWdNb25lcm9EaWFnUmVxdWVzdBILCgNpbnMYASABKAQSCgoCcDEYAiABKAQSCgoCcDIYAyABKAQSCgoCcGQYBCADKAQSDQoFZGF0YTEYBSABKAwSDQoFZGF0YTIYBiABKAwiYwoSRGVidWdNb25lcm9EaWFnQWNrEgsKA2lucxgBIAEoBBIKCgJwMRgCIAEoBBIKCgJwMhgDIAEoBBIKCgJwZBgEIAMoBBINCgVkYXRhMRgFIAEoDBINCgVkYXRhMhgGIAEoDCpKChFNb25lcm9OZXR3b3JrVHlwZRILCgdNQUlOTkVUEAASCwoHVEVTVE5FVBABEgwKCFNUQUdFTkVUEAISDQoJRkFLRUNIQUlOEANCOgojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCE1RyZXpvck1lc3NhZ2VNb25lcm8',\n);\nexport const MoneroTransactionSourceEntrySchema = messageDesc(file_messages_monero, 0);\nexport const MoneroTransactionSourceEntry_MoneroOutputEntrySchema = messageDesc(\n file_messages_monero,\n 0,\n 0,\n);\nexport const MoneroTransactionSourceEntry_MoneroOutputEntry_MoneroRctKeyPublicSchema = messageDesc(\n file_messages_monero,\n 0,\n 0,\n 0,\n);\nexport const MoneroTransactionSourceEntry_MoneroMultisigKLRkiSchema = messageDesc(\n file_messages_monero,\n 0,\n 1,\n);\nexport const MoneroTransactionDestinationEntrySchema = messageDesc(file_messages_monero, 1);\nexport const MoneroTransactionDestinationEntry_MoneroAccountPublicAddressSchema = messageDesc(\n file_messages_monero,\n 1,\n 0,\n);\nexport const MoneroTransactionRsigDataSchema = messageDesc(file_messages_monero, 2);\nexport const MoneroGetAddressSchema = messageDesc(file_messages_monero, 3);\nexport const MoneroAddressSchema = messageDesc(file_messages_monero, 4);\nexport const MoneroGetWatchKeySchema = messageDesc(file_messages_monero, 5);\nexport const MoneroWatchKeySchema = messageDesc(file_messages_monero, 6);\nexport const MoneroTransactionInitRequestSchema = messageDesc(file_messages_monero, 7);\nexport const MoneroTransactionInitRequest_MoneroTransactionDataSchema = messageDesc(\n file_messages_monero,\n 7,\n 0,\n);\nexport const MoneroTransactionInitAckSchema = messageDesc(file_messages_monero, 8);\nexport const MoneroTransactionSetInputRequestSchema = messageDesc(file_messages_monero, 9);\nexport const MoneroTransactionSetInputAckSchema = messageDesc(file_messages_monero, 10);\nexport const MoneroTransactionInputViniRequestSchema = messageDesc(file_messages_monero, 11);\nexport const MoneroTransactionInputViniAckSchema = messageDesc(file_messages_monero, 12);\nexport const MoneroTransactionAllInputsSetRequestSchema = messageDesc(file_messages_monero, 13);\nexport const MoneroTransactionAllInputsSetAckSchema = messageDesc(file_messages_monero, 14);\nexport const MoneroTransactionSetOutputRequestSchema = messageDesc(file_messages_monero, 15);\nexport const MoneroTransactionSetOutputAckSchema = messageDesc(file_messages_monero, 16);\nexport const MoneroTransactionAllOutSetRequestSchema = messageDesc(file_messages_monero, 17);\nexport const MoneroTransactionAllOutSetAckSchema = messageDesc(file_messages_monero, 18);\nexport const MoneroTransactionAllOutSetAck_MoneroRingCtSigSchema = messageDesc(\n file_messages_monero,\n 18,\n 0,\n);\nexport const MoneroTransactionSignInputRequestSchema = messageDesc(file_messages_monero, 19);\nexport const MoneroTransactionSignInputAckSchema = messageDesc(file_messages_monero, 20);\nexport const MoneroTransactionFinalRequestSchema = messageDesc(file_messages_monero, 21);\nexport const MoneroTransactionFinalAckSchema = messageDesc(file_messages_monero, 22);\nexport const MoneroKeyImageExportInitRequestSchema = messageDesc(file_messages_monero, 23);\nexport const MoneroKeyImageExportInitRequest_MoneroSubAddressIndicesListSchema = messageDesc(\n file_messages_monero,\n 23,\n 0,\n);\nexport const MoneroKeyImageExportInitAckSchema = messageDesc(file_messages_monero, 24);\nexport const MoneroKeyImageSyncStepRequestSchema = messageDesc(file_messages_monero, 25);\nexport const MoneroKeyImageSyncStepRequest_MoneroTransferDetailsSchema = messageDesc(\n file_messages_monero,\n 25,\n 0,\n);\nexport const MoneroKeyImageSyncStepAckSchema = messageDesc(file_messages_monero, 26);\nexport const MoneroKeyImageSyncStepAck_MoneroExportedKeyImageSchema = messageDesc(\n file_messages_monero,\n 26,\n 0,\n);\nexport const MoneroKeyImageSyncFinalRequestSchema = messageDesc(file_messages_monero, 27);\nexport const MoneroKeyImageSyncFinalAckSchema = messageDesc(file_messages_monero, 28);\nexport const MoneroGetTxKeyRequestSchema = messageDesc(file_messages_monero, 29);\nexport const MoneroGetTxKeyAckSchema = messageDesc(file_messages_monero, 30);\nexport const MoneroLiveRefreshStartRequestSchema = messageDesc(file_messages_monero, 31);\nexport const MoneroLiveRefreshStartAckSchema = messageDesc(file_messages_monero, 32);\nexport const MoneroLiveRefreshStepRequestSchema = messageDesc(file_messages_monero, 33);\nexport const MoneroLiveRefreshStepAckSchema = messageDesc(file_messages_monero, 34);\nexport const MoneroLiveRefreshFinalRequestSchema = messageDesc(file_messages_monero, 35);\nexport const MoneroLiveRefreshFinalAckSchema = messageDesc(file_messages_monero, 36);\nexport const DebugMoneroDiagRequestSchema = messageDesc(file_messages_monero, 37);\nexport const DebugMoneroDiagAckSchema = messageDesc(file_messages_monero, 38);\nexport const MoneroNetworkTypeSchema = enumDesc(file_messages_monero, 0);\nexport const MoneroNetworkType = tsEnum(MoneroNetworkTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages.proto (package hw.trezor.messages, syntax proto2)\nimport { enumDesc, fileDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages = fileDesc(\n 'Cg5tZXNzYWdlcy5wcm90bxISaHcudHJlem9yLm1lc3NhZ2VzKt5jCgtNZXNzYWdlVHlwZRIoChZNZXNzYWdlVHlwZV9Jbml0aWFsaXplEAAaDJC1GAGwtRgBgKYdARIeChBNZXNzYWdlVHlwZV9QaW5nEAEaCJC1GAGAph0BEiUKE01lc3NhZ2VUeXBlX1N1Y2Nlc3MQAhoMmLUYAai1GAGAph0BEiUKE01lc3NhZ2VUeXBlX0ZhaWx1cmUQAxoMmLUYAai1GAGAph0BEiMKFU1lc3NhZ2VUeXBlX0NoYW5nZVBpbhAEGgiQtRgBgKYdARIkChZNZXNzYWdlVHlwZV9XaXBlRGV2aWNlEAUaCJC1GAGAph0BEiQKFk1lc3NhZ2VUeXBlX0dldEVudHJvcHkQCRoIkLUYAYCmHQESIQoTTWVzc2FnZVR5cGVfRW50cm9weRAKGgiYtRgBgKYdARIkChZNZXNzYWdlVHlwZV9Mb2FkRGV2aWNlEA0aCJC1GAGAph0BEiUKF01lc3NhZ2VUeXBlX1Jlc2V0RGV2aWNlEA4aCJC1GAGAph0BEiEKE01lc3NhZ2VUeXBlX1NldEJ1c3kQEBoIkLUYAYCmHQESIgoUTWVzc2FnZVR5cGVfRmVhdHVyZXMQERoImLUYAYCmHQESKgocTWVzc2FnZVR5cGVfUGluTWF0cml4UmVxdWVzdBASGgiYtRgBgKYdARIuChhNZXNzYWdlVHlwZV9QaW5NYXRyaXhBY2sQExoQkLUYAbC1GAHAtRgBgKYdARIkChJNZXNzYWdlVHlwZV9DYW5jZWwQFBoMkLUYAbC1GAGAph0BEiQKFk1lc3NhZ2VUeXBlX0xvY2tEZXZpY2UQGBoIkLUYAYCmHQESJwoZTWVzc2FnZVR5cGVfQXBwbHlTZXR0aW5ncxAZGgiQtRgBgKYdARInChlNZXNzYWdlVHlwZV9CdXR0b25SZXF1ZXN0EBoaCJi1GAGAph0BEisKFU1lc3NhZ2VUeXBlX0J1dHRvbkFjaxAbGhCQtRgBsLUYAcC1GAGAph0BEiQKFk1lc3NhZ2VUeXBlX0FwcGx5RmxhZ3MQHBoIkLUYAYCmHQESIgoUTWVzc2FnZVR5cGVfR2V0Tm9uY2UQHxoIkLUYAYCmHQESHwoRTWVzc2FnZVR5cGVfTm9uY2UQIRoImLUYAYCmHQESJgoYTWVzc2FnZVR5cGVfQmFja3VwRGV2aWNlECIaCJC1GAGAph0BEigKGk1lc3NhZ2VUeXBlX0VudHJvcHlSZXF1ZXN0ECMaCJi1GAGAph0BEiQKFk1lc3NhZ2VUeXBlX0VudHJvcHlBY2sQJBoIkLUYAYCmHQESKAoaTWVzc2FnZVR5cGVfUGF5bWVudFJlcXVlc3QQJRoIkLUYAYCmHQESLAodTWVzc2FnZVR5cGVfRW50cm9weUNoZWNrUmVhZHkQ4gcaCJi1GAGAph0BEi8KIE1lc3NhZ2VUeXBlX0VudHJvcHlDaGVja0NvbnRpbnVlEOMHGgiQtRgBgKYdARIrCh1NZXNzYWdlVHlwZV9QYXNzcGhyYXNlUmVxdWVzdBApGgiYtRgBgKYdARIvChlNZXNzYWdlVHlwZV9QYXNzcGhyYXNlQWNrECoaEJC1GAGwtRgBwLUYAYCmHQESKAoaTWVzc2FnZVR5cGVfUmVjb3ZlcnlEZXZpY2UQLRoIkLUYAYCmHQESJQoXTWVzc2FnZVR5cGVfV29yZFJlcXVlc3QQLhoImLUYAYCmHQESIQoTTWVzc2FnZVR5cGVfV29yZEFjaxAvGgiQtRgBgKYdARIlChdNZXNzYWdlVHlwZV9HZXRGZWF0dXJlcxA3GgiQtRgBgKYdARIjChVNZXNzYWdlVHlwZV9TZFByb3RlY3QQTxoIkLUYAYCmHQESKAoaTWVzc2FnZVR5cGVfQ2hhbmdlV2lwZUNvZGUQUhoIkLUYAYCmHQESJAoWTWVzc2FnZVR5cGVfRW5kU2Vzc2lvbhBTGgiQtRgBgKYdARIpChtNZXNzYWdlVHlwZV9Eb1ByZWF1dGhvcml6ZWQQVBoIkLUYAYCmHQESLgogTWVzc2FnZVR5cGVfUHJlYXV0aG9yaXplZFJlcXVlc3QQVRoImLUYAYCmHQESLQofTWVzc2FnZVR5cGVfQ2FuY2VsQXV0aG9yaXphdGlvbhBWGgiQtRgBgKYdARIsCh5NZXNzYWdlVHlwZV9SZWJvb3RUb0Jvb3Rsb2FkZXIQVxoIkLUYAYCmHQESKQobTWVzc2FnZVR5cGVfR2V0RmlybXdhcmVIYXNoEFgaCJC1GAGAph0BEiYKGE1lc3NhZ2VUeXBlX0Zpcm13YXJlSGFzaBBZGgiYtRgBgKYdARIkChZNZXNzYWdlVHlwZV9VbmxvY2tQYXRoEF0aCJC1GAGAph0BEi0KH01lc3NhZ2VUeXBlX1VubG9ja2VkUGF0aFJlcXVlc3QQXhoImLUYAYCmHQESLAoeTWVzc2FnZVR5cGVfU2hvd0RldmljZVR1dG9yaWFsEF8aCJC1GAGAph0BEioKHE1lc3NhZ2VUeXBlX1VubG9ja0Jvb3Rsb2FkZXIQYBoIkLUYAYCmHQESLAoeTWVzc2FnZVR5cGVfQXV0aGVudGljYXRlRGV2aWNlEGEaCJi1GAGAph0BEisKHU1lc3NhZ2VUeXBlX0F1dGhlbnRpY2l0eVByb29mEGIaCJC1GAGAph0BEikKGk1lc3NhZ2VUeXBlX0NoYW5nZUxhbmd1YWdlEN4HGgiQtRgBgKYdARIrChxNZXNzYWdlVHlwZV9EYXRhQ2h1bmtSZXF1ZXN0EN8HGgiYtRgBgKYdARInChhNZXNzYWdlVHlwZV9EYXRhQ2h1bmtBY2sQ4AcaCJC1GAGAph0BEigKGU1lc3NhZ2VUeXBlX1NldEJyaWdodG5lc3MQ4QcaCJC1GAGAph0BEioKG01lc3NhZ2VUeXBlX0dldFNlcmlhbE51bWJlchDkBxoIkLUYAYCmHQESJwoYTWVzc2FnZVR5cGVfU2VyaWFsTnVtYmVyEOUHGgiYtRgBgKYdARIjChlNZXNzYWdlVHlwZV9TZXRVMkZDb3VudGVyED8aBJC1GAESJwodTWVzc2FnZVR5cGVfR2V0TmV4dFUyRkNvdW50ZXIQUBoEkLUYARIkChpNZXNzYWdlVHlwZV9OZXh0VTJGQ291bnRlchBRGgSYtRgBEjUKLU1lc3NhZ2VUeXBlX0RlcHJlY2F0ZWRfUGFzc3BocmFzZVN0YXRlUmVxdWVzdBBNGgIIARIxCilNZXNzYWdlVHlwZV9EZXByZWNhdGVkX1Bhc3NwaHJhc2VTdGF0ZUFjaxBOGgIIARIrChlNZXNzYWdlVHlwZV9GaXJtd2FyZUVyYXNlEAYaDJC1GAG4tRgBgKYdARIsChpNZXNzYWdlVHlwZV9GaXJtd2FyZVVwbG9hZBAHGgyQtRgBuLUYAYCmHQESLQobTWVzc2FnZVR5cGVfRmlybXdhcmVSZXF1ZXN0EAgaDJi1GAG4tRgBgKYdARIoChZNZXNzYWdlVHlwZV9Qcm9kVGVzdFQxECAaDJC1GAG4tRgBgKYdARIkChVNZXNzYWdlVHlwZV9CbGVVbnBhaXIQwT4aCJC1GAGAph0BEiYKGE1lc3NhZ2VUeXBlX0dldFB1YmxpY0tleRALGgiQtRgBgKYdARIjChVNZXNzYWdlVHlwZV9QdWJsaWNLZXkQDBoImLUYAYCmHQESIAoSTWVzc2FnZVR5cGVfU2lnblR4EA8aCJC1GAGAph0BEiMKFU1lc3NhZ2VUeXBlX1R4UmVxdWVzdBAVGgiYtRgBgKYdARIfChFNZXNzYWdlVHlwZV9UeEFjaxAWGgiQtRgBgKYdARIkChZNZXNzYWdlVHlwZV9HZXRBZGRyZXNzEB0aCJC1GAGAph0BEiEKE01lc3NhZ2VUeXBlX0FkZHJlc3MQHhoImLUYAYCmHQESJQoXTWVzc2FnZVR5cGVfU2lnbk1lc3NhZ2UQJhoIkLUYAYCmHQESJwoZTWVzc2FnZVR5cGVfVmVyaWZ5TWVzc2FnZRAnGgiQtRgBgKYdARIqChxNZXNzYWdlVHlwZV9NZXNzYWdlU2lnbmF0dXJlECgaCJi1GAGAph0BEigKGk1lc3NhZ2VUeXBlX0dldE93bmVyc2hpcElkECsaCJC1GAGAph0BEiUKF01lc3NhZ2VUeXBlX093bmVyc2hpcElkECwaCJi1GAGAph0BEisKHU1lc3NhZ2VUeXBlX0dldE93bmVyc2hpcFByb29mEDEaCJC1GAGAph0BEigKGk1lc3NhZ2VUeXBlX093bmVyc2hpcFByb29mEDIaCJi1GAGAph0BEisKHU1lc3NhZ2VUeXBlX0F1dGhvcml6ZUNvaW5Kb2luEDMaCJC1GAGAph0BEigKGk1lc3NhZ2VUeXBlX0NpcGhlcktleVZhbHVlEBcaCJC1GAGAph0BEioKHE1lc3NhZ2VUeXBlX0NpcGhlcmVkS2V5VmFsdWUQMBoImLUYAYCmHQESJgoYTWVzc2FnZVR5cGVfU2lnbklkZW50aXR5EDUaCJC1GAGAph0BEigKGk1lc3NhZ2VUeXBlX1NpZ25lZElkZW50aXR5EDYaCJi1GAGAph0BEisKHU1lc3NhZ2VUeXBlX0dldEVDREhTZXNzaW9uS2V5ED0aCJC1GAGAph0BEigKGk1lc3NhZ2VUeXBlX0VDREhTZXNzaW9uS2V5ED4aCJi1GAGAph0BEi0KH01lc3NhZ2VUeXBlX1BheW1lbnROb3RpZmljYXRpb24QNBoIkLUYAYCmHQESMwodTWVzc2FnZVR5cGVfRGVidWdMaW5rRGVjaXNpb24QZBoQoLUYAbC1GAHAtRgBgKYdARIvCh1NZXNzYWdlVHlwZV9EZWJ1Z0xpbmtHZXRTdGF0ZRBlGgygtRgBsLUYAYCmHQESKAoaTWVzc2FnZVR5cGVfRGVidWdMaW5rU3RhdGUQZhoIqLUYAYCmHQESJwoZTWVzc2FnZVR5cGVfRGVidWdMaW5rU3RvcBBnGgigtRgBgKYdARImChhNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtMb2cQaBoIqLUYAYCmHQESLQofTWVzc2FnZVR5cGVfRGVidWdMaW5rTWVtb3J5UmVhZBBuGgigtRgBgKYdARIpChtNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtNZW1vcnkQbxoIqLUYAYCmHQESLgogTWVzc2FnZVR5cGVfRGVidWdMaW5rTWVtb3J5V3JpdGUQcBoIoLUYAYCmHQESLQofTWVzc2FnZVR5cGVfRGVidWdMaW5rRmxhc2hFcmFzZRBxGgigtRgBgKYdARIqChtNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtMYXlvdXQQqUYaCKi1GAGAph0BEjAKIU1lc3NhZ2VUeXBlX0RlYnVnTGlua1Jlc2VlZFJhbmRvbRCqRhoIoLUYAYCmHQESMAohTWVzc2FnZVR5cGVfRGVidWdMaW5rUmVjb3JkU2NyZWVuEKtGGgigtRgBgKYdARIvCiBNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtFcmFzZVNkQ2FyZBCtRhoIoLUYAYCmHQESLwogTWVzc2FnZVR5cGVfRGVidWdMaW5rV2F0Y2hMYXlvdXQQrkYaCKC1GAGAph0BEjQKJU1lc3NhZ2VUeXBlX0RlYnVnTGlua1Jlc2V0RGVidWdFdmVudHMQr0YaCKC1GAGAph0BEjMKJE1lc3NhZ2VUeXBlX0RlYnVnTGlua09wdGlnYVNldFNlY01heBCwRhoIoLUYAYCmHQESLQoeTWVzc2FnZVR5cGVfRGVidWdMaW5rR2V0R2NJbmZvELFGGgigtRgBgKYdARIqChtNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtHY0luZm8QskYaCKi1GAGAph0BEjIKI01lc3NhZ2VUeXBlX0RlYnVnTGlua0dldFBhaXJpbmdJbmZvELNGGgigtRgBgKYdARIvCiBNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtQYWlyaW5nSW5mbxC0RhoIqLUYAYCmHQESMAohTWVzc2FnZVR5cGVfRGVidWdMaW5rU2V0TG9nRmlsdGVyELVGGgigtRgBgKYdARIxCiJNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtONFcxQ29ubmVjdGVkELZGGgigtRgBgKYdARItCh5NZXNzYWdlVHlwZV9EZWJ1Z0xpbmtONFcxV3JpdGUQt0YaCKi1GAGAph0BEiwKHU1lc3NhZ2VUeXBlX0RlYnVnTGlua040VzFSZWFkELhGGgiotRgBgKYdARIwCiFNZXNzYWdlVHlwZV9EZWJ1Z0xpbmtONFcxUmVzcG9uc2UQuUYaCKC1GAGAph0BEjMKJE1lc3NhZ2VUeXBlX0RlYnVnTGlua1NldEJhdHRlcnlTdGF0ZRC6RhoIoLUYAYCmHQESKwogTWVzc2FnZVR5cGVfRXRoZXJldW1HZXRQdWJsaWNLZXkQwgMaBJC1GAESKAodTWVzc2FnZVR5cGVfRXRoZXJldW1QdWJsaWNLZXkQwwMaBJi1GAESKAoeTWVzc2FnZVR5cGVfRXRoZXJldW1HZXRBZGRyZXNzEDgaBJC1GAESJQobTWVzc2FnZVR5cGVfRXRoZXJldW1BZGRyZXNzEDkaBJi1GAESJAoaTWVzc2FnZVR5cGVfRXRoZXJldW1TaWduVHgQOhoEkLUYARIsCiFNZXNzYWdlVHlwZV9FdGhlcmV1bVNpZ25UeEVJUDE1NTkQxAMaBJC1GAESJwodTWVzc2FnZVR5cGVfRXRoZXJldW1UeFJlcXVlc3QQOxoEmLUYARIjChlNZXNzYWdlVHlwZV9FdGhlcmV1bVR4QWNrEDwaBJC1GAESKQofTWVzc2FnZVR5cGVfRXRoZXJldW1TaWduTWVzc2FnZRBAGgSQtRgBEisKIU1lc3NhZ2VUeXBlX0V0aGVyZXVtVmVyaWZ5TWVzc2FnZRBBGgSQtRgBEi4KJE1lc3NhZ2VUeXBlX0V0aGVyZXVtTWVzc2FnZVNpZ25hdHVyZRBCGgSYtRgBEiwKIU1lc3NhZ2VUeXBlX0V0aGVyZXVtU2lnblR5cGVkRGF0YRDQAxoEkLUYARI1CipNZXNzYWdlVHlwZV9FdGhlcmV1bVR5cGVkRGF0YVN0cnVjdFJlcXVlc3QQ0QMaBJi1GAESMQomTWVzc2FnZVR5cGVfRXRoZXJldW1UeXBlZERhdGFTdHJ1Y3RBY2sQ0gMaBJC1GAESNAopTWVzc2FnZVR5cGVfRXRoZXJldW1UeXBlZERhdGFWYWx1ZVJlcXVlc3QQ0wMaBJi1GAESMAolTWVzc2FnZVR5cGVfRXRoZXJldW1UeXBlZERhdGFWYWx1ZUFjaxDUAxoEkLUYARIxCiZNZXNzYWdlVHlwZV9FdGhlcmV1bVR5cGVkRGF0YVNpZ25hdHVyZRDVAxoEmLUYARIsCiFNZXNzYWdlVHlwZV9FdGhlcmV1bVNpZ25UeXBlZEhhc2gQ1gMaBJC1GAESIwoZTWVzc2FnZVR5cGVfTkVNR2V0QWRkcmVzcxBDGgSQtRgBEiAKFk1lc3NhZ2VUeXBlX05FTUFkZHJlc3MQRBoEmLUYARIfChVNZXNzYWdlVHlwZV9ORU1TaWduVHgQRRoEkLUYARIhChdNZXNzYWdlVHlwZV9ORU1TaWduZWRUeBBGGgSYtRgBEicKHU1lc3NhZ2VUeXBlX05FTURlY3J5cHRNZXNzYWdlEEsaBJC1GAESKQofTWVzc2FnZVR5cGVfTkVNRGVjcnlwdGVkTWVzc2FnZRBMGgSYtRgBEiYKG01lc3NhZ2VUeXBlX1Rlem9zR2V0QWRkcmVzcxCWARoEkLUYARIjChhNZXNzYWdlVHlwZV9UZXpvc0FkZHJlc3MQlwEaBJi1GAESIgoXTWVzc2FnZVR5cGVfVGV6b3NTaWduVHgQmAEaBJC1GAESJAoZTWVzc2FnZVR5cGVfVGV6b3NTaWduZWRUeBCZARoEmLUYARIoCh1NZXNzYWdlVHlwZV9UZXpvc0dldFB1YmxpY0tleRCaARoEkLUYARIlChpNZXNzYWdlVHlwZV9UZXpvc1B1YmxpY0tleRCbARoEmLUYARIkChlNZXNzYWdlVHlwZV9TdGVsbGFyU2lnblR4EMoBGgSQtRgBEikKHk1lc3NhZ2VUeXBlX1N0ZWxsYXJUeE9wUmVxdWVzdBDLARoEmLUYARIoCh1NZXNzYWdlVHlwZV9TdGVsbGFyR2V0QWRkcmVzcxDPARoEkLUYARIlChpNZXNzYWdlVHlwZV9TdGVsbGFyQWRkcmVzcxDQARoEmLUYARItCiJNZXNzYWdlVHlwZV9TdGVsbGFyQ3JlYXRlQWNjb3VudE9wENIBGgSQtRgBEicKHE1lc3NhZ2VUeXBlX1N0ZWxsYXJQYXltZW50T3AQ0wEaBJC1GAESOAotTWVzc2FnZVR5cGVfU3RlbGxhclBhdGhQYXltZW50U3RyaWN0UmVjZWl2ZU9wENQBGgSQtRgBEi8KJE1lc3NhZ2VUeXBlX1N0ZWxsYXJNYW5hZ2VTZWxsT2ZmZXJPcBDVARoEkLUYARI2CitNZXNzYWdlVHlwZV9TdGVsbGFyQ3JlYXRlUGFzc2l2ZVNlbGxPZmZlck9wENYBGgSQtRgBEioKH01lc3NhZ2VUeXBlX1N0ZWxsYXJTZXRPcHRpb25zT3AQ1wEaBJC1GAESKwogTWVzc2FnZVR5cGVfU3RlbGxhckNoYW5nZVRydXN0T3AQ2AEaBJC1GAESKgofTWVzc2FnZVR5cGVfU3RlbGxhckFsbG93VHJ1c3RPcBDZARoEkLUYARIsCiFNZXNzYWdlVHlwZV9TdGVsbGFyQWNjb3VudE1lcmdlT3AQ2gEaBJC1GAESKgofTWVzc2FnZVR5cGVfU3RlbGxhck1hbmFnZURhdGFPcBDcARoEkLUYARIsCiFNZXNzYWdlVHlwZV9TdGVsbGFyQnVtcFNlcXVlbmNlT3AQ3QEaBJC1GAESLgojTWVzc2FnZVR5cGVfU3RlbGxhck1hbmFnZUJ1eU9mZmVyT3AQ3gEaBJC1GAESNQoqTWVzc2FnZVR5cGVfU3RlbGxhclBhdGhQYXltZW50U3RyaWN0U2VuZE9wEN8BGgSQtRgBEjUKKk1lc3NhZ2VUeXBlX1N0ZWxsYXJDbGFpbUNsYWltYWJsZUJhbGFuY2VPcBDhARoEkLUYARImChtNZXNzYWdlVHlwZV9TdGVsbGFyU2lnbmVkVHgQ5gEaBJi1GAESKgofTWVzc2FnZVR5cGVfQ2FyZGFub0dldFB1YmxpY0tleRCxAhoEkLUYARInChxNZXNzYWdlVHlwZV9DYXJkYW5vUHVibGljS2V5ELICGgSYtRgBEigKHU1lc3NhZ2VUeXBlX0NhcmRhbm9HZXRBZGRyZXNzELMCGgSQtRgBEiUKGk1lc3NhZ2VUeXBlX0NhcmRhbm9BZGRyZXNzELQCGgSYtRgBEicKHE1lc3NhZ2VUeXBlX0NhcmRhbm9UeEl0ZW1BY2sQuQIaBJi1GAESNwosTWVzc2FnZVR5cGVfQ2FyZGFub1R4QXV4aWxpYXJ5RGF0YVN1cHBsZW1lbnQQugIaBJi1GAESLgojTWVzc2FnZVR5cGVfQ2FyZGFub1R4V2l0bmVzc1JlcXVlc3QQuwIaBJC1GAESLwokTWVzc2FnZVR5cGVfQ2FyZGFub1R4V2l0bmVzc1Jlc3BvbnNlELwCGgSYtRgBEicKHE1lc3NhZ2VUeXBlX0NhcmRhbm9UeEhvc3RBY2sQvQIaBJC1GAESKAodTWVzc2FnZVR5cGVfQ2FyZGFub1R4Qm9keUhhc2gQvgIaBJi1GAESLAohTWVzc2FnZVR5cGVfQ2FyZGFub1NpZ25UeEZpbmlzaGVkEL8CGgSYtRgBEigKHU1lc3NhZ2VUeXBlX0NhcmRhbm9TaWduVHhJbml0EMACGgSQtRgBEiUKGk1lc3NhZ2VUeXBlX0NhcmRhbm9UeElucHV0EMECGgSQtRgBEiYKG01lc3NhZ2VUeXBlX0NhcmRhbm9UeE91dHB1dBDCAhoEkLUYARIoCh1NZXNzYWdlVHlwZV9DYXJkYW5vQXNzZXRHcm91cBDDAhoEkLUYARIjChhNZXNzYWdlVHlwZV9DYXJkYW5vVG9rZW4QxAIaBJC1GAESKwogTWVzc2FnZVR5cGVfQ2FyZGFub1R4Q2VydGlmaWNhdGUQxQIaBJC1GAESKgofTWVzc2FnZVR5cGVfQ2FyZGFub1R4V2l0aGRyYXdhbBDGAhoEkLUYARItCiJNZXNzYWdlVHlwZV9DYXJkYW5vVHhBdXhpbGlhcnlEYXRhEMcCGgSQtRgBEicKHE1lc3NhZ2VUeXBlX0NhcmRhbm9Qb29sT3duZXIQyAIaBJC1GAESMQomTWVzc2FnZVR5cGVfQ2FyZGFub1Bvb2xSZWxheVBhcmFtZXRlcnMQyQIaBJC1GAESMQomTWVzc2FnZVR5cGVfQ2FyZGFub0dldE5hdGl2ZVNjcmlwdEhhc2gQygIaBJC1GAESLgojTWVzc2FnZVR5cGVfQ2FyZGFub05hdGl2ZVNjcmlwdEhhc2gQywIaBJi1GAESJAoZTWVzc2FnZVR5cGVfQ2FyZGFub1R4TWludBDMAhoEkLUYARIvCiRNZXNzYWdlVHlwZV9DYXJkYW5vVHhDb2xsYXRlcmFsSW5wdXQQzQIaBJC1GAESLgojTWVzc2FnZVR5cGVfQ2FyZGFub1R4UmVxdWlyZWRTaWduZXIQzgIaBJC1GAESMAolTWVzc2FnZVR5cGVfQ2FyZGFub1R4SW5saW5lRGF0dW1DaHVuaxDPAhoEkLUYARI0CilNZXNzYWdlVHlwZV9DYXJkYW5vVHhSZWZlcmVuY2VTY3JpcHRDaHVuaxDQAhoEkLUYARIuCiNNZXNzYWdlVHlwZV9DYXJkYW5vVHhSZWZlcmVuY2VJbnB1dBDRAhoEkLUYARItCiJNZXNzYWdlVHlwZV9DYXJkYW5vU2lnbk1lc3NhZ2VJbml0ENICGgSQtRgBEjAKJU1lc3NhZ2VUeXBlX0NhcmRhbm9NZXNzYWdlRGF0YVJlcXVlc3QQ0wIaBJi1GAESMQomTWVzc2FnZVR5cGVfQ2FyZGFub01lc3NhZ2VEYXRhUmVzcG9uc2UQ1AIaBJC1GAESLgojTWVzc2FnZVR5cGVfQ2FyZGFub01lc3NhZ2VTaWduYXR1cmUQ1QIaBJi1GAESJwocTWVzc2FnZVR5cGVfUmlwcGxlR2V0QWRkcmVzcxCQAxoEkLUYARIkChlNZXNzYWdlVHlwZV9SaXBwbGVBZGRyZXNzEJEDGgSYtRgBEiMKGE1lc3NhZ2VUeXBlX1JpcHBsZVNpZ25UeBCSAxoEkLUYARIlChpNZXNzYWdlVHlwZV9SaXBwbGVTaWduZWRUeBCTAxoEmLUYARIzCihNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvbkluaXRSZXF1ZXN0EPUDGgSYtRgBEi8KJE1lc3NhZ2VUeXBlX01vbmVyb1RyYW5zYWN0aW9uSW5pdEFjaxD2AxoEmLUYARI3CixNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvblNldElucHV0UmVxdWVzdBD3AxoEmLUYARIzCihNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvblNldElucHV0QWNrEPgDGgSYtRgBEjgKLU1lc3NhZ2VUeXBlX01vbmVyb1RyYW5zYWN0aW9uSW5wdXRWaW5pUmVxdWVzdBD7AxoEmLUYARI0CilNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvbklucHV0VmluaUFjaxD8AxoEmLUYARI7CjBNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvbkFsbElucHV0c1NldFJlcXVlc3QQ/QMaBJi1GAESNwosTWVzc2FnZVR5cGVfTW9uZXJvVHJhbnNhY3Rpb25BbGxJbnB1dHNTZXRBY2sQ/gMaBJi1GAESOAotTWVzc2FnZVR5cGVfTW9uZXJvVHJhbnNhY3Rpb25TZXRPdXRwdXRSZXF1ZXN0EP8DGgSYtRgBEjQKKU1lc3NhZ2VUeXBlX01vbmVyb1RyYW5zYWN0aW9uU2V0T3V0cHV0QWNrEIAEGgSYtRgBEjgKLU1lc3NhZ2VUeXBlX01vbmVyb1RyYW5zYWN0aW9uQWxsT3V0U2V0UmVxdWVzdBCBBBoEmLUYARI0CilNZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvbkFsbE91dFNldEFjaxCCBBoEmLUYARI4Ci1NZXNzYWdlVHlwZV9Nb25lcm9UcmFuc2FjdGlvblNpZ25JbnB1dFJlcXVlc3QQgwQaBJi1GAESNAopTWVzc2FnZVR5cGVfTW9uZXJvVHJhbnNhY3Rpb25TaWduSW5wdXRBY2sQhAQaBJi1GAESNAopTWVzc2FnZVR5cGVfTW9uZXJvVHJhbnNhY3Rpb25GaW5hbFJlcXVlc3QQhQQaBJi1GAESMAolTWVzc2FnZVR5cGVfTW9uZXJvVHJhbnNhY3Rpb25GaW5hbEFjaxCGBBoEmLUYARI2CitNZXNzYWdlVHlwZV9Nb25lcm9LZXlJbWFnZUV4cG9ydEluaXRSZXF1ZXN0EJIEGgSYtRgBEjIKJ01lc3NhZ2VUeXBlX01vbmVyb0tleUltYWdlRXhwb3J0SW5pdEFjaxCTBBoEmLUYARI0CilNZXNzYWdlVHlwZV9Nb25lcm9LZXlJbWFnZVN5bmNTdGVwUmVxdWVzdBCUBBoEmLUYARIwCiVNZXNzYWdlVHlwZV9Nb25lcm9LZXlJbWFnZVN5bmNTdGVwQWNrEJUEGgSYtRgBEjUKKk1lc3NhZ2VUeXBlX01vbmVyb0tleUltYWdlU3luY0ZpbmFsUmVxdWVzdBCWBBoEmLUYARIxCiZNZXNzYWdlVHlwZV9Nb25lcm9LZXlJbWFnZVN5bmNGaW5hbEFjaxCXBBoEmLUYARInChxNZXNzYWdlVHlwZV9Nb25lcm9HZXRBZGRyZXNzEJwEGgSQtRgBEiQKGU1lc3NhZ2VUeXBlX01vbmVyb0FkZHJlc3MQnQQaBJi1GAESKAodTWVzc2FnZVR5cGVfTW9uZXJvR2V0V2F0Y2hLZXkQngQaBJC1GAESJQoaTWVzc2FnZVR5cGVfTW9uZXJvV2F0Y2hLZXkQnwQaBJi1GAESLQoiTWVzc2FnZVR5cGVfRGVidWdNb25lcm9EaWFnUmVxdWVzdBCiBBoEkLUYARIpCh5NZXNzYWdlVHlwZV9EZWJ1Z01vbmVyb0RpYWdBY2sQowQaBJi1GAESLAohTWVzc2FnZVR5cGVfTW9uZXJvR2V0VHhLZXlSZXF1ZXN0EKYEGgSQtRgBEigKHU1lc3NhZ2VUeXBlX01vbmVyb0dldFR4S2V5QWNrEKcEGgSYtRgBEjQKKU1lc3NhZ2VUeXBlX01vbmVyb0xpdmVSZWZyZXNoU3RhcnRSZXF1ZXN0EKgEGgSQtRgBEjAKJU1lc3NhZ2VUeXBlX01vbmVyb0xpdmVSZWZyZXNoU3RhcnRBY2sQqQQaBJi1GAESMwooTWVzc2FnZVR5cGVfTW9uZXJvTGl2ZVJlZnJlc2hTdGVwUmVxdWVzdBCqBBoEkLUYARIvCiRNZXNzYWdlVHlwZV9Nb25lcm9MaXZlUmVmcmVzaFN0ZXBBY2sQqwQaBJi1GAESNAopTWVzc2FnZVR5cGVfTW9uZXJvTGl2ZVJlZnJlc2hGaW5hbFJlcXVlc3QQrAQaBJC1GAESMAolTWVzc2FnZVR5cGVfTW9uZXJvTGl2ZVJlZnJlc2hGaW5hbEFjaxCtBBoEmLUYARImChtNZXNzYWdlVHlwZV9Fb3NHZXRQdWJsaWNLZXkQ2AQaBJC1GAESIwoYTWVzc2FnZVR5cGVfRW9zUHVibGljS2V5ENkEGgSYtRgBEiAKFU1lc3NhZ2VUeXBlX0Vvc1NpZ25UeBDaBBoEkLUYARIpCh5NZXNzYWdlVHlwZV9Fb3NUeEFjdGlvblJlcXVlc3QQ2wQaBJi1GAESJQoaTWVzc2FnZVR5cGVfRW9zVHhBY3Rpb25BY2sQ3AQaBJC1GAESIgoXTWVzc2FnZVR5cGVfRW9zU2lnbmVkVHgQ3QQaBJi1GAESNgorTWVzc2FnZVR5cGVfV2ViQXV0aG5MaXN0UmVzaWRlbnRDcmVkZW50aWFscxCgBhoEkLUYARIqCh9NZXNzYWdlVHlwZV9XZWJBdXRobkNyZWRlbnRpYWxzEKEGGgSYtRgBEjQKKU1lc3NhZ2VUeXBlX1dlYkF1dGhuQWRkUmVzaWRlbnRDcmVkZW50aWFsEKIGGgSQtRgBEjcKLE1lc3NhZ2VUeXBlX1dlYkF1dGhuUmVtb3ZlUmVzaWRlbnRDcmVkZW50aWFsEKMGGgSQtRgBEi0KIk1lc3NhZ2VUeXBlX1dlYkF1dGhuQ3JlZGVudGlhbHNBY2sQpAYaBJC1GAESKQoeTWVzc2FnZVR5cGVfU29sYW5hR2V0UHVibGljS2V5EIQHGgSQtRgBEiYKG01lc3NhZ2VUeXBlX1NvbGFuYVB1YmxpY0tleRCFBxoEmLUYARInChxNZXNzYWdlVHlwZV9Tb2xhbmFHZXRBZGRyZXNzEIYHGgSQtRgBEiQKGU1lc3NhZ2VUeXBlX1NvbGFuYUFkZHJlc3MQhwcaBJi1GAESIwoYTWVzc2FnZVR5cGVfU29sYW5hU2lnblR4EIgHGgSQtRgBEigKHU1lc3NhZ2VUeXBlX1NvbGFuYVR4U2lnbmF0dXJlEIkHGgSYtRgBEi4KH01lc3NhZ2VUeXBlX1RocENyZWF0ZU5ld1Nlc3Npb24Q6AcaCJC1GAGAph0BEi8KIE1lc3NhZ2VUeXBlX1RocENyZWRlbnRpYWxSZXF1ZXN0EPgHGgiQtRgBgKYdARIwCiFNZXNzYWdlVHlwZV9UaHBDcmVkZW50aWFsUmVzcG9uc2UQ+QcaCJi1GAGAph0BEiUKGk1lc3NhZ2VUeXBlX05vc3RyR2V0UHVia2V5ENEPGgSQtRgBEiIKF01lc3NhZ2VUeXBlX05vc3RyUHVia2V5ENIPGgSYtRgBEiUKGk1lc3NhZ2VUeXBlX05vc3RyU2lnbkV2ZW50ENMPGgSQtRgBEioKH01lc3NhZ2VUeXBlX05vc3RyRXZlbnRTaWduYXR1cmUQ1A8aBJi1GAESJwoYTWVzc2FnZVR5cGVfRXZvbHVHZXROb2RlELQQGgiQtRgBgKYdARIkChVNZXNzYWdlVHlwZV9Fdm9sdU5vZGUQtRAaCJi1GAGAph0BEjcKKE1lc3NhZ2VUeXBlX0V2b2x1U2lnblJlZ2lzdHJhdGlvblJlcXVlc3QQthAaCJC1GAGAph0BEjMKJE1lc3NhZ2VUeXBlX0V2b2x1UmVnaXN0cmF0aW9uUmVxdWVzdBC3EBoImLUYAYCmHQESNwooTWVzc2FnZVR5cGVfRXZvbHVHZXREZWxlZ2F0ZWRJZGVudGl0eUtleRC4EBoIkLUYAYCmHQESNAolTWVzc2FnZVR5cGVfRXZvbHVEZWxlZ2F0ZWRJZGVudGl0eUtleRC5EBoImLUYAYCmHQESLwogTWVzc2FnZVR5cGVfRXZvbHVJbmRleE1hbmFnZW1lbnQQuhAaCJC1GAGAph0BEjcKKE1lc3NhZ2VUeXBlX0V2b2x1SW5kZXhNYW5hZ2VtZW50UmVzcG9uc2UQuxAaCJi1GAGAph0BEiUKGk1lc3NhZ2VUeXBlX1Ryb25HZXRBZGRyZXNzEJgRGgSQtRgBEiIKF01lc3NhZ2VUeXBlX1Ryb25BZGRyZXNzEJkRGgSYtRgBEiEKFk1lc3NhZ2VUeXBlX1Ryb25TaWduVHgQmhEaBJC1GAESJAoZTWVzc2FnZVR5cGVfVHJvblNpZ25hdHVyZRCbERoEmLUYARIqCh9NZXNzYWdlVHlwZV9Ucm9uQ29udHJhY3RSZXF1ZXN0EJwRGgSYtRgBEisKIE1lc3NhZ2VUeXBlX1Ryb25UcmFuc2ZlckNvbnRyYWN0EJ0RGgSQtRgBEi8KJE1lc3NhZ2VUeXBlX1Ryb25UcmlnZ2VyU21hcnRDb250cmFjdBCeERoEkLUYARIyCidNZXNzYWdlVHlwZV9Ucm9uRnJlZXplQmFsYW5jZVYyQ29udHJhY3QQnxEaBJC1GAESNAopTWVzc2FnZVR5cGVfVHJvblVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QQoBEaBJC1GAESKwogTWVzc2FnZVR5cGVfVHJvbldpdGhkcmF3VW5mcmVlemUQoREaBJC1GAESLgojTWVzc2FnZVR5cGVfVHJvblZvdGVXaXRuZXNzQ29udHJhY3QQohEaBJC1GAESKQoeTWVzc2FnZVR5cGVfQmVuY2htYXJrTGlzdE5hbWVzEIxHGgSAph0BEiUKGk1lc3NhZ2VUeXBlX0JlbmNobWFya05hbWVzEI1HGgSAph0BEiMKGE1lc3NhZ2VUeXBlX0JlbmNobWFya1J1bhCORxoEgKYdARImChtNZXNzYWdlVHlwZV9CZW5jaG1hcmtSZXN1bHQQj0caBICmHQESJwoYTWVzc2FnZVR5cGVfVGVsZW1ldHJ5R2V0EMwIGgiQtRgBgKYdARIkChVNZXNzYWdlVHlwZV9UZWxlbWV0cnkQzQgaCJi1GAGAph0BGgjI8xgB0PMYASIECFoQXCIECEcQSiIECHIQeiIFCHsQlQEiBgjbARDbASIGCOABEOABIgYIrAIQsAIiBgi1AhC4AiIGCLwFEMUFIgYI6QcQ9wciBgj6BxDLCEI4CiNjb20uc2F0b3NoaWxhYnMudHJlem9yLmxpYi5wcm90b2J1ZkINVHJlem9yTWVzc2FnZYCmHQE',\n [file_options],\n);\nexport const MessageTypeSchema = enumDesc(file_messages, 0);\nexport const MessageType = tsEnum(MessageTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-ripple.proto (package hw.trezor.messages.ripple, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nexport const file_messages_ripple = fileDesc(\n 'ChVtZXNzYWdlcy1yaXBwbGUucHJvdG8SGWh3LnRyZXpvci5tZXNzYWdlcy5yaXBwbGUiTQoQUmlwcGxlR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhAKCGNodW5raWZ5GAMgASgIIi0KDVJpcHBsZUFkZHJlc3MSDwoHYWRkcmVzcxgBIAIoCRILCgNtYWMYAiABKAwi2QIKDFJpcHBsZVNpZ25UeBIRCglhZGRyZXNzX24YASADKA0SCwoDZmVlGAIgAigEEhAKBWZsYWdzGAMgASgNOgEwEhAKCHNlcXVlbmNlGAQgAigNEhwKFGxhc3RfbGVkZ2VyX3NlcXVlbmNlGAUgASgNEkYKB3BheW1lbnQYBiACKAsyNS5ody50cmV6b3IubWVzc2FnZXMucmlwcGxlLlJpcHBsZVNpZ25UeC5SaXBwbGVQYXltZW50EhAKCGNodW5raWZ5GAcgASgIEj4KC3BheW1lbnRfcmVxGAggASgLMikuaHcudHJlem9yLm1lc3NhZ2VzLmNvbW1vbi5QYXltZW50UmVxdWVzdBpNCg1SaXBwbGVQYXltZW50Eg4KBmFtb3VudBgBIAIoBBITCgtkZXN0aW5hdGlvbhgCIAIoCRIXCg9kZXN0aW5hdGlvbl90YWcYAyABKA0iOgoOUmlwcGxlU2lnbmVkVHgSEQoJc2lnbmF0dXJlGAEgAigMEhUKDXNlcmlhbGl6ZWRfdHgYAiACKAxCOgojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCE1RyZXpvck1lc3NhZ2VSaXBwbGU',\n [file_messages_common],\n);\nexport const RippleGetAddressSchema = messageDesc(file_messages_ripple, 0);\nexport const RippleAddressSchema = messageDesc(file_messages_ripple, 1);\nexport const RippleSignTxSchema = messageDesc(file_messages_ripple, 2);\nexport const RippleSignTx_RipplePaymentSchema = messageDesc(file_messages_ripple, 2, 0);\nexport const RippleSignedTxSchema = messageDesc(file_messages_ripple, 3);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-solana.proto (package hw.trezor.messages.solana, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nexport const file_messages_solana = fileDesc(\n 'ChVtZXNzYWdlcy1zb2xhbmEucHJvdG8SGWh3LnRyZXpvci5tZXNzYWdlcy5zb2xhbmEiPQoSU29sYW5hR2V0UHVibGljS2V5EhEKCWFkZHJlc3NfbhgBIAMoDRIUCgxzaG93X2Rpc3BsYXkYAiABKAgiJQoPU29sYW5hUHVibGljS2V5EhIKCnB1YmxpY19rZXkYASACKAwiTQoQU29sYW5hR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhAKCGNodW5raWZ5GAMgASgIIi0KDVNvbGFuYUFkZHJlc3MSDwoHYWRkcmVzcxgBIAIoCRILCgNtYWMYAiABKAwicgoYU29sYW5hVHhUb2tlbkFjY291bnRJbmZvEhQKDGJhc2VfYWRkcmVzcxgBIAIoCRIVCg10b2tlbl9wcm9ncmFtGAIgAigJEhIKCnRva2VuX21pbnQYAyACKAkSFQoNdG9rZW5fYWNjb3VudBgEIAIoCSKCAQoWU29sYW5hVHhBZGRpdGlvbmFsSW5mbxJRChR0b2tlbl9hY2NvdW50c19pbmZvcxgBIAMoCzIzLmh3LnRyZXpvci5tZXNzYWdlcy5zb2xhbmEuU29sYW5hVHhUb2tlbkFjY291bnRJbmZvEhUKDWVuY29kZWRfdG9rZW4YAiABKAwixAEKDFNvbGFuYVNpZ25UeBIRCglhZGRyZXNzX24YASADKA0SFQoNc2VyaWFsaXplZF90eBgCIAIoDBJKCg9hZGRpdGlvbmFsX2luZm8YAyABKAsyMS5ody50cmV6b3IubWVzc2FnZXMuc29sYW5hLlNvbGFuYVR4QWRkaXRpb25hbEluZm8SPgoLcGF5bWVudF9yZXEYBCABKAsyKS5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLlBheW1lbnRSZXF1ZXN0IiYKEVNvbGFuYVR4U2lnbmF0dXJlEhEKCXNpZ25hdHVyZRgBIAIoDEI6CiNjb20uc2F0b3NoaWxhYnMudHJlem9yLmxpYi5wcm90b2J1ZkITVHJlem9yTWVzc2FnZVNvbGFuYQ',\n [file_messages_common],\n);\nexport const SolanaGetPublicKeySchema = messageDesc(file_messages_solana, 0);\nexport const SolanaPublicKeySchema = messageDesc(file_messages_solana, 1);\nexport const SolanaGetAddressSchema = messageDesc(file_messages_solana, 2);\nexport const SolanaAddressSchema = messageDesc(file_messages_solana, 3);\nexport const SolanaTxTokenAccountInfoSchema = messageDesc(file_messages_solana, 4);\nexport const SolanaTxAdditionalInfoSchema = messageDesc(file_messages_solana, 5);\nexport const SolanaSignTxSchema = messageDesc(file_messages_solana, 6);\nexport const SolanaTxSignatureSchema = messageDesc(file_messages_solana, 7);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-stellar.proto (package hw.trezor.messages.stellar, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_messages_common } from './messages-common_pb';\nexport const file_messages_stellar = fileDesc(\n 'ChZtZXNzYWdlcy1zdGVsbGFyLnByb3RvEhpody50cmV6b3IubWVzc2FnZXMuc3RlbGxhciJoCgxTdGVsbGFyQXNzZXQSOgoEdHlwZRgBIAIoDjIsLmh3LnRyZXpvci5tZXNzYWdlcy5zdGVsbGFyLlN0ZWxsYXJBc3NldFR5cGUSDAoEY29kZRgCIAEoCRIOCgZpc3N1ZXIYAyABKAkiTgoRU3RlbGxhckdldEFkZHJlc3MSEQoJYWRkcmVzc19uGAEgAygNEhQKDHNob3dfZGlzcGxheRgCIAEoCBIQCghjaHVua2lmeRgDIAEoCCIuCg5TdGVsbGFyQWRkcmVzcxIPCgdhZGRyZXNzGAEgAigJEgsKA21hYxgCIAEoDCLQAwoNU3RlbGxhclNpZ25UeBIRCglhZGRyZXNzX24YAiADKA0SGgoSbmV0d29ya19wYXNzcGhyYXNlGAMgAigJEhYKDnNvdXJjZV9hY2NvdW50GAQgAigJEgsKA2ZlZRgFIAIoDRIXCg9zZXF1ZW5jZV9udW1iZXIYBiACKAQSGAoQdGltZWJvdW5kc19zdGFydBgIIAIoDRIWCg50aW1lYm91bmRzX2VuZBgJIAIoDRJMCgltZW1vX3R5cGUYCiACKA4yOS5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyU2lnblR4LlN0ZWxsYXJNZW1vVHlwZRIRCgltZW1vX3RleHQYCyABKAkSDwoHbWVtb19pZBgMIAEoBBIRCgltZW1vX2hhc2gYDSABKAwSFgoObnVtX29wZXJhdGlvbnMYDiACKA0SPgoLcGF5bWVudF9yZXEYDyABKAsyKS5ody50cmV6b3IubWVzc2FnZXMuY29tbW9uLlBheW1lbnRSZXF1ZXN0IkMKD1N0ZWxsYXJNZW1vVHlwZRIICgROT05FEAASCAoEVEVYVBABEgYKAklEEAISCAoESEFTSBADEgoKBlJFVFVSThAEIhQKElN0ZWxsYXJUeE9wUmVxdWVzdCKQAQoQU3RlbGxhclBheW1lbnRPcBIWCg5zb3VyY2VfYWNjb3VudBgBIAEoCRIbChNkZXN0aW5hdGlvbl9hY2NvdW50GAIgAigJEjcKBWFzc2V0GAMgAigLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0Eg4KBmFtb3VudBgEIAIoEiJfChZTdGVsbGFyQ3JlYXRlQWNjb3VudE9wEhYKDnNvdXJjZV9hY2NvdW50GAEgASgJEhMKC25ld19hY2NvdW50GAIgAigJEhgKEHN0YXJ0aW5nX2JhbGFuY2UYAyACKBIiwgIKIVN0ZWxsYXJQYXRoUGF5bWVudFN0cmljdFJlY2VpdmVPcBIWCg5zb3VyY2VfYWNjb3VudBgBIAEoCRI8CgpzZW5kX2Fzc2V0GAIgAigLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0EhAKCHNlbmRfbWF4GAMgAigSEhsKE2Rlc3RpbmF0aW9uX2FjY291bnQYBCACKAkSQwoRZGVzdGluYXRpb25fYXNzZXQYBSACKAsyKC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXQSGgoSZGVzdGluYXRpb25fYW1vdW50GAYgAigSEjcKBXBhdGhzGAcgAygLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0Ir8CCh5TdGVsbGFyUGF0aFBheW1lbnRTdHJpY3RTZW5kT3ASFgoOc291cmNlX2FjY291bnQYASABKAkSPAoKc2VuZF9hc3NldBgCIAIoCzIoLmh3LnRyZXpvci5tZXNzYWdlcy5zdGVsbGFyLlN0ZWxsYXJBc3NldBITCgtzZW5kX2Ftb3VudBgDIAIoEhIbChNkZXN0aW5hdGlvbl9hY2NvdW50GAQgAigJEkMKEWRlc3RpbmF0aW9uX2Fzc2V0GAUgAigLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0EhcKD2Rlc3RpbmF0aW9uX21pbhgGIAIoEhI3CgVwYXRocxgHIAMoCzIoLmh3LnRyZXpvci5tZXNzYWdlcy5zdGVsbGFyLlN0ZWxsYXJBc3NldCL3AQoYU3RlbGxhck1hbmFnZVNlbGxPZmZlck9wEhYKDnNvdXJjZV9hY2NvdW50GAEgASgJEj8KDXNlbGxpbmdfYXNzZXQYAiACKAsyKC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXQSPgoMYnV5aW5nX2Fzc2V0GAMgAigLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0Eg4KBmFtb3VudBgEIAIoEhIPCgdwcmljZV9uGAUgAigNEg8KB3ByaWNlX2QYBiACKA0SEAoIb2ZmZXJfaWQYByACKAQi9gEKF1N0ZWxsYXJNYW5hZ2VCdXlPZmZlck9wEhYKDnNvdXJjZV9hY2NvdW50GAEgASgJEj8KDXNlbGxpbmdfYXNzZXQYAiACKAsyKC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXQSPgoMYnV5aW5nX2Fzc2V0GAMgAigLMiguaHcudHJlem9yLm1lc3NhZ2VzLnN0ZWxsYXIuU3RlbGxhckFzc2V0Eg4KBmFtb3VudBgEIAIoEhIPCgdwcmljZV9uGAUgAigNEg8KB3ByaWNlX2QYBiACKA0SEAoIb2ZmZXJfaWQYByACKAQi7AEKH1N0ZWxsYXJDcmVhdGVQYXNzaXZlU2VsbE9mZmVyT3ASFgoOc291cmNlX2FjY291bnQYASABKAkSPwoNc2VsbGluZ19hc3NldBgCIAIoCzIoLmh3LnRyZXpvci5tZXNzYWdlcy5zdGVsbGFyLlN0ZWxsYXJBc3NldBI+CgxidXlpbmdfYXNzZXQYAyACKAsyKC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXQSDgoGYW1vdW50GAQgAigSEg8KB3ByaWNlX24YBSACKA0SDwoHcHJpY2VfZBgGIAIoDSKuAwoTU3RlbGxhclNldE9wdGlvbnNPcBIWCg5zb3VyY2VfYWNjb3VudBgBIAEoCRIlCh1pbmZsYXRpb25fZGVzdGluYXRpb25fYWNjb3VudBgCIAEoCRITCgtjbGVhcl9mbGFncxgDIAEoDRIRCglzZXRfZmxhZ3MYBCABKA0SFQoNbWFzdGVyX3dlaWdodBgFIAEoDRIVCg1sb3dfdGhyZXNob2xkGAYgASgNEhgKEG1lZGl1bV90aHJlc2hvbGQYByABKA0SFgoOaGlnaF90aHJlc2hvbGQYCCABKA0SEwoLaG9tZV9kb21haW4YCSABKAkSVgoLc2lnbmVyX3R5cGUYCiABKA4yQS5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyU2V0T3B0aW9uc09wLlN0ZWxsYXJTaWduZXJUeXBlEhIKCnNpZ25lcl9rZXkYCyABKAwSFQoNc2lnbmVyX3dlaWdodBgMIAEoDSI4ChFTdGVsbGFyU2lnbmVyVHlwZRILCgdBQ0NPVU5UEAASDAoIUFJFX0FVVEgQARIICgRIQVNIEAIidgoUU3RlbGxhckNoYW5nZVRydXN0T3ASFgoOc291cmNlX2FjY291bnQYASABKAkSNwoFYXNzZXQYAiACKAsyKC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXQSDQoFbGltaXQYAyACKAQiswEKE1N0ZWxsYXJBbGxvd1RydXN0T3ASFgoOc291cmNlX2FjY291bnQYASABKAkSFwoPdHJ1c3RlZF9hY2NvdW50GAIgAigJEkAKCmFzc2V0X3R5cGUYAyACKA4yLC5ody50cmV6b3IubWVzc2FnZXMuc3RlbGxhci5TdGVsbGFyQXNzZXRUeXBlEhIKCmFzc2V0X2NvZGUYBCABKAkSFQoNaXNfYXV0aG9yaXplZBgFIAIoCCJMChVTdGVsbGFyQWNjb3VudE1lcmdlT3ASFgoOc291cmNlX2FjY291bnQYASABKAkSGwoTZGVzdGluYXRpb25fYWNjb3VudBgCIAIoCSJJChNTdGVsbGFyTWFuYWdlRGF0YU9wEhYKDnNvdXJjZV9hY2NvdW50GAEgASgJEgsKA2tleRgCIAIoCRINCgV2YWx1ZRgDIAEoDCJAChVTdGVsbGFyQnVtcFNlcXVlbmNlT3ASFgoOc291cmNlX2FjY291bnQYASABKAkSDwoHYnVtcF90bxgCIAIoBCJMCh5TdGVsbGFyQ2xhaW1DbGFpbWFibGVCYWxhbmNlT3ASFgoOc291cmNlX2FjY291bnQYASABKAkSEgoKYmFsYW5jZV9pZBgCIAIoDCI4Cg9TdGVsbGFyU2lnbmVkVHgSEgoKcHVibGljX2tleRgBIAIoDBIRCglzaWduYXR1cmUYAiACKAwqPQoQU3RlbGxhckFzc2V0VHlwZRIKCgZOQVRJVkUQABINCglBTFBIQU5VTTQQARIOCgpBTFBIQU5VTTEyEAJCOwojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCFFRyZXpvck1lc3NhZ2VTdGVsbGFy',\n [file_messages_common],\n);\nexport const StellarAssetSchema = messageDesc(file_messages_stellar, 0);\nexport const StellarGetAddressSchema = messageDesc(file_messages_stellar, 1);\nexport const StellarAddressSchema = messageDesc(file_messages_stellar, 2);\nexport const StellarSignTxSchema = messageDesc(file_messages_stellar, 3);\nexport const StellarSignTx_StellarMemoTypeSchema = enumDesc(file_messages_stellar, 3, 0);\nexport const StellarSignTx_StellarMemoType = tsEnum(StellarSignTx_StellarMemoTypeSchema);\nexport const StellarTxOpRequestSchema = messageDesc(file_messages_stellar, 4);\nexport const StellarPaymentOpSchema = messageDesc(file_messages_stellar, 5);\nexport const StellarCreateAccountOpSchema = messageDesc(file_messages_stellar, 6);\nexport const StellarPathPaymentStrictReceiveOpSchema = messageDesc(file_messages_stellar, 7);\nexport const StellarPathPaymentStrictSendOpSchema = messageDesc(file_messages_stellar, 8);\nexport const StellarManageSellOfferOpSchema = messageDesc(file_messages_stellar, 9);\nexport const StellarManageBuyOfferOpSchema = messageDesc(file_messages_stellar, 10);\nexport const StellarCreatePassiveSellOfferOpSchema = messageDesc(file_messages_stellar, 11);\nexport const StellarSetOptionsOpSchema = messageDesc(file_messages_stellar, 12);\nexport const StellarSetOptionsOp_StellarSignerTypeSchema = enumDesc(file_messages_stellar, 12, 0);\nexport const StellarSetOptionsOp_StellarSignerType = tsEnum(\n StellarSetOptionsOp_StellarSignerTypeSchema,\n);\nexport const StellarChangeTrustOpSchema = messageDesc(file_messages_stellar, 13);\nexport const StellarAllowTrustOpSchema = messageDesc(file_messages_stellar, 14);\nexport const StellarAccountMergeOpSchema = messageDesc(file_messages_stellar, 15);\nexport const StellarManageDataOpSchema = messageDesc(file_messages_stellar, 16);\nexport const StellarBumpSequenceOpSchema = messageDesc(file_messages_stellar, 17);\nexport const StellarClaimClaimableBalanceOpSchema = messageDesc(file_messages_stellar, 18);\nexport const StellarSignedTxSchema = messageDesc(file_messages_stellar, 19);\nexport const StellarAssetTypeSchema = enumDesc(file_messages_stellar, 0);\nexport const StellarAssetType = tsEnum(StellarAssetTypeSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-telemetry.proto (package hw.trezor.messages.telemetry, syntax proto2)\nimport { fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_telemetry = fileDesc(\n 'ChhtZXNzYWdlcy10ZWxlbWV0cnkucHJvdG8SHGh3LnRyZXpvci5tZXNzYWdlcy50ZWxlbWV0cnkiDgoMVGVsZW1ldHJ5R2V0ImMKCVRlbGVtZXRyeRISCgptaW5fdGVtcF9jGAEgASgREhIKCm1heF90ZW1wX2MYAiABKBESFgoOYmF0dGVyeV9lcnJvcnMYAyABKA0SFgoOYmF0dGVyeV9jeWNsZXMYBCABKA1CQQojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCFlRyZXpvck1lc3NhZ2VUZWxlbWV0cnmAph0B',\n [file_options],\n);\nexport const TelemetryGetSchema = messageDesc(file_messages_telemetry, 0);\nexport const TelemetrySchema = messageDesc(file_messages_telemetry, 1);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-tezos.proto (package hw.trezor.messages.tezos, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_tezos = fileDesc(\n 'ChRtZXNzYWdlcy10ZXpvcy5wcm90bxIYaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zIkwKD1Rlem9zR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhAKCGNodW5raWZ5GAMgASgIIiwKDFRlem9zQWRkcmVzcxIPCgdhZGRyZXNzGAEgAigJEgsKA21hYxgCIAEoDCJOChFUZXpvc0dldFB1YmxpY0tleRIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhAKCGNodW5raWZ5GAMgASgIIiQKDlRlem9zUHVibGljS2V5EhIKCnB1YmxpY19rZXkYASACKAkimRAKC1Rlem9zU2lnblR4EhEKCWFkZHJlc3NfbhgBIAMoDRIOCgZicmFuY2gYAiACKAwSQwoGcmV2ZWFsGAMgASgLMjMuaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zLlRlem9zU2lnblR4LlRlem9zUmV2ZWFsT3ASTQoLdHJhbnNhY3Rpb24YBCABKAsyOC5ody50cmV6b3IubWVzc2FnZXMudGV6b3MuVGV6b3NTaWduVHguVGV6b3NUcmFuc2FjdGlvbk9wEk0KC29yaWdpbmF0aW9uGAUgASgLMjguaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zLlRlem9zU2lnblR4LlRlem9zT3JpZ2luYXRpb25PcBJLCgpkZWxlZ2F0aW9uGAYgASgLMjcuaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zLlRlem9zU2lnblR4LlRlem9zRGVsZWdhdGlvbk9wEkcKCHByb3Bvc2FsGAcgASgLMjUuaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zLlRlem9zU2lnblR4LlRlem9zUHJvcG9zYWxPcBJDCgZiYWxsb3QYCCABKAsyMy5ody50cmV6b3IubWVzc2FnZXMudGV6b3MuVGV6b3NTaWduVHguVGV6b3NCYWxsb3RPcBIQCghjaHVua2lmeRgJIAEoCBqoAQoPVGV6b3NDb250cmFjdElEElQKA3RhZxgBIAIoDjJHLmh3LnRyZXpvci5tZXNzYWdlcy50ZXpvcy5UZXpvc1NpZ25UeC5UZXpvc0NvbnRyYWN0SUQuVGV6b3NDb250cmFjdFR5cGUSDAoEaGFzaBgCIAIoDCIxChFUZXpvc0NvbnRyYWN0VHlwZRIMCghJbXBsaWNpdBAAEg4KCk9yaWdpbmF0ZWQQARp7Cg1UZXpvc1JldmVhbE9wEg4KBnNvdXJjZRgHIAIoDBILCgNmZWUYAiACKAQSDwoHY291bnRlchgDIAIoBBIRCglnYXNfbGltaXQYBCACKAQSFQoNc3RvcmFnZV9saW1pdBgFIAIoBBISCgpwdWJsaWNfa2V5GAYgAigMGv8EChJUZXpvc1RyYW5zYWN0aW9uT3ASDgoGc291cmNlGAkgAigMEgsKA2ZlZRgCIAIoBBIPCgdjb3VudGVyGAMgAigEEhEKCWdhc19saW1pdBgEIAIoBBIVCg1zdG9yYWdlX2xpbWl0GAUgAigEEg4KBmFtb3VudBgGIAIoBBJKCgtkZXN0aW5hdGlvbhgHIAIoCzI1Lmh3LnRyZXpvci5tZXNzYWdlcy50ZXpvcy5UZXpvc1NpZ25UeC5UZXpvc0NvbnRyYWN0SUQSEgoKcGFyYW1ldGVycxgIIAEoDBJrChJwYXJhbWV0ZXJzX21hbmFnZXIYCiABKAsyTy5ody50cmV6b3IubWVzc2FnZXMudGV6b3MuVGV6b3NTaWduVHguVGV6b3NUcmFuc2FjdGlvbk9wLlRlem9zUGFyYW1ldGVyc01hbmFnZXIaswIKFlRlem9zUGFyYW1ldGVyc01hbmFnZXISFAoMc2V0X2RlbGVnYXRlGAEgASgMEhcKD2NhbmNlbF9kZWxlZ2F0ZRgCIAEoCBJ2Cgh0cmFuc2ZlchgDIAEoCzJkLmh3LnRyZXpvci5tZXNzYWdlcy50ZXpvcy5UZXpvc1NpZ25UeC5UZXpvc1RyYW5zYWN0aW9uT3AuVGV6b3NQYXJhbWV0ZXJzTWFuYWdlci5UZXpvc01hbmFnZXJUcmFuc2ZlchpyChRUZXpvc01hbmFnZXJUcmFuc2ZlchJKCgtkZXN0aW5hdGlvbhgBIAIoCzI1Lmh3LnRyZXpvci5tZXNzYWdlcy50ZXpvcy5UZXpvc1NpZ25UeC5UZXpvc0NvbnRyYWN0SUQSDgoGYW1vdW50GAIgAigEGt8BChJUZXpvc09yaWdpbmF0aW9uT3ASDgoGc291cmNlGAwgAigMEgsKA2ZlZRgCIAIoBBIPCgdjb3VudGVyGAMgAigEEhEKCWdhc19saW1pdBgEIAIoBBIVCg1zdG9yYWdlX2xpbWl0GAUgAigEEhYKDm1hbmFnZXJfcHVia2V5GAYgASgMEg8KB2JhbGFuY2UYByACKAQSEQoJc3BlbmRhYmxlGAggASgIEhMKC2RlbGVnYXRhYmxlGAkgASgIEhAKCGRlbGVnYXRlGAogASgMEg4KBnNjcmlwdBgLIAIoDBp9ChFUZXpvc0RlbGVnYXRpb25PcBIOCgZzb3VyY2UYByACKAwSCwoDZmVlGAIgAigEEg8KB2NvdW50ZXIYAyACKAQSEQoJZ2FzX2xpbWl0GAQgAigEEhUKDXN0b3JhZ2VfbGltaXQYBSACKAQSEAoIZGVsZWdhdGUYBiACKAwaRAoPVGV6b3NQcm9wb3NhbE9wEg4KBnNvdXJjZRgBIAIoDBIOCgZwZXJpb2QYAiACKAQSEQoJcHJvcG9zYWxzGAQgAygMGsUBCg1UZXpvc0JhbGxvdE9wEg4KBnNvdXJjZRgBIAIoDBIOCgZwZXJpb2QYAiACKAQSEAoIcHJvcG9zYWwYAyACKAwSUwoGYmFsbG90GAQgAigOMkMuaHcudHJlem9yLm1lc3NhZ2VzLnRlem9zLlRlem9zU2lnblR4LlRlem9zQmFsbG90T3AuVGV6b3NCYWxsb3RUeXBlIi0KD1Rlem9zQmFsbG90VHlwZRIHCgNZYXkQABIHCgNOYXkQARIICgRQYXNzEAIiUwoNVGV6b3NTaWduZWRUeBIRCglzaWduYXR1cmUYASACKAkSFwoPc2lnX29wX2NvbnRlbnRzGAIgAigMEhYKDm9wZXJhdGlvbl9oYXNoGAMgAigJQjkKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhJUcmV6b3JNZXNzYWdlVGV6b3M',\n);\nexport const TezosGetAddressSchema = messageDesc(file_messages_tezos, 0);\nexport const TezosAddressSchema = messageDesc(file_messages_tezos, 1);\nexport const TezosGetPublicKeySchema = messageDesc(file_messages_tezos, 2);\nexport const TezosPublicKeySchema = messageDesc(file_messages_tezos, 3);\nexport const TezosSignTxSchema = messageDesc(file_messages_tezos, 4);\nexport const TezosSignTx_TezosContractIDSchema = messageDesc(file_messages_tezos, 4, 0);\nexport const TezosSignTx_TezosContractID_TezosContractTypeSchema = enumDesc(\n file_messages_tezos,\n 4,\n 0,\n 0,\n);\nexport const TezosSignTx_TezosContractID_TezosContractType = tsEnum(\n TezosSignTx_TezosContractID_TezosContractTypeSchema,\n);\nexport const TezosSignTx_TezosRevealOpSchema = messageDesc(file_messages_tezos, 4, 1);\nexport const TezosSignTx_TezosTransactionOpSchema = messageDesc(file_messages_tezos, 4, 2);\nexport const TezosSignTx_TezosTransactionOp_TezosParametersManagerSchema = messageDesc(\n file_messages_tezos,\n 4,\n 2,\n 0,\n);\nexport const TezosSignTx_TezosTransactionOp_TezosParametersManager_TezosManagerTransferSchema =\n messageDesc(file_messages_tezos, 4, 2, 0, 0);\nexport const TezosSignTx_TezosOriginationOpSchema = messageDesc(file_messages_tezos, 4, 3);\nexport const TezosSignTx_TezosDelegationOpSchema = messageDesc(file_messages_tezos, 4, 4);\nexport const TezosSignTx_TezosProposalOpSchema = messageDesc(file_messages_tezos, 4, 5);\nexport const TezosSignTx_TezosBallotOpSchema = messageDesc(file_messages_tezos, 4, 6);\nexport const TezosSignTx_TezosBallotOp_TezosBallotTypeSchema = enumDesc(\n file_messages_tezos,\n 4,\n 6,\n 0,\n);\nexport const TezosSignTx_TezosBallotOp_TezosBallotType = tsEnum(\n TezosSignTx_TezosBallotOp_TezosBallotTypeSchema,\n);\nexport const TezosSignedTxSchema = messageDesc(file_messages_tezos, 5);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-thp.proto (package hw.trezor.messages.thp, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\n\nimport { file_options } from './options_pb';\nexport const file_messages_thp = fileDesc(\n 'ChJtZXNzYWdlcy10aHAucHJvdG8SFmh3LnRyZXpvci5tZXNzYWdlcy50aHAiygEKE1RocERldmljZVByb3BlcnRpZXMSFgoOaW50ZXJuYWxfbW9kZWwYASACKAkSGAoNbW9kZWxfdmFyaWFudBgCIAEoDToBMBIeChZwcm90b2NvbF92ZXJzaW9uX21ham9yGAMgAigNEh4KFnByb3RvY29sX3ZlcnNpb25fbWlub3IYBCACKA0SQQoPcGFpcmluZ19tZXRob2RzGAUgAygOMiguaHcudHJlem9yLm1lc3NhZ2VzLnRocC5UaHBQYWlyaW5nTWV0aG9kIkgKJVRocEhhbmRzaGFrZUNvbXBsZXRpb25SZXFOb2lzZVBheWxvYWQSHwoXaG9zdF9wYWlyaW5nX2NyZWRlbnRpYWwYASABKAwiYgoTVGhwQ3JlYXRlTmV3U2Vzc2lvbhISCgpwYXNzcGhyYXNlGAEgASgJEhgKCW9uX2RldmljZRgCIAEoCDoFZmFsc2USHQoOZGVyaXZlX2NhcmRhbm8YAyABKAg6BWZhbHNlIjgKEVRocFBhaXJpbmdSZXF1ZXN0EhEKCWhvc3RfbmFtZRgBIAIoCRIQCghhcHBfbmFtZRgCIAIoCSIbChlUaHBQYWlyaW5nUmVxdWVzdEFwcHJvdmVkIlwKD1RocFNlbGVjdE1ldGhvZBJJChdzZWxlY3RlZF9wYWlyaW5nX21ldGhvZBgBIAIoDjIoLmh3LnRyZXpvci5tZXNzYWdlcy50aHAuVGhwUGFpcmluZ01ldGhvZCIgCh5UaHBQYWlyaW5nUHJlcGFyYXRpb25zRmluaXNoZWQiLAoWVGhwQ29kZUVudHJ5Q29tbWl0bWVudBISCgpjb21taXRtZW50GAEgAigMIioKFVRocENvZGVFbnRyeUNoYWxsZW5nZRIRCgljaGFsbGVuZ2UYASACKAwiOgoXVGhwQ29kZUVudHJ5Q3BhY2VUcmV6b3ISHwoXY3BhY2VfdHJlem9yX3B1YmxpY19rZXkYASACKAwiRgoYVGhwQ29kZUVudHJ5Q3BhY2VIb3N0VGFnEh0KFWNwYWNlX2hvc3RfcHVibGljX2tleRgBIAIoDBILCgN0YWcYAiACKAwiJAoSVGhwQ29kZUVudHJ5U2VjcmV0Eg4KBnNlY3JldBgBIAIoDCIbCgxUaHBRckNvZGVUYWcSCwoDdGFnGAEgAigMIiEKD1RocFFyQ29kZVNlY3JldBIOCgZzZWNyZXQYASACKAwiHAoNVGhwTmZjVGFnSG9zdBILCgN0YWcYASACKAwiHgoPVGhwTmZjVGFnVHJlem9yEgsKA3RhZxgBIAIoDCJmChRUaHBDcmVkZW50aWFsUmVxdWVzdBIeChZob3N0X3N0YXRpY19wdWJsaWNfa2V5GAEgAigMEhoKC2F1dG9jb25uZWN0GAIgASgIOgVmYWxzZRISCgpjcmVkZW50aWFsGAMgASgMIk0KFVRocENyZWRlbnRpYWxSZXNwb25zZRIgChh0cmV6b3Jfc3RhdGljX3B1YmxpY19rZXkYASACKAwSEgoKY3JlZGVudGlhbBgCIAIoDCIPCg1UaHBFbmRSZXF1ZXN0IhAKDlRocEVuZFJlc3BvbnNlIlcKFVRocENyZWRlbnRpYWxNZXRhZGF0YRIRCglob3N0X25hbWUYASACKAkSEwoLYXV0b2Nvbm5lY3QYAiABKAgSEAoIYXBwX25hbWUYAyACKAk6BJiyGQEibwoUVGhwUGFpcmluZ0NyZWRlbnRpYWwSRAoNY3JlZF9tZXRhZGF0YRgBIAIoCzItLmh3LnRyZXpvci5tZXNzYWdlcy50aHAuVGhwQ3JlZGVudGlhbE1ldGFkYXRhEgsKA21hYxgCIAIoDDoEmLIZASKMAQoeVGhwQXV0aGVudGljYXRlZENyZWRlbnRpYWxEYXRhEh4KFmhvc3Rfc3RhdGljX3B1YmxpY19rZXkYASACKAwSRAoNY3JlZF9tZXRhZGF0YRgCIAIoCzItLmh3LnRyZXpvci5tZXNzYWdlcy50aHAuVGhwQ3JlZGVudGlhbE1ldGFkYXRhOgSYshkBIrcBCg5UaHBQYWlyZWRDYWNoZRJLCgdlbnRyaWVzGAEgAygLMjouaHcudHJlem9yLm1lc3NhZ2VzLnRocC5UaHBQYWlyZWRDYWNoZS5UaHBQYWlyZWRDYWNoZUVudHJ5GlIKE1RocFBhaXJlZENhY2hlRW50cnkSEAoIbWFjX2FkZHIYASACKAwSEQoJaG9zdF9uYW1lGAIgAigJEhAKCGFwcF9uYW1lGAMgAigJOgSYshkBOgSYshkBKukHCg5UaHBNZXNzYWdlVHlwZRIZChVUaHBNZXNzYWdlVHlwZV9DYW5jZWwQFBIgChxUaHBNZXNzYWdlVHlwZV9CdXR0b25SZXF1ZXN0EBoSHAoYVGhwTWVzc2FnZVR5cGVfQnV0dG9uQWNrEBsSKwogVGhwTWVzc2FnZVR5cGVfVGhwUGFpcmluZ1JlcXVlc3QQ8AcaBJC1GAESMwooVGhwTWVzc2FnZVR5cGVfVGhwUGFpcmluZ1JlcXVlc3RBcHByb3ZlZBDxBxoEmLUYARIpCh5UaHBNZXNzYWdlVHlwZV9UaHBTZWxlY3RNZXRob2QQ8gcaBJC1GAESOAotVGhwTWVzc2FnZVR5cGVfVGhwUGFpcmluZ1ByZXBhcmF0aW9uc0ZpbmlzaGVkEPMHGgSYtRgBEjIKI1RocE1lc3NhZ2VUeXBlX1RocENyZWRlbnRpYWxSZXF1ZXN0EPgHGgiQtRgBgKYdARIzCiRUaHBNZXNzYWdlVHlwZV9UaHBDcmVkZW50aWFsUmVzcG9uc2UQ+QcaCJi1GAGAph0BEicKHFRocE1lc3NhZ2VUeXBlX1RocEVuZFJlcXVlc3QQ+gcaBJC1GAESKAodVGhwTWVzc2FnZVR5cGVfVGhwRW5kUmVzcG9uc2UQ+wcaBJi1GAESMAolVGhwTWVzc2FnZVR5cGVfVGhwQ29kZUVudHJ5Q29tbWl0bWVudBCACBoEmLUYARIvCiRUaHBNZXNzYWdlVHlwZV9UaHBDb2RlRW50cnlDaGFsbGVuZ2UQgQgaBJC1GAESMQomVGhwTWVzc2FnZVR5cGVfVGhwQ29kZUVudHJ5Q3BhY2VUcmV6b3IQgggaBJi1GAESMgonVGhwTWVzc2FnZVR5cGVfVGhwQ29kZUVudHJ5Q3BhY2VIb3N0VGFnEIMIGgSQtRgBEiwKIVRocE1lc3NhZ2VUeXBlX1RocENvZGVFbnRyeVNlY3JldBCECBoEmLUYARImChtUaHBNZXNzYWdlVHlwZV9UaHBRckNvZGVUYWcQiAgaBJC1GAESKQoeVGhwTWVzc2FnZVR5cGVfVGhwUXJDb2RlU2VjcmV0EIkIGgSYtRgBEicKHFRocE1lc3NhZ2VUeXBlX1RocE5mY1RhZ0hvc3QQkAgaBJC1GAESKQoeVGhwTWVzc2FnZVR5cGVfVGhwTmZjVGFnVHJlem9yEJEIGgSYtRgBGgTQ8xgBIgQIABATIgQIFRAZIgUIHBDnByIGCOgHEOgHIgYI6QcQ7wciBgj0BxD3ByIGCPwHEP8HIgYIhQgQhwgiBgiKCBCPCCIGCJIIEMsIIgkIzAgQ/////wcqRwoQVGhwUGFpcmluZ01ldGhvZBIPCgtTa2lwUGFpcmluZxABEg0KCUNvZGVFbnRyeRACEgoKBlFyQ29kZRADEgcKA05GQxAEQjsKI2NvbS5zYXRvc2hpbGFicy50cmV6b3IubGliLnByb3RvYnVmQhBUcmV6b3JNZXNzYWdlVGhwgKYdAQ',\n [file_options],\n);\nexport const ThpDevicePropertiesSchema = messageDesc(file_messages_thp, 0);\nexport const ThpHandshakeCompletionReqNoisePayloadSchema = messageDesc(file_messages_thp, 1);\nexport const ThpCreateNewSessionSchema = messageDesc(file_messages_thp, 2);\nexport const ThpPairingRequestSchema = messageDesc(file_messages_thp, 3);\nexport const ThpPairingRequestApprovedSchema = messageDesc(file_messages_thp, 4);\nexport const ThpSelectMethodSchema = messageDesc(file_messages_thp, 5);\nexport const ThpPairingPreparationsFinishedSchema = messageDesc(file_messages_thp, 6);\nexport const ThpCodeEntryCommitmentSchema = messageDesc(file_messages_thp, 7);\nexport const ThpCodeEntryChallengeSchema = messageDesc(file_messages_thp, 8);\nexport const ThpCodeEntryCpaceTrezorSchema = messageDesc(file_messages_thp, 9);\nexport const ThpCodeEntryCpaceHostTagSchema = messageDesc(file_messages_thp, 10);\nexport const ThpCodeEntrySecretSchema = messageDesc(file_messages_thp, 11);\nexport const ThpQrCodeTagSchema = messageDesc(file_messages_thp, 12);\nexport const ThpQrCodeSecretSchema = messageDesc(file_messages_thp, 13);\nexport const ThpNfcTagHostSchema = messageDesc(file_messages_thp, 14);\nexport const ThpNfcTagTrezorSchema = messageDesc(file_messages_thp, 15);\nexport const ThpCredentialRequestSchema = messageDesc(file_messages_thp, 16);\nexport const ThpCredentialResponseSchema = messageDesc(file_messages_thp, 17);\nexport const ThpEndRequestSchema = messageDesc(file_messages_thp, 18);\nexport const ThpEndResponseSchema = messageDesc(file_messages_thp, 19);\nexport const ThpCredentialMetadataSchema = messageDesc(file_messages_thp, 20);\nexport const ThpPairingCredentialSchema = messageDesc(file_messages_thp, 21);\nexport const ThpAuthenticatedCredentialDataSchema = messageDesc(file_messages_thp, 22);\nexport const ThpPairedCacheSchema = messageDesc(file_messages_thp, 23);\nexport const ThpPairedCache_ThpPairedCacheEntrySchema = messageDesc(file_messages_thp, 23, 0);\nexport const ThpMessageTypeSchema = enumDesc(file_messages_thp, 0);\nexport const ThpMessageType = tsEnum(ThpMessageTypeSchema);\nexport const ThpPairingMethodSchema = enumDesc(file_messages_thp, 1);\nexport const ThpPairingMethod = tsEnum(ThpPairingMethodSchema);\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=js,json_types=true\"\n// @generated from file messages-tron.proto (package hw.trezor.messages.tron, syntax proto2)\nimport { enumDesc, fileDesc, messageDesc, tsEnum } from '@bufbuild/protobuf/codegenv2';\nexport const file_messages_tron = fileDesc(\n 'ChNtZXNzYWdlcy10cm9uLnByb3RvEhdody50cmV6b3IubWVzc2FnZXMudHJvbiJLCg5Ucm9uR2V0QWRkcmVzcxIRCglhZGRyZXNzX24YASADKA0SFAoMc2hvd19kaXNwbGF5GAIgASgIEhAKCGNodW5raWZ5GAMgASgIIisKC1Ryb25BZGRyZXNzEg8KB2FkZHJlc3MYASACKAkSCwoDbWFjGAIgASgMIpgBCgpUcm9uU2lnblR4EhEKCWFkZHJlc3NfbhgBIAMoDRIXCg9yZWZfYmxvY2tfYnl0ZXMYAiACKAwSFgoOcmVmX2Jsb2NrX2hhc2gYAyACKAwSEgoKZXhwaXJhdGlvbhgEIAIoBBIMCgRkYXRhGAUgASgMEhEKCXRpbWVzdGFtcBgGIAIoBBIRCglmZWVfbGltaXQYByABKAQiFQoTVHJvbkNvbnRyYWN0UmVxdWVzdCJRChRUcm9uVHJhbnNmZXJDb250cmFjdBIVCg1vd25lcl9hZGRyZXNzGAEgAigMEhIKCnRvX2FkZHJlc3MYAiACKAwSDgoGYW1vdW50GAMgAigEIqYBChdUcm9uVm90ZVdpdG5lc3NDb250cmFjdBIVCg1vd25lcl9hZGRyZXNzGAEgAigMEkgKBXZvdGVzGAIgAygLMjkuaHcudHJlem9yLm1lc3NhZ2VzLnRyb24uVHJvblZvdGVXaXRuZXNzQ29udHJhY3QuVHJvblZvdGUaKgoIVHJvblZvdGUSDwoHYWRkcmVzcxgBIAIoDBINCgVjb3VudBgCIAIoBCJZChhUcm9uVHJpZ2dlclNtYXJ0Q29udHJhY3QSFQoNb3duZXJfYWRkcmVzcxgBIAIoDBIYChBjb250cmFjdF9hZGRyZXNzGAIgAigMEgwKBGRhdGEYBCACKAwijQEKG1Ryb25GcmVlemVCYWxhbmNlVjJDb250cmFjdBIVCg1vd25lcl9hZGRyZXNzGAEgAigMEg8KB2JhbGFuY2UYAiACKAQSRgoIcmVzb3VyY2UYAyABKA4yKS5ody50cmV6b3IubWVzc2FnZXMudHJvbi5Ucm9uUmVzb3VyY2VDb2RlOglCQU5EV0lEVEgijwEKHVRyb25VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0EhUKDW93bmVyX2FkZHJlc3MYASACKAwSDwoHYmFsYW5jZRgCIAIoBBJGCghyZXNvdXJjZRgDIAEoDjIpLmh3LnRyZXpvci5tZXNzYWdlcy50cm9uLlRyb25SZXNvdXJjZUNvZGU6CUJBTkRXSURUSCItChRUcm9uV2l0aGRyYXdVbmZyZWV6ZRIVCg1vd25lcl9hZGRyZXNzGAEgAigMIiIKDVRyb25TaWduYXR1cmUSEQoJc2lnbmF0dXJlGAEgAigMIqYFChJUcm9uUmF3VHJhbnNhY3Rpb24SFwoPcmVmX2Jsb2NrX2J5dGVzGAEgAigMEhYKDnJlZl9ibG9ja19oYXNoGAQgAigMEhIKCmV4cGlyYXRpb24YCCACKAQSDAoEZGF0YRgKIAEoDBJNCghjb250cmFjdBgLIAMoCzI7Lmh3LnRyZXpvci5tZXNzYWdlcy50cm9uLlRyb25SYXdUcmFuc2FjdGlvbi5Ucm9uUmF3Q29udHJhY3QSEQoJdGltZXN0YW1wGA4gAigEEhEKCWZlZV9saW1pdBgSIAEoBBrHAwoPVHJvblJhd0NvbnRyYWN0El0KBHR5cGUYASACKA4yTy5ody50cmV6b3IubWVzc2FnZXMudHJvbi5Ucm9uUmF3VHJhbnNhY3Rpb24uVHJvblJhd0NvbnRyYWN0LlRyb25SYXdDb250cmFjdFR5cGUSXwoJcGFyYW1ldGVyGAIgAigLMkwuaHcudHJlem9yLm1lc3NhZ2VzLnRyb24uVHJvblJhd1RyYW5zYWN0aW9uLlRyb25SYXdDb250cmFjdC5Ucm9uUmF3UGFyYW1ldGVyGjMKEFRyb25SYXdQYXJhbWV0ZXISEAoIdHlwZV91cmwYASACKAkSDQoFdmFsdWUYAiACKAwivgEKE1Ryb25SYXdDb250cmFjdFR5cGUSFAoQVHJhbnNmZXJDb250cmFjdBABEhcKE1ZvdGVXaXRuZXNzQ29udHJhY3QQBBIYChRUcmlnZ2VyU21hcnRDb250cmFjdBAfEhsKF0ZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0EDYSHQoZVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdBA3EiIKHldpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdBA4Ki0KEFRyb25SZXNvdXJjZUNvZGUSDQoJQkFORFdJRFRIEAASCgoGRU5FUkdZEAFCOAojY29tLnNhdG9zaGlsYWJzLnRyZXpvci5saWIucHJvdG9idWZCEVRyZXpvck1lc3NhZ2VUcm9u',\n);\nexport const TronGetAddressSchema = messageDesc(file_messages_tron, 0);\nexport const TronAddressSchema = messageDesc(file_messages_tron, 1);\nexport const TronSignTxSchema = messageDesc(file_messages_tron, 2);\nexport const TronContractRequestSchema = messageDesc(file_messages_tron, 3);\nexport const TronTransferContractSchema = messageDesc(file_messages_tron, 4);\nexport const TronVoteWitnessContractSchema = messageDesc(file_messages_tron, 5);\nexport const TronVoteWitnessContract_TronVoteSchema = messageDesc(file_messages_tron, 5, 0);\nexport const TronTriggerSmartContractSchema = messageDesc(file_messages_tron, 6);\nexport const TronFreezeBalanceV2ContractSchema = messageDesc(file_messages_tron, 7);\nexport const TronUnfreezeBalanceV2ContractSchema = messageDesc(file_messages_tron, 8);\nexport const TronWithdrawUnfreezeSchema = messageDesc(file_messages_tron, 9);\nexport const TronSignatureSchema = messageDesc(file_messages_tron, 10);\nexport const TronRawTransactionSchema = messageDesc(file_messages_tron, 11);\nexport const TronRawTransaction_TronRawContractSchema = messageDesc(file_messages_tron, 11, 0);\nexport const TronRawTransaction_TronRawContract_TronRawParameterSchema = messageDesc(\n file_messages_tron,\n 11,\n 0,\n 0,\n);\nexport const TronRawTransaction_TronRawContract_TronRawContractTypeSchema = enumDesc(\n file_messages_tron,\n 11,\n 0,\n 0,\n);\nexport const TronRawTransaction_TronRawContract_TronRawContractType = tsEnum(\n TronRawTransaction_TronRawContract_TronRawContractTypeSchema,\n);\nexport const TronResourceCodeSchema = enumDesc(file_messages_tron, 0);\nexport const TronResourceCode = tsEnum(TronResourceCodeSchema);\n","export * as v1 from './protocol-v1';\nexport * as v2 from './protocol-v2';\nexport * as bridge from './protocol-bridge';\nexport * as thp from './protocol-thp';\nexport * as trzd from './protocol-trzd';\nexport * as tpn from './protocol-tpn';\nexport * from './errors';\nexport * from './protocol-v2/constants';\nexport * from './types';\n","export * from './decode';\nexport * from './encode';\nexport const name = 'v1';\n","import { PROTOCOL_MALFORMED } from '../errors';\nimport { HEADER_SIZE, MESSAGE_HEADER_BYTE, MESSAGE_MAGIC_HEADER_BYTE } from './constants';\nimport { type TransportProtocolDecode } from '../types';\n\n/**\n * Reads meta information from chunked buffer\n */\nconst readHeaderChunked = (buffer: Buffer) => {\n // 1 byte\n const magic = buffer.readUInt8();\n // 1 byte\n const sharp1 = buffer.readUInt8(1);\n // 1 byte\n const sharp2 = buffer.readUInt8(2);\n // 2 bytes\n const messageType = buffer.readUInt16BE(3);\n // 4 bytes\n const length = buffer.readUInt32BE(5);\n\n return { magic, sharp1, sharp2, messageType, length };\n};\n\n// Parses first raw input that comes from Trezor and returns some information about the whole message.\nexport const decode: TransportProtocolDecode = bytes => {\n // note: the occasionally appearing error \"Attempt to access memory outside buffer bounds\" comes from here in certain cases\n // when usb.transferIn (read) did not receive any data but resolved with success. bytes has byteLength 0 in this case.\n if (bytes.byteLength === 0) {\n console.error('protocol-v1: decode: received empty buffer');\n }\n\n if (bytes.byteLength < HEADER_SIZE) {\n throw new Error(PROTOCOL_MALFORMED);\n }\n\n const { magic, sharp1, sharp2, messageType, length } = readHeaderChunked(bytes);\n\n if (\n magic !== MESSAGE_MAGIC_HEADER_BYTE ||\n sharp1 !== MESSAGE_HEADER_BYTE ||\n sharp2 !== MESSAGE_HEADER_BYTE\n ) {\n // read-write is out of sync\n throw new Error(PROTOCOL_MALFORMED);\n }\n\n return {\n header: bytes.subarray(0, 3),\n length,\n messageType,\n payload: bytes.subarray(HEADER_SIZE),\n };\n};\n","export const PROTOCOL_MALFORMED = 'Malformed protocol format' as const;\nexport const PROTOCOL_MISSMATCH_VERSION = 'Protocol missmatch version' as const;\n","export const MESSAGE_MAGIC_HEADER_BYTE = 63;\nexport const MESSAGE_HEADER_BYTE = 0x23;\nexport const HEADER_SIZE = 1 + 1 + 1 + 2 + 4; // MESSAGE_MAGIC_HEADER_BYTE + MESSAGE_HEADER_BYTE + MESSAGE_HEADER_BYTE + messageType + dataLength\n","import { HEADER_SIZE, MESSAGE_HEADER_BYTE, MESSAGE_MAGIC_HEADER_BYTE } from './constants';\nimport { type TransportProtocol } from '../types';\n\n// header: 3f2323 `?##` and chunkHeader: 3f `?`\nexport const getHeaders: TransportProtocol['getHeaders'] = () => {\n const header = Buffer.alloc(3);\n // 1 byte\n header.writeUInt8(MESSAGE_MAGIC_HEADER_BYTE, 0);\n // 2*1 byte\n header.writeUInt8(MESSAGE_HEADER_BYTE, 1);\n header.writeUInt8(MESSAGE_HEADER_BYTE, 2);\n\n const chunkHeader = Buffer.alloc(1);\n chunkHeader.writeUInt8(MESSAGE_MAGIC_HEADER_BYTE);\n\n return [header, chunkHeader];\n};\n\nexport const encode: TransportProtocol['encode'] = (data, options) => {\n const { messageType } = options;\n const fullSize = HEADER_SIZE + data.length;\n\n const encodedBuffer = Buffer.alloc(fullSize);\n const [header] = getHeaders(data);\n header.copy(encodedBuffer);\n\n // 2 bytes\n encodedBuffer.writeUInt16BE(messageType, 3);\n\n // 4 bytes (so 9 in total)\n encodedBuffer.writeUInt32BE(data.length, 5);\n\n // then put in the actual message\n data.copy(encodedBuffer, HEADER_SIZE);\n\n return encodedBuffer;\n};\n","export * from './decode';\nexport * from './encode';\nexport const name = 'v2';\n","import * as ERRORS from '../errors';\nimport { HEADER_SIZE, MESSAGE_LEN_SIZE, THP_CONTROL_BYTE } from './constants';\nimport { getHeaders } from './encode';\nimport { type TransportProtocolDecode } from '../types';\n\n// TODO: link-to-public-docs\n// https://github.com/trezor/trezor-firmware/blob/m1nd3r/thp-documentation/docs/common/thp/specification.md#transport-packet-structure\nexport const decodeCtrlByte = (ctrlByte: number) => {\n // DATA message\n const dataType = ctrlByte & 0xe7;\n switch (dataType) {\n case THP_CONTROL_BYTE.HANDSHAKE_COMP_REQ:\n case THP_CONTROL_BYTE.HANDSHAKE_COMP_RES:\n case THP_CONTROL_BYTE.HANDSHAKE_INIT_REQ:\n case THP_CONTROL_BYTE.HANDSHAKE_INIT_RES:\n case THP_CONTROL_BYTE.ENCRYPTED:\n return dataType;\n }\n\n // ACK message\n const ackType = ctrlByte & 0xf7;\n if (ackType === THP_CONTROL_BYTE.ACK_MESSAGE) {\n return ackType;\n }\n\n // Unmasked message\n switch (ctrlByte) {\n case THP_CONTROL_BYTE.CHANNEL_ALLOCATION_REQ:\n case THP_CONTROL_BYTE.CHANNEL_ALLOCATION_RES:\n case THP_CONTROL_BYTE.PING:\n case THP_CONTROL_BYTE.PONG:\n case THP_CONTROL_BYTE.ERROR:\n return ctrlByte;\n }\n\n return undefined;\n};\n\n// Parses raw input from Trezor and returns some information about the whole message\nexport const decode: TransportProtocolDecode = bytes => {\n const buffer = Buffer.from(bytes);\n\n // chunk should have at least 5 bytes. 3 bytes `header` + 2 bytes `length`\n if (buffer.byteLength < HEADER_SIZE + MESSAGE_LEN_SIZE) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n\n const messageType = decodeCtrlByte(buffer.readUInt8());\n if (messageType === undefined) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n\n const [header, chunkHeader] = getHeaders(buffer);\n\n return {\n header,\n chunkHeader,\n length: buffer.readUint16BE(HEADER_SIZE),\n messageType,\n payload: buffer.subarray(HEADER_SIZE + MESSAGE_LEN_SIZE),\n };\n};\n","export const HEADER_SIZE = 1 + 2; // 1: control_byte + 2: channel\nexport const MESSAGE_LEN_SIZE = 2;\n\n// https://github.com/trezor/trezor-firmware/blob/dc7dccfa6c6121333f732c39565878fc46e67085/core/src/trezor/wire/thp/__init__.py\nexport const THP_CONTROL_BYTE = {\n HANDSHAKE_INIT_REQ: 0x00, // out\n HANDSHAKE_INIT_RES: 0x01, // in\n HANDSHAKE_COMP_REQ: 0x02, // out\n HANDSHAKE_COMP_RES: 0x03, // in\n ENCRYPTED: 0x04, // in / out\n ACK_MESSAGE: 0x20, // in / out\n CHANNEL_ALLOCATION_REQ: 0x40, // out\n CHANNEL_ALLOCATION_RES: 0x41, // in\n ERROR: 0x42, // in\n PING: 0x43, // out\n PONG: 0x44, // in\n CONTINUATION_PACKET: 0x80, // in / out\n};\n","import * as ERRORS from '../errors';\nimport { HEADER_SIZE, MESSAGE_LEN_SIZE, THP_CONTROL_BYTE } from './constants';\nimport { type TransportProtocol } from '../types';\n\nconst getChunkHeader = (data: Buffer) => {\n // data should have at least 1 control_byte + 2 bytes channel\n if (data.byteLength < HEADER_SIZE) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n\n const channel = data.subarray(1, HEADER_SIZE);\n const header = Buffer.concat([Buffer.from([THP_CONTROL_BYTE.CONTINUATION_PACKET]), channel]);\n\n return header;\n};\n\nexport const getHeaders: TransportProtocol['getHeaders'] = data => {\n const chunkHeader = getChunkHeader(data);\n\n return [data.subarray(0, HEADER_SIZE), chunkHeader];\n};\n\n// encode `protocol-thp` message\nexport const encode: TransportProtocol['encode'] = (data, options) => {\n if (!options.header || options.header.byteLength !== HEADER_SIZE) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n\n const length = Buffer.alloc(MESSAGE_LEN_SIZE);\n length.writeUInt16BE(data.length);\n\n return Buffer.concat([options.header, length, data]);\n};\n","export * from './decode';\nexport * from './encode';\nexport * from './messages';\nexport * from './utils';\nexport * as constants from './constants';\n\nexport {\n getCpaceHostKeys,\n getSharedSecret,\n getHandshakeHash,\n handleHandshakeInit,\n validateCodeEntryTag,\n validateQrCodeTag,\n validateNfcTag,\n} from './crypto/pairing';\nexport { ThpState } from './ThpState';\nexport { getCurve25519KeyPair } from './crypto/curve25519';\nexport { getThpPairingMethod } from './utils';\n\nexport const name = 'thp';\n","import { type ThpState } from './ThpState';\nimport { CRC_LENGTH, TAG_LENGTH } from './constants';\nimport { aesgcm } from './crypto';\nimport { THP_CONTROL_BYTE } from '../protocol-v2/constants';\nimport { type TransportProtocolDecode } from '../types';\nimport { crc32 } from './crypto/crc32';\nimport { getHandshakeHash, getTrezorState } from './crypto/pairing';\nimport { getIvFromNonce } from './crypto/tools';\nimport { type ThpDeviceProperties, type ThpError, type ThpMessageResponse } from './messages';\n\ntype ThpMessage = ReturnType<TransportProtocolDecode> & {\n thpState: ThpState;\n};\n\n// @trezor/protobuf decodeMessage without direct reference to protobuf root\ntype ProtobufDecoder = (\n messageType: string | number,\n payload: Buffer,\n) => {\n type: string;\n message: Record<string, unknown>;\n};\n\ntype MessageV2 = ReturnType<TransportProtocolDecode>;\n\nconst decipherMessage = (key: Buffer, recvNonce: number, payload: Buffer, tag: Buffer) => {\n const aes = aesgcm(key, getIvFromNonce(recvNonce));\n aes.auth(Buffer.alloc(0));\n const trezorMaskedStaticPubkey = aes.decrypt(payload, tag);\n\n return trezorMaskedStaticPubkey.subarray(1); // NOTE: remove session_id (first byte)\n};\n\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a\n// example: 41ffff0020639ba57ff4e0c2343c830a0454335731180220002802280328042801c0171551\n// [magic | channel | len* | nonce | protobuf: messageType + message | crc ]\n// [41 | ffff | 0020 | 639ba57ff4e0c234 | 3c830a0454335731180220002802280328042801 | c0171551]\n// *len includes nonce+protobuf+crc\nconst createChannelResponse = (\n { payload }: ThpMessage,\n protobufDecoder: ProtobufDecoder,\n): ThpMessageResponse<'ThpCreateChannelResponse'> => {\n const nonce = payload.subarray(0, 8);\n const channel = payload.subarray(8, 10);\n const props = payload.subarray(10, payload.length - CRC_LENGTH);\n const properties = protobufDecoder('ThpDeviceProperties', props).message as ThpDeviceProperties;\n const handshakeHash = getHandshakeHash(props);\n\n return {\n type: 'ThpCreateChannelResponse',\n message: {\n nonce,\n channel,\n properties,\n handshakeHash,\n },\n };\n};\n\nconst readHandshakeInitResponse = ({\n payload,\n}: ThpMessage): ThpMessageResponse<'ThpHandshakeInitResponse'> => {\n const trezorEphemeralPubkey = payload.subarray(0, 32);\n const trezorEncryptedStaticPubkey = payload.subarray(32, 32 + 48);\n const tag = payload.subarray(32 + 48, 32 + 48 + TAG_LENGTH);\n\n return {\n type: 'ThpHandshakeInitResponse',\n message: {\n trezorEphemeralPubkey,\n trezorEncryptedStaticPubkey,\n tag,\n },\n };\n};\n\nconst readHandshakeCompletionResponse = ({\n payload,\n thpState,\n}: ThpMessage): ThpMessageResponse<'ThpHandshakeCompletionResponse'> => {\n const state = getTrezorState(thpState.handshakeCredentials!, payload);\n\n return {\n type: 'ThpHandshakeCompletionResponse',\n message: {\n state,\n },\n };\n};\n\nconst readProtobufMessage = (\n { payload, thpState }: ThpMessage,\n protobufDecoder: ProtobufDecoder,\n): ThpMessageResponse => {\n const tagPos = payload.length - TAG_LENGTH - CRC_LENGTH;\n const cipheredMessage = payload.subarray(0, tagPos);\n const tag = payload.subarray(tagPos, payload.length - CRC_LENGTH);\n const decipheredMessage = decipherMessage(\n thpState.handshakeCredentials!.trezorKey,\n thpState.recvNonce,\n cipheredMessage,\n tag,\n );\n\n const messageType = decipheredMessage.readUInt16BE(0);\n const messagePayload = decipheredMessage.subarray(2);\n\n return protobufDecoder(messageType, messagePayload) as ThpMessageResponse;\n};\n\nconst decodeReadAck = (): ThpMessageResponse => ({\n type: 'ThpAck',\n message: {},\n});\n\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a\n// example: 42122200050270303cfa\n// [magic | channel | len* | error | crc ]\n// [42 | 1222 | 0005 | 02 | 70303cfa]\n// *len includes error+crc\nconst decodeThpError = (payload: Buffer): ThpMessageResponse => {\n const [errorType] = payload;\n\n const error = (() => {\n switch (errorType) {\n case 0x01:\n return 'ThpTransportBusy';\n case 0x02:\n return 'ThpUnallocatedChannel';\n case 0x03:\n return 'ThpDecryptionFailed';\n case 0x05:\n return 'ThpDeviceLocked';\n default:\n return 'ThpUnknownError';\n }\n })();\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] wire.ThpError decoded from device', {\n errorByte: `0x${errorType.toString(16).padStart(2, '0')}`,\n mappedTo: error,\n payloadHex: payload.toString('hex'),\n });\n\n const message: ThpError = {\n code: error,\n message: error ?? `Unknown ThpError ${errorType}`,\n };\n\n return {\n type: 'ThpError',\n message,\n };\n};\n\nexport const getCRC = (decodedMessage: MessageV2) =>\n decodedMessage.payload.subarray(decodedMessage.length - CRC_LENGTH, decodedMessage.length);\n\nexport const validateCrc = (decodedMessage: MessageV2) => {\n // payload length without crc\n const payloadLen = decodedMessage.length - CRC_LENGTH;\n const length = Buffer.alloc(2);\n length.writeUInt16BE(decodedMessage.length);\n // build crc locally\n const expectedCrc = crc32(\n Buffer.concat([\n decodedMessage.header,\n length,\n decodedMessage.payload.subarray(0, payloadLen),\n ]),\n );\n // get crc from the message\n const crc = getCRC(decodedMessage);\n\n // compare both crc\n if (expectedCrc.compare(crc) !== 0) {\n throw new Error(\n `Invalid CRC. expected: ${expectedCrc.toString('hex')} received: ${crc.toString('hex')}`,\n );\n }\n};\n\n// Decode protocol-v2 message from thp receive process\nexport const decode = (\n decodedMessage: MessageV2,\n protobufDecoder: ProtobufDecoder,\n thpState?: ThpState,\n): ThpMessageResponse => {\n if (!thpState) {\n throw new Error('ThpStateMissing');\n }\n\n const message: ThpMessage = {\n ...decodedMessage,\n thpState,\n };\n\n const { messageType } = decodedMessage;\n if (messageType === THP_CONTROL_BYTE.ERROR) {\n return decodeThpError(message.payload);\n }\n\n if (messageType === THP_CONTROL_BYTE.ACK_MESSAGE) {\n return decodeReadAck();\n }\n\n if (messageType === THP_CONTROL_BYTE.CHANNEL_ALLOCATION_RES) {\n return createChannelResponse(message, protobufDecoder);\n }\n\n if (messageType === THP_CONTROL_BYTE.HANDSHAKE_INIT_RES) {\n return readHandshakeInitResponse(message);\n }\n\n if (messageType === THP_CONTROL_BYTE.HANDSHAKE_COMP_RES) {\n return readHandshakeCompletionResponse(message);\n }\n\n if (messageType === THP_CONTROL_BYTE.ENCRYPTED) {\n return readProtobufMessage(message, protobufDecoder);\n }\n\n throw new Error('Unknown message type: ' + messageType);\n};\n","export const THP_DEFAULT_CHANNEL = Buffer.from([0xff, 0xff]);\n\nexport const CRC_LENGTH = 4;\nexport const TAG_LENGTH = 16;\n","export { aesgcm } from './aesgcm';\nexport { crc32 } from './crc32';\n","import * as crypto from 'crypto';\n\nexport const aesgcm = (key: Buffer, iv: Buffer) => {\n const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);\n const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);\n\n return {\n auth: (authData: Buffer) => {\n cipher.setAAD(authData);\n decipher.setAAD(authData);\n },\n encrypt: (plainText: Buffer) => {\n const encrypted = cipher.update(plainText);\n\n return Buffer.concat([encrypted, cipher.final()]);\n },\n decrypt: (cipherText: Buffer, authTag: Buffer) => {\n decipher.setAuthTag(authTag);\n const decrypted = decipher.update(cipherText);\n\n return Buffer.concat([decrypted, decipher.final()]);\n },\n finish: () => cipher.getAuthTag(),\n };\n};\n","import { gcm } from '@noble/ciphers/aes';\nimport { hmac } from '@noble/hashes/hmac';\nimport { sha256, sha512 } from '@noble/hashes/sha2';\n\nimport { Buffer, toRuntimeBuffer } from './buffer';\n\ntype BinaryInput = string | Uint8Array | ArrayBuffer;\ntype DigestEncoding = BufferEncoding | undefined;\ntype NobleHash = typeof sha256;\ntype NobleHashInstance = ReturnType<NobleHash['create']>;\n\nconst normalizeAlgorithm = (algorithm: string) => algorithm.toLowerCase().replace(/-/g, '');\n\nconst getHash = (algorithm: string): NobleHash => {\n switch (normalizeAlgorithm(algorithm)) {\n case 'sha256':\n return sha256;\n case 'sha512':\n return sha512;\n default:\n throw new Error(`Unsupported crypto hash algorithm: ${algorithm}`);\n }\n};\n\nconst toBytes = (value: BinaryInput, encoding?: BufferEncoding): Buffer => {\n if (typeof value === 'string') {\n return Buffer.from(value, encoding);\n }\n\n return toRuntimeBuffer(value);\n};\n\nconst formatDigest = (bytes: Uint8Array, encoding?: DigestEncoding) => {\n const digest = Buffer.from(bytes);\n return encoding ? digest.toString(encoding) : digest;\n};\n\nclass NobleHashShim {\n private readonly ctx: NobleHashInstance;\n\n constructor(algorithm: string) {\n this.ctx = getHash(algorithm).create();\n }\n\n update(data: BinaryInput, inputEncoding?: BufferEncoding) {\n this.ctx.update(toBytes(data, inputEncoding));\n return this;\n }\n\n digest(encoding?: DigestEncoding) {\n return formatDigest(this.ctx.digest(), encoding);\n }\n}\n\nclass NobleHmacShim {\n private readonly ctx: ReturnType<typeof hmac.create>;\n\n constructor(algorithm: string, key: BinaryInput) {\n this.ctx = hmac.create(getHash(algorithm), toBytes(key));\n }\n\n update(data: BinaryInput, inputEncoding?: BufferEncoding) {\n this.ctx.update(toBytes(data, inputEncoding));\n return this;\n }\n\n digest(encoding?: DigestEncoding) {\n return formatDigest(this.ctx.digest(), encoding);\n }\n}\n\nclass NobleAesGcmCipherShim {\n private aad = Buffer.alloc(0);\n private readonly chunks: Buffer[] = [];\n private authTag: Buffer | undefined;\n\n constructor(\n private readonly key: Buffer,\n private readonly iv: Buffer,\n ) {}\n\n setAAD(aad: BinaryInput) {\n this.aad = toBytes(aad);\n return this;\n }\n\n update(data: BinaryInput, inputEncoding?: BufferEncoding) {\n this.chunks.push(toBytes(data, inputEncoding));\n return Buffer.alloc(0);\n }\n\n final() {\n const sealed = gcm(this.key, this.iv, this.aad).encrypt(Buffer.concat(this.chunks));\n this.authTag = Buffer.from(sealed.subarray(sealed.length - 16));\n return Buffer.from(sealed.subarray(0, sealed.length - 16));\n }\n\n getAuthTag() {\n if (!this.authTag) {\n throw new Error('Authentication tag is not available before final()');\n }\n return this.authTag;\n }\n}\n\nclass NobleAesGcmDecipherShim {\n private aad = Buffer.alloc(0);\n private readonly chunks: Buffer[] = [];\n private authTag: Buffer | undefined;\n\n constructor(\n private readonly key: Buffer,\n private readonly iv: Buffer,\n ) {}\n\n setAAD(aad: BinaryInput) {\n this.aad = toBytes(aad);\n return this;\n }\n\n setAuthTag(authTag: BinaryInput) {\n this.authTag = toBytes(authTag);\n return this;\n }\n\n update(data: BinaryInput, inputEncoding?: BufferEncoding) {\n this.chunks.push(toBytes(data, inputEncoding));\n return Buffer.alloc(0);\n }\n\n final() {\n if (!this.authTag) {\n throw new Error('Authentication tag is required before final()');\n }\n return Buffer.from(\n gcm(this.key, this.iv, this.aad).decrypt(Buffer.concat([...this.chunks, this.authTag])),\n );\n }\n}\n\nconst assertAes256Gcm = (algorithm: string) => {\n if (normalizeAlgorithm(algorithm) !== 'aes256gcm') {\n throw new Error(`Unsupported cipher algorithm: ${algorithm}`);\n }\n};\n\nexport const createHash = (algorithm: string) => new NobleHashShim(algorithm);\n\nexport const createHmac = (algorithm: string, key: BinaryInput) =>\n new NobleHmacShim(algorithm, key);\n\nexport const createCipheriv = (algorithm: string, key: BinaryInput, iv: BinaryInput) => {\n assertAes256Gcm(algorithm);\n return new NobleAesGcmCipherShim(toBytes(key), toBytes(iv));\n};\n\nexport const createDecipheriv = (algorithm: string, key: BinaryInput, iv: BinaryInput) => {\n assertAes256Gcm(algorithm);\n return new NobleAesGcmDecipherShim(toBytes(key), toBytes(iv));\n};\n\nexport function randomBytes(size: number): Buffer;\nexport function randomBytes(size: number, callback: (error: Error | null, bytes: Buffer) => void): void;\nexport function randomBytes(\n size: number,\n callback?: (error: Error | null, bytes: Buffer) => void,\n) {\n const cryptoApi = globalThis.crypto;\n if (!cryptoApi?.getRandomValues) {\n const error = new Error('Secure random source is unavailable');\n if (callback) {\n callback(error, Buffer.alloc(0));\n return;\n }\n throw error;\n }\n\n const bytes = Buffer.alloc(size);\n cryptoApi.getRandomValues(bytes);\n if (callback) {\n callback(null, bytes);\n return;\n }\n return bytes;\n}\n\nexport default {\n createCipheriv,\n createDecipheriv,\n createHash,\n createHmac,\n randomBytes,\n};\n","/**\n * [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)\n * a.k.a. Advanced Encryption Standard\n * is a variant of Rijndael block cipher, standardized by NIST in 2001.\n * We provide the fastest available pure JS implementation.\n *\n * Data is split into 128-bit blocks. Encrypted in 10/12/14 rounds (128/192/256 bits). In every round:\n * 1. **S-box**, table substitution\n * 2. **Shift rows**, cyclic shift left of all rows of data array\n * 3. **Mix columns**, multiplying every column by fixed polynomial\n * 4. **Add round key**, round_key xor i-th column of array\n *\n * Check out [FIPS-197](https://csrc.nist.gov/files/pubs/fips/197/final/docs/fips-197.pdf)\n * and [original proposal](https://csrc.nist.gov/csrc/media/projects/cryptographic-standards-and-guidelines/documents/aes-development/rijndael-ammended.pdf)\n * @module\n */\nimport { ghash, polyval } from './_polyval.ts';\n// prettier-ignore\nimport {\n abytes, clean, complexOverlapBytes, concatBytes,\n copyBytes, createView, equalBytes, getOutput, isAligned32, overlapBytes,\n setBigUint64, u32, u64Lengths, u8, wrapCipher,\n type Cipher, type CipherWithOutput,\n} from './utils.ts';\n\nconst BLOCK_SIZE = 16;\nconst BLOCK_SIZE32 = 4;\nconst EMPTY_BLOCK = /* @__PURE__ */ new Uint8Array(BLOCK_SIZE);\nconst POLY = 0x11b; // 1 + x + x**3 + x**4 + x**8\n\n// TODO: remove multiplication, binary ops only\nfunction mul2(n: number) {\n return (n << 1) ^ (POLY & -(n >> 7));\n}\n\nfunction mul(a: number, b: number) {\n let res = 0;\n for (; b > 0; b >>= 1) {\n // Montgomery ladder\n res ^= a & -(b & 1); // if (b&1) res ^=a (but const-time).\n a = mul2(a); // a = 2*a\n }\n return res;\n}\n\n// AES S-box is generated using finite field inversion,\n// an affine transform, and xor of a constant 0x63.\nconst sbox = /* @__PURE__ */ (() => {\n const t = new Uint8Array(256);\n for (let i = 0, x = 1; i < 256; i++, x ^= mul2(x)) t[i] = x;\n const box = new Uint8Array(256);\n box[0] = 0x63; // first elm\n for (let i = 0; i < 255; i++) {\n let x = t[255 - i];\n x |= x << 8;\n box[t[i]] = (x ^ (x >> 4) ^ (x >> 5) ^ (x >> 6) ^ (x >> 7) ^ 0x63) & 0xff;\n }\n clean(t);\n return box;\n})();\n\n// Inverted S-box\nconst invSbox = /* @__PURE__ */ sbox.map((_, j) => sbox.indexOf(j));\n\n// Rotate u32 by 8\nconst rotr32_8 = (n: number) => (n << 24) | (n >>> 8);\nconst rotl32_8 = (n: number) => (n << 8) | (n >>> 24);\n// The byte swap operation for uint32 (LE<->BE)\nconst byteSwap = (word: number) =>\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n\n// T-table is optimization suggested in 5.2 of original proposal (missed from FIPS-197). Changes:\n// - LE instead of BE\n// - bigger tables: T0 and T1 are merged into T01 table and T2 & T3 into T23;\n// so index is u16, instead of u8. This speeds up things, unexpectedly\nfunction genTtable(sbox: Uint8Array, fn: (n: number) => number) {\n if (sbox.length !== 256) throw new Error('Wrong sbox length');\n const T0 = new Uint32Array(256).map((_, j) => fn(sbox[j]));\n const T1 = T0.map(rotl32_8);\n const T2 = T1.map(rotl32_8);\n const T3 = T2.map(rotl32_8);\n const T01 = new Uint32Array(256 * 256);\n const T23 = new Uint32Array(256 * 256);\n const sbox2 = new Uint16Array(256 * 256);\n for (let i = 0; i < 256; i++) {\n for (let j = 0; j < 256; j++) {\n const idx = i * 256 + j;\n T01[idx] = T0[i] ^ T1[j];\n T23[idx] = T2[i] ^ T3[j];\n sbox2[idx] = (sbox[i] << 8) | sbox[j];\n }\n }\n return { sbox, sbox2, T0, T1, T2, T3, T01, T23 };\n}\n\nconst tableEncoding = /* @__PURE__ */ genTtable(\n sbox,\n (s: number) => (mul(s, 3) << 24) | (s << 16) | (s << 8) | mul(s, 2)\n);\nconst tableDecoding = /* @__PURE__ */ genTtable(\n invSbox,\n (s) => (mul(s, 11) << 24) | (mul(s, 13) << 16) | (mul(s, 9) << 8) | mul(s, 14)\n);\n\nconst xPowers = /* @__PURE__ */ (() => {\n const p = new Uint8Array(16);\n for (let i = 0, x = 1; i < 16; i++, x = mul2(x)) p[i] = x;\n return p;\n})();\n\n/** Key expansion used in CTR. */\nfunction expandKeyLE(key: Uint8Array): Uint32Array {\n abytes(key);\n const len = key.length;\n if (![16, 24, 32].includes(len))\n throw new Error('aes: invalid key size, should be 16, 24 or 32, got ' + len);\n const { sbox2 } = tableEncoding;\n const toClean = [];\n if (!isAligned32(key)) toClean.push((key = copyBytes(key)));\n const k32 = u32(key);\n const Nk = k32.length;\n const subByte = (n: number) => applySbox(sbox2, n, n, n, n);\n const xk = new Uint32Array(len + 28); // expanded key\n xk.set(k32);\n // 4.3.1 Key expansion\n for (let i = Nk; i < xk.length; i++) {\n let t = xk[i - 1];\n if (i % Nk === 0) t = subByte(rotr32_8(t)) ^ xPowers[i / Nk - 1];\n else if (Nk > 6 && i % Nk === 4) t = subByte(t);\n xk[i] = xk[i - Nk] ^ t;\n }\n clean(...toClean);\n return xk;\n}\n\nfunction expandKeyDecLE(key: Uint8Array): Uint32Array {\n const encKey = expandKeyLE(key);\n const xk = encKey.slice();\n const Nk = encKey.length;\n const { sbox2 } = tableEncoding;\n const { T0, T1, T2, T3 } = tableDecoding;\n // Inverse key by chunks of 4 (rounds)\n for (let i = 0; i < Nk; i += 4) {\n for (let j = 0; j < 4; j++) xk[i + j] = encKey[Nk - i - 4 + j];\n }\n clean(encKey);\n // apply InvMixColumn except first & last round\n for (let i = 4; i < Nk - 4; i++) {\n const x = xk[i];\n const w = applySbox(sbox2, x, x, x, x);\n xk[i] = T0[w & 0xff] ^ T1[(w >>> 8) & 0xff] ^ T2[(w >>> 16) & 0xff] ^ T3[w >>> 24];\n }\n return xk;\n}\n\n// Apply tables\nfunction apply0123(\n T01: Uint32Array,\n T23: Uint32Array,\n s0: number,\n s1: number,\n s2: number,\n s3: number\n) {\n return (\n T01[((s0 << 8) & 0xff00) | ((s1 >>> 8) & 0xff)] ^\n T23[((s2 >>> 8) & 0xff00) | ((s3 >>> 24) & 0xff)]\n );\n}\n\nfunction applySbox(sbox2: Uint16Array, s0: number, s1: number, s2: number, s3: number) {\n return (\n sbox2[(s0 & 0xff) | (s1 & 0xff00)] |\n (sbox2[((s2 >>> 16) & 0xff) | ((s3 >>> 16) & 0xff00)] << 16)\n );\n}\n\nfunction encrypt(\n xk: Uint32Array,\n s0: number,\n s1: number,\n s2: number,\n s3: number\n): { s0: number; s1: number; s2: number; s3: number } {\n const { sbox2, T01, T23 } = tableEncoding;\n let k = 0;\n (s0 ^= xk[k++]), (s1 ^= xk[k++]), (s2 ^= xk[k++]), (s3 ^= xk[k++]);\n const rounds = xk.length / 4 - 2;\n for (let i = 0; i < rounds; i++) {\n const t0 = xk[k++] ^ apply0123(T01, T23, s0, s1, s2, s3);\n const t1 = xk[k++] ^ apply0123(T01, T23, s1, s2, s3, s0);\n const t2 = xk[k++] ^ apply0123(T01, T23, s2, s3, s0, s1);\n const t3 = xk[k++] ^ apply0123(T01, T23, s3, s0, s1, s2);\n (s0 = t0), (s1 = t1), (s2 = t2), (s3 = t3);\n }\n // last round (without mixcolumns, so using SBOX2 table)\n const t0 = xk[k++] ^ applySbox(sbox2, s0, s1, s2, s3);\n const t1 = xk[k++] ^ applySbox(sbox2, s1, s2, s3, s0);\n const t2 = xk[k++] ^ applySbox(sbox2, s2, s3, s0, s1);\n const t3 = xk[k++] ^ applySbox(sbox2, s3, s0, s1, s2);\n return { s0: t0, s1: t1, s2: t2, s3: t3 };\n}\n\n// Can't be merged with encrypt: arg positions for apply0123 / applySbox are different\nfunction decrypt(\n xk: Uint32Array,\n s0: number,\n s1: number,\n s2: number,\n s3: number\n): {\n s0: number;\n s1: number;\n s2: number;\n s3: number;\n} {\n const { sbox2, T01, T23 } = tableDecoding;\n let k = 0;\n (s0 ^= xk[k++]), (s1 ^= xk[k++]), (s2 ^= xk[k++]), (s3 ^= xk[k++]);\n const rounds = xk.length / 4 - 2;\n for (let i = 0; i < rounds; i++) {\n const t0 = xk[k++] ^ apply0123(T01, T23, s0, s3, s2, s1);\n const t1 = xk[k++] ^ apply0123(T01, T23, s1, s0, s3, s2);\n const t2 = xk[k++] ^ apply0123(T01, T23, s2, s1, s0, s3);\n const t3 = xk[k++] ^ apply0123(T01, T23, s3, s2, s1, s0);\n (s0 = t0), (s1 = t1), (s2 = t2), (s3 = t3);\n }\n // Last round\n const t0: number = xk[k++] ^ applySbox(sbox2, s0, s3, s2, s1);\n const t1: number = xk[k++] ^ applySbox(sbox2, s1, s0, s3, s2);\n const t2: number = xk[k++] ^ applySbox(sbox2, s2, s1, s0, s3);\n const t3: number = xk[k++] ^ applySbox(sbox2, s3, s2, s1, s0);\n return { s0: t0, s1: t1, s2: t2, s3: t3 };\n}\n\n// TODO: investigate merging with ctr32\nfunction ctrCounter(\n xk: Uint32Array,\n nonce: Uint8Array,\n src: Uint8Array,\n dst?: Uint8Array\n): Uint8Array {\n abytes(nonce, BLOCK_SIZE);\n abytes(src);\n const srcLen = src.length;\n dst = getOutput(srcLen, dst);\n complexOverlapBytes(src, dst);\n const ctr = nonce;\n const c32 = u32(ctr);\n // Fill block (empty, ctr=0)\n let { s0, s1, s2, s3 } = encrypt(xk, c32[0], c32[1], c32[2], c32[3]);\n const src32 = u32(src);\n const dst32 = u32(dst);\n // process blocks\n for (let i = 0; i + 4 <= src32.length; i += 4) {\n dst32[i + 0] = src32[i + 0] ^ s0;\n dst32[i + 1] = src32[i + 1] ^ s1;\n dst32[i + 2] = src32[i + 2] ^ s2;\n dst32[i + 3] = src32[i + 3] ^ s3;\n // Full 128 bit counter with wrap around\n let carry = 1;\n for (let i = ctr.length - 1; i >= 0; i--) {\n carry = (carry + (ctr[i] & 0xff)) | 0;\n ctr[i] = carry & 0xff;\n carry >>>= 8;\n }\n ({ s0, s1, s2, s3 } = encrypt(xk, c32[0], c32[1], c32[2], c32[3]));\n }\n // leftovers (less than block)\n // It's possible to handle > u32 fast, but is it worth it?\n const start = BLOCK_SIZE * Math.floor(src32.length / BLOCK_SIZE32);\n if (start < srcLen) {\n const b32 = new Uint32Array([s0, s1, s2, s3]);\n const buf = u8(b32);\n for (let i = start, pos = 0; i < srcLen; i++, pos++) dst[i] = src[i] ^ buf[pos];\n clean(b32);\n }\n return dst;\n}\n\n// AES CTR with overflowing 32 bit counter\n// It's possible to do 32le significantly simpler (and probably faster) by using u32.\n// But, we need both, and perf bottleneck is in ghash anyway.\nfunction ctr32(\n xk: Uint32Array,\n isLE: boolean,\n nonce: Uint8Array,\n src: Uint8Array,\n dst?: Uint8Array\n): Uint8Array {\n abytes(nonce, BLOCK_SIZE);\n abytes(src);\n dst = getOutput(src.length, dst);\n const ctr = nonce; // write new value to nonce, so it can be re-used\n const c32 = u32(ctr);\n const view = createView(ctr);\n const src32 = u32(src);\n const dst32 = u32(dst);\n const ctrPos = isLE ? 0 : 12;\n const srcLen = src.length;\n // Fill block (empty, ctr=0)\n let ctrNum = view.getUint32(ctrPos, isLE); // read current counter value\n let { s0, s1, s2, s3 } = encrypt(xk, c32[0], c32[1], c32[2], c32[3]);\n // process blocks\n for (let i = 0; i + 4 <= src32.length; i += 4) {\n dst32[i + 0] = src32[i + 0] ^ s0;\n dst32[i + 1] = src32[i + 1] ^ s1;\n dst32[i + 2] = src32[i + 2] ^ s2;\n dst32[i + 3] = src32[i + 3] ^ s3;\n ctrNum = (ctrNum + 1) >>> 0; // u32 wrap\n view.setUint32(ctrPos, ctrNum, isLE);\n ({ s0, s1, s2, s3 } = encrypt(xk, c32[0], c32[1], c32[2], c32[3]));\n }\n // leftovers (less than a block)\n const start = BLOCK_SIZE * Math.floor(src32.length / BLOCK_SIZE32);\n if (start < srcLen) {\n const b32 = new Uint32Array([s0, s1, s2, s3]);\n const buf = u8(b32);\n for (let i = start, pos = 0; i < srcLen; i++, pos++) dst[i] = src[i] ^ buf[pos];\n clean(b32);\n }\n return dst;\n}\n\n/**\n * CTR: counter mode. Creates stream cipher.\n * Requires good IV. Parallelizable. OK, but no MAC.\n */\nexport const ctr: ((key: Uint8Array, nonce: Uint8Array) => CipherWithOutput) & {\n blockSize: number;\n nonceLength: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16, nonceLength: 16 },\n function aesctr(key: Uint8Array, nonce: Uint8Array): CipherWithOutput {\n function processCtr(buf: Uint8Array, dst?: Uint8Array) {\n abytes(buf);\n if (dst !== undefined) {\n abytes(dst);\n if (!isAligned32(dst)) throw new Error('unaligned destination');\n }\n const xk = expandKeyLE(key);\n const n = copyBytes(nonce); // align + avoid changing\n const toClean = [xk, n];\n if (!isAligned32(buf)) toClean.push((buf = copyBytes(buf)));\n const out = ctrCounter(xk, n, buf, dst);\n clean(...toClean);\n return out;\n }\n return {\n encrypt: (plaintext: Uint8Array, dst?: Uint8Array) => processCtr(plaintext, dst),\n decrypt: (ciphertext: Uint8Array, dst?: Uint8Array) => processCtr(ciphertext, dst),\n };\n }\n);\n\nfunction validateBlockDecrypt(data: Uint8Array) {\n abytes(data);\n if (data.length % BLOCK_SIZE !== 0) {\n throw new Error(\n 'aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size ' + BLOCK_SIZE\n );\n }\n}\n\nfunction validateBlockEncrypt(plaintext: Uint8Array, pcks5: boolean, dst?: Uint8Array) {\n abytes(plaintext);\n let outLen = plaintext.length;\n const remaining = outLen % BLOCK_SIZE;\n if (!pcks5 && remaining !== 0)\n throw new Error('aec/(cbc-ecb): unpadded plaintext with disabled padding');\n if (!isAligned32(plaintext)) plaintext = copyBytes(plaintext);\n const b = u32(plaintext);\n if (pcks5) {\n let left = BLOCK_SIZE - remaining;\n if (!left) left = BLOCK_SIZE; // if no bytes left, create empty padding block\n outLen = outLen + left;\n }\n dst = getOutput(outLen, dst);\n complexOverlapBytes(plaintext, dst);\n const o = u32(dst);\n return { b, o, out: dst };\n}\n\nfunction validatePCKS(data: Uint8Array, pcks5: boolean) {\n if (!pcks5) return data;\n const len = data.length;\n if (!len) throw new Error('aes/pcks5: empty ciphertext not allowed');\n const lastByte = data[len - 1];\n if (lastByte <= 0 || lastByte > 16) throw new Error('aes/pcks5: wrong padding');\n const out = data.subarray(0, -lastByte);\n for (let i = 0; i < lastByte; i++)\n if (data[len - i - 1] !== lastByte) throw new Error('aes/pcks5: wrong padding');\n return out;\n}\n\nfunction padPCKS(left: Uint8Array) {\n const tmp = new Uint8Array(16);\n const tmp32 = u32(tmp);\n tmp.set(left);\n const paddingByte = BLOCK_SIZE - left.length;\n for (let i = BLOCK_SIZE - paddingByte; i < BLOCK_SIZE; i++) tmp[i] = paddingByte;\n return tmp32;\n}\n\n/** Options for ECB and CBC. */\nexport type BlockOpts = { disablePadding?: boolean };\n\n/**\n * ECB: Electronic CodeBook. Simple deterministic replacement.\n * Dangerous: always map x to y. See [AES Penguin](https://words.filippo.io/the-ecb-penguin/).\n */\nexport const ecb: ((key: Uint8Array, opts?: BlockOpts) => CipherWithOutput) & {\n blockSize: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16 },\n function aesecb(key: Uint8Array, opts: BlockOpts = {}): CipherWithOutput {\n const pcks5 = !opts.disablePadding;\n return {\n encrypt(plaintext: Uint8Array, dst?: Uint8Array) {\n const { b, o, out: _out } = validateBlockEncrypt(plaintext, pcks5, dst);\n const xk = expandKeyLE(key);\n let i = 0;\n for (; i + 4 <= b.length; ) {\n const { s0, s1, s2, s3 } = encrypt(xk, b[i + 0], b[i + 1], b[i + 2], b[i + 3]);\n (o[i++] = s0), (o[i++] = s1), (o[i++] = s2), (o[i++] = s3);\n }\n if (pcks5) {\n const tmp32 = padPCKS(plaintext.subarray(i * 4));\n const { s0, s1, s2, s3 } = encrypt(xk, tmp32[0], tmp32[1], tmp32[2], tmp32[3]);\n (o[i++] = s0), (o[i++] = s1), (o[i++] = s2), (o[i++] = s3);\n }\n clean(xk);\n return _out;\n },\n decrypt(ciphertext: Uint8Array, dst?: Uint8Array) {\n validateBlockDecrypt(ciphertext);\n const xk = expandKeyDecLE(key);\n dst = getOutput(ciphertext.length, dst);\n const toClean: (Uint8Array | Uint32Array)[] = [xk];\n if (!isAligned32(ciphertext)) toClean.push((ciphertext = copyBytes(ciphertext)));\n complexOverlapBytes(ciphertext, dst);\n const b = u32(ciphertext);\n const o = u32(dst);\n for (let i = 0; i + 4 <= b.length; ) {\n const { s0, s1, s2, s3 } = decrypt(xk, b[i + 0], b[i + 1], b[i + 2], b[i + 3]);\n (o[i++] = s0), (o[i++] = s1), (o[i++] = s2), (o[i++] = s3);\n }\n clean(...toClean);\n return validatePCKS(dst, pcks5);\n },\n };\n }\n);\n\n/**\n * CBC: Cipher-Block-Chaining. Key is previous round’s block.\n * Fragile: needs proper padding. Unauthenticated: needs MAC.\n */\nexport const cbc: ((key: Uint8Array, iv: Uint8Array, opts?: BlockOpts) => CipherWithOutput) & {\n blockSize: number;\n nonceLength: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16, nonceLength: 16 },\n function aescbc(key: Uint8Array, iv: Uint8Array, opts: BlockOpts = {}): CipherWithOutput {\n const pcks5 = !opts.disablePadding;\n return {\n encrypt(plaintext: Uint8Array, dst?: Uint8Array) {\n const xk = expandKeyLE(key);\n const { b, o, out: _out } = validateBlockEncrypt(plaintext, pcks5, dst);\n let _iv = iv;\n const toClean: (Uint8Array | Uint32Array)[] = [xk];\n if (!isAligned32(_iv)) toClean.push((_iv = copyBytes(_iv)));\n const n32 = u32(_iv);\n // prettier-ignore\n let s0 = n32[0], s1 = n32[1], s2 = n32[2], s3 = n32[3];\n let i = 0;\n for (; i + 4 <= b.length; ) {\n (s0 ^= b[i + 0]), (s1 ^= b[i + 1]), (s2 ^= b[i + 2]), (s3 ^= b[i + 3]);\n ({ s0, s1, s2, s3 } = encrypt(xk, s0, s1, s2, s3));\n (o[i++] = s0), (o[i++] = s1), (o[i++] = s2), (o[i++] = s3);\n }\n if (pcks5) {\n const tmp32 = padPCKS(plaintext.subarray(i * 4));\n (s0 ^= tmp32[0]), (s1 ^= tmp32[1]), (s2 ^= tmp32[2]), (s3 ^= tmp32[3]);\n ({ s0, s1, s2, s3 } = encrypt(xk, s0, s1, s2, s3));\n (o[i++] = s0), (o[i++] = s1), (o[i++] = s2), (o[i++] = s3);\n }\n clean(...toClean);\n return _out;\n },\n decrypt(ciphertext: Uint8Array, dst?: Uint8Array) {\n validateBlockDecrypt(ciphertext);\n const xk = expandKeyDecLE(key);\n let _iv = iv;\n const toClean: (Uint8Array | Uint32Array)[] = [xk];\n if (!isAligned32(_iv)) toClean.push((_iv = copyBytes(_iv)));\n const n32 = u32(_iv);\n dst = getOutput(ciphertext.length, dst);\n if (!isAligned32(ciphertext)) toClean.push((ciphertext = copyBytes(ciphertext)));\n complexOverlapBytes(ciphertext, dst);\n const b = u32(ciphertext);\n const o = u32(dst);\n // prettier-ignore\n let s0 = n32[0], s1 = n32[1], s2 = n32[2], s3 = n32[3];\n for (let i = 0; i + 4 <= b.length; ) {\n // prettier-ignore\n const ps0 = s0, ps1 = s1, ps2 = s2, ps3 = s3;\n (s0 = b[i + 0]), (s1 = b[i + 1]), (s2 = b[i + 2]), (s3 = b[i + 3]);\n const { s0: o0, s1: o1, s2: o2, s3: o3 } = decrypt(xk, s0, s1, s2, s3);\n (o[i++] = o0 ^ ps0), (o[i++] = o1 ^ ps1), (o[i++] = o2 ^ ps2), (o[i++] = o3 ^ ps3);\n }\n clean(...toClean);\n return validatePCKS(dst, pcks5);\n },\n };\n }\n);\n\n/**\n * CFB: Cipher Feedback Mode. The input for the block cipher is the previous cipher output.\n * Unauthenticated: needs MAC.\n */\nexport const cfb: ((key: Uint8Array, iv: Uint8Array) => CipherWithOutput) & {\n blockSize: number;\n nonceLength: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16, nonceLength: 16 },\n function aescfb(key: Uint8Array, iv: Uint8Array): CipherWithOutput {\n function processCfb(src: Uint8Array, isEncrypt: boolean, dst?: Uint8Array) {\n abytes(src);\n const srcLen = src.length;\n dst = getOutput(srcLen, dst);\n if (overlapBytes(src, dst)) throw new Error('overlapping src and dst not supported.');\n const xk = expandKeyLE(key);\n let _iv = iv;\n const toClean: (Uint8Array | Uint32Array)[] = [xk];\n if (!isAligned32(_iv)) toClean.push((_iv = copyBytes(_iv)));\n if (!isAligned32(src)) toClean.push((src = copyBytes(src)));\n const src32 = u32(src);\n const dst32 = u32(dst);\n const next32 = isEncrypt ? dst32 : src32;\n const n32 = u32(_iv);\n // prettier-ignore\n let s0 = n32[0], s1 = n32[1], s2 = n32[2], s3 = n32[3];\n for (let i = 0; i + 4 <= src32.length; ) {\n const { s0: e0, s1: e1, s2: e2, s3: e3 } = encrypt(xk, s0, s1, s2, s3);\n dst32[i + 0] = src32[i + 0] ^ e0;\n dst32[i + 1] = src32[i + 1] ^ e1;\n dst32[i + 2] = src32[i + 2] ^ e2;\n dst32[i + 3] = src32[i + 3] ^ e3;\n (s0 = next32[i++]), (s1 = next32[i++]), (s2 = next32[i++]), (s3 = next32[i++]);\n }\n // leftovers (less than block)\n const start = BLOCK_SIZE * Math.floor(src32.length / BLOCK_SIZE32);\n if (start < srcLen) {\n ({ s0, s1, s2, s3 } = encrypt(xk, s0, s1, s2, s3));\n const buf = u8(new Uint32Array([s0, s1, s2, s3]));\n for (let i = start, pos = 0; i < srcLen; i++, pos++) dst[i] = src[i] ^ buf[pos];\n clean(buf);\n }\n clean(...toClean);\n return dst;\n }\n return {\n encrypt: (plaintext: Uint8Array, dst?: Uint8Array) => processCfb(plaintext, true, dst),\n decrypt: (ciphertext: Uint8Array, dst?: Uint8Array) => processCfb(ciphertext, false, dst),\n };\n }\n);\n\n// TODO: merge with chacha, however gcm has bitLen while chacha has byteLen\nfunction computeTag(\n fn: typeof ghash,\n isLE: boolean,\n key: Uint8Array,\n data: Uint8Array,\n AAD?: Uint8Array\n) {\n const aadLength = AAD ? AAD.length : 0;\n const h = fn.create(key, data.length + aadLength);\n if (AAD) h.update(AAD);\n const num = u64Lengths(8 * data.length, 8 * aadLength, isLE);\n h.update(data);\n h.update(num);\n const res = h.digest();\n clean(num);\n return res;\n}\n\n/**\n * GCM: Galois/Counter Mode.\n * Modern, parallel version of CTR, with MAC.\n * Be careful: MACs can be forged.\n * Unsafe to use random nonces under the same key, due to collision chance.\n * As for nonce size, prefer 12-byte, instead of 8-byte.\n */\nexport const gcm: ((key: Uint8Array, nonce: Uint8Array, AAD?: Uint8Array) => Cipher) & {\n blockSize: number;\n nonceLength: number;\n tagLength: number;\n varSizeNonce: true;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16, nonceLength: 12, tagLength: 16, varSizeNonce: true },\n function aesgcm(key: Uint8Array, nonce: Uint8Array, AAD?: Uint8Array): Cipher {\n // NIST 800-38d doesn't enforce minimum nonce length.\n // We enforce 8 bytes for compat with openssl.\n // 12 bytes are recommended. More than 12 bytes would be converted into 12.\n if (nonce.length < 8) throw new Error('aes/gcm: invalid nonce length');\n const tagLength = 16;\n function _computeTag(authKey: Uint8Array, tagMask: Uint8Array, data: Uint8Array) {\n const tag = computeTag(ghash, false, authKey, data, AAD);\n for (let i = 0; i < tagMask.length; i++) tag[i] ^= tagMask[i];\n return tag;\n }\n function deriveKeys() {\n const xk = expandKeyLE(key);\n const authKey = EMPTY_BLOCK.slice();\n const counter = EMPTY_BLOCK.slice();\n ctr32(xk, false, counter, counter, authKey);\n // NIST 800-38d, page 15: different behavior for 96-bit and non-96-bit nonces\n if (nonce.length === 12) {\n counter.set(nonce);\n } else {\n const nonceLen = EMPTY_BLOCK.slice();\n const view = createView(nonceLen);\n setBigUint64(view, 8, BigInt(nonce.length * 8), false);\n // ghash(nonce || u64be(0) || u64be(nonceLen*8))\n const g = ghash.create(authKey).update(nonce).update(nonceLen);\n g.digestInto(counter); // digestInto doesn't trigger '.destroy'\n g.destroy();\n }\n const tagMask = ctr32(xk, false, counter, EMPTY_BLOCK);\n return { xk, authKey, counter, tagMask };\n }\n return {\n encrypt(plaintext: Uint8Array) {\n const { xk, authKey, counter, tagMask } = deriveKeys();\n const out = new Uint8Array(plaintext.length + tagLength);\n const toClean: (Uint8Array | Uint32Array)[] = [xk, authKey, counter, tagMask];\n if (!isAligned32(plaintext)) toClean.push((plaintext = copyBytes(plaintext)));\n ctr32(xk, false, counter, plaintext, out.subarray(0, plaintext.length));\n const tag = _computeTag(authKey, tagMask, out.subarray(0, out.length - tagLength));\n toClean.push(tag);\n out.set(tag, plaintext.length);\n clean(...toClean);\n return out;\n },\n decrypt(ciphertext: Uint8Array) {\n const { xk, authKey, counter, tagMask } = deriveKeys();\n const toClean: (Uint8Array | Uint32Array)[] = [xk, authKey, tagMask, counter];\n if (!isAligned32(ciphertext)) toClean.push((ciphertext = copyBytes(ciphertext)));\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = _computeTag(authKey, tagMask, data);\n toClean.push(tag);\n if (!equalBytes(tag, passedTag)) throw new Error('aes/gcm: invalid ghash tag');\n const out = ctr32(xk, false, counter, data);\n clean(...toClean);\n return out;\n },\n };\n }\n);\n\nconst limit = (name: string, min: number, max: number) => (value: number) => {\n if (!Number.isSafeInteger(value) || min > value || value > max) {\n const minmax = '[' + min + '..' + max + ']';\n throw new Error('' + name + ': expected value in range ' + minmax + ', got ' + value);\n }\n};\n\n/**\n * AES-GCM-SIV: classic AES-GCM with nonce-misuse resistance.\n * Guarantees that, when a nonce is repeated, the only security loss is that identical\n * plaintexts will produce identical ciphertexts.\n * RFC 8452, https://datatracker.ietf.org/doc/html/rfc8452\n */\nexport const gcmsiv: ((key: Uint8Array, nonce: Uint8Array, AAD?: Uint8Array) => Cipher) & {\n blockSize: number;\n nonceLength: number;\n tagLength: number;\n varSizeNonce: true;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 16, nonceLength: 12, tagLength: 16, varSizeNonce: true },\n function aessiv(key: Uint8Array, nonce: Uint8Array, AAD?: Uint8Array): Cipher {\n const tagLength = 16;\n // From RFC 8452: Section 6\n const AAD_LIMIT = limit('AAD', 0, 2 ** 36);\n const PLAIN_LIMIT = limit('plaintext', 0, 2 ** 36);\n const NONCE_LIMIT = limit('nonce', 12, 12);\n const CIPHER_LIMIT = limit('ciphertext', 16, 2 ** 36 + 16);\n abytes(key, 16, 24, 32);\n NONCE_LIMIT(nonce.length);\n if (AAD !== undefined) AAD_LIMIT(AAD.length);\n function deriveKeys() {\n const xk = expandKeyLE(key);\n const encKey = new Uint8Array(key.length);\n const authKey = new Uint8Array(16);\n const toClean: (Uint8Array | Uint32Array)[] = [xk, encKey];\n let _nonce = nonce;\n if (!isAligned32(_nonce)) toClean.push((_nonce = copyBytes(_nonce)));\n const n32 = u32(_nonce);\n // prettier-ignore\n let s0 = 0, s1 = n32[0], s2 = n32[1], s3 = n32[2];\n let counter = 0;\n for (const derivedKey of [authKey, encKey].map(u32)) {\n const d32 = u32(derivedKey);\n for (let i = 0; i < d32.length; i += 2) {\n // aes(u32le(0) || nonce)[:8] || aes(u32le(1) || nonce)[:8] ...\n const { s0: o0, s1: o1 } = encrypt(xk, s0, s1, s2, s3);\n d32[i + 0] = o0;\n d32[i + 1] = o1;\n s0 = ++counter; // increment counter inside state\n }\n }\n const res = { authKey, encKey: expandKeyLE(encKey) };\n // Cleanup\n clean(...toClean);\n return res;\n }\n function _computeTag(encKey: Uint32Array, authKey: Uint8Array, data: Uint8Array) {\n const tag = computeTag(polyval, true, authKey, data, AAD);\n // Compute the expected tag by XORing S_s and the nonce, clearing the\n // most significant bit of the last byte and encrypting with the\n // message-encryption key.\n for (let i = 0; i < 12; i++) tag[i] ^= nonce[i];\n tag[15] &= 0x7f; // Clear the highest bit\n // encrypt tag as block\n const t32 = u32(tag);\n // prettier-ignore\n let s0 = t32[0], s1 = t32[1], s2 = t32[2], s3 = t32[3];\n ({ s0, s1, s2, s3 } = encrypt(encKey, s0, s1, s2, s3));\n (t32[0] = s0), (t32[1] = s1), (t32[2] = s2), (t32[3] = s3);\n return tag;\n }\n // actual decrypt/encrypt of message.\n function processSiv(encKey: Uint32Array, tag: Uint8Array, input: Uint8Array) {\n let block = copyBytes(tag);\n block[15] |= 0x80; // Force highest bit\n const res = ctr32(encKey, true, block, input);\n // Cleanup\n clean(block);\n return res;\n }\n return {\n encrypt(plaintext: Uint8Array) {\n PLAIN_LIMIT(plaintext.length);\n const { encKey, authKey } = deriveKeys();\n const tag = _computeTag(encKey, authKey, plaintext);\n const toClean: (Uint8Array | Uint32Array)[] = [encKey, authKey, tag];\n if (!isAligned32(plaintext)) toClean.push((plaintext = copyBytes(plaintext)));\n const out = new Uint8Array(plaintext.length + tagLength);\n out.set(tag, plaintext.length);\n out.set(processSiv(encKey, tag, plaintext));\n // Cleanup\n clean(...toClean);\n return out;\n },\n decrypt(ciphertext: Uint8Array) {\n CIPHER_LIMIT(ciphertext.length);\n const tag = ciphertext.subarray(-tagLength);\n const { encKey, authKey } = deriveKeys();\n const toClean: (Uint8Array | Uint32Array)[] = [encKey, authKey];\n if (!isAligned32(ciphertext)) toClean.push((ciphertext = copyBytes(ciphertext)));\n const plaintext = processSiv(encKey, tag, ciphertext.subarray(0, -tagLength));\n const expectedTag = _computeTag(encKey, authKey, plaintext);\n toClean.push(expectedTag);\n if (!equalBytes(tag, expectedTag)) {\n clean(...toClean);\n throw new Error('invalid polyval tag');\n }\n // Cleanup\n clean(...toClean);\n return plaintext;\n },\n };\n }\n);\n\n/**\n * AES-GCM-SIV, not AES-SIV.\n * This is legace name, use `gcmsiv` export instead.\n * @deprecated\n */\nexport const siv: typeof gcmsiv = gcmsiv;\n\nfunction isBytes32(a: unknown): a is Uint32Array {\n return (\n a instanceof Uint32Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint32Array')\n );\n}\n\nfunction encryptBlock(xk: Uint32Array, block: Uint8Array): Uint8Array {\n abytes(block, 16);\n if (!isBytes32(xk)) throw new Error('_encryptBlock accepts result of expandKeyLE');\n const b32 = u32(block);\n let { s0, s1, s2, s3 } = encrypt(xk, b32[0], b32[1], b32[2], b32[3]);\n (b32[0] = s0), (b32[1] = s1), (b32[2] = s2), (b32[3] = s3);\n return block;\n}\n\nfunction decryptBlock(xk: Uint32Array, block: Uint8Array): Uint8Array {\n abytes(block, 16);\n if (!isBytes32(xk)) throw new Error('_decryptBlock accepts result of expandKeyLE');\n const b32 = u32(block);\n let { s0, s1, s2, s3 } = decrypt(xk, b32[0], b32[1], b32[2], b32[3]);\n (b32[0] = s0), (b32[1] = s1), (b32[2] = s2), (b32[3] = s3);\n return block;\n}\n\n/**\n * AES-W (base for AESKW/AESKWP).\n * Specs: [SP800-38F](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf),\n * [RFC 3394](https://datatracker.ietf.org/doc/rfc3394/),\n * [RFC 5649](https://datatracker.ietf.org/doc/rfc5649/).\n */\nconst AESW = {\n /*\n High-level pseudocode:\n ```\n A: u64 = IV\n out = []\n for (let i=0, ctr = 0; i<6; i++) {\n for (const chunk of chunks(plaintext, 8)) {\n A ^= swapEndianess(ctr++)\n [A, res] = chunks(encrypt(A || chunk), 8);\n out ||= res\n }\n }\n out = A || out\n ```\n Decrypt is the same, but reversed.\n */\n encrypt(kek: Uint8Array, out: Uint8Array) {\n // Size is limited to 4GB, otherwise ctr will overflow and we'll need to switch to bigints.\n // If you need it larger, open an issue.\n if (out.length >= 2 ** 32) throw new Error('plaintext should be less than 4gb');\n const xk = expandKeyLE(kek);\n if (out.length === 16) encryptBlock(xk, out);\n else {\n const o32 = u32(out);\n // prettier-ignore\n let a0 = o32[0], a1 = o32[1]; // A\n for (let j = 0, ctr = 1; j < 6; j++) {\n for (let pos = 2; pos < o32.length; pos += 2, ctr++) {\n const { s0, s1, s2, s3 } = encrypt(xk, a0, a1, o32[pos], o32[pos + 1]);\n // A = MSB(64, B) ^ t where t = (n*j)+i\n (a0 = s0), (a1 = s1 ^ byteSwap(ctr)), (o32[pos] = s2), (o32[pos + 1] = s3);\n }\n }\n (o32[0] = a0), (o32[1] = a1); // out = A || out\n }\n xk.fill(0);\n },\n decrypt(kek: Uint8Array, out: Uint8Array) {\n if (out.length - 8 >= 2 ** 32) throw new Error('ciphertext should be less than 4gb');\n const xk = expandKeyDecLE(kek);\n const chunks = out.length / 8 - 1; // first chunk is IV\n if (chunks === 1) decryptBlock(xk, out);\n else {\n const o32 = u32(out);\n // prettier-ignore\n let a0 = o32[0], a1 = o32[1]; // A\n for (let j = 0, ctr = chunks * 6; j < 6; j++) {\n for (let pos = chunks * 2; pos >= 1; pos -= 2, ctr--) {\n a1 ^= byteSwap(ctr);\n const { s0, s1, s2, s3 } = decrypt(xk, a0, a1, o32[pos], o32[pos + 1]);\n (a0 = s0), (a1 = s1), (o32[pos] = s2), (o32[pos + 1] = s3);\n }\n }\n (o32[0] = a0), (o32[1] = a1);\n }\n xk.fill(0);\n },\n};\n\nconst AESKW_IV = /* @__PURE__ */ new Uint8Array(8).fill(0xa6); // A6A6A6A6A6A6A6A6\n\n/**\n * AES-KW (key-wrap). Injects static IV into plaintext, adds counter, encrypts 6 times.\n * Reduces block size from 16 to 8 bytes.\n * For padded version, use aeskwp.\n * [RFC 3394](https://datatracker.ietf.org/doc/rfc3394/),\n * [NIST.SP.800-38F](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf).\n */\nexport const aeskw: ((kek: Uint8Array) => Cipher) & {\n blockSize: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 8 },\n (kek: Uint8Array): Cipher => ({\n encrypt(plaintext: Uint8Array) {\n if (!plaintext.length || plaintext.length % 8 !== 0)\n throw new Error('invalid plaintext length');\n if (plaintext.length === 8)\n throw new Error('8-byte keys not allowed in AESKW, use AESKWP instead');\n const out = concatBytes(AESKW_IV, plaintext);\n AESW.encrypt(kek, out);\n return out;\n },\n decrypt(ciphertext: Uint8Array) {\n // ciphertext must be at least 24 bytes and a multiple of 8 bytes\n // 24 because should have at least two block (1 iv + 2).\n // Replace with 16 to enable '8-byte keys'\n if (ciphertext.length % 8 !== 0 || ciphertext.length < 3 * 8)\n throw new Error('invalid ciphertext length');\n const out = copyBytes(ciphertext);\n AESW.decrypt(kek, out);\n if (!equalBytes(out.subarray(0, 8), AESKW_IV)) throw new Error('integrity check failed');\n out.subarray(0, 8).fill(0); // ciphertext.subarray(0, 8) === IV, but we clean it anyway\n return out.subarray(8);\n },\n })\n);\n\n/*\nWe don't support 8-byte keys. The rabbit hole:\n\n- Wycheproof says: \"NIST SP 800-38F does not define the wrapping of 8 byte keys.\n RFC 3394 Section 2 on the other hand specifies that 8 byte keys are wrapped\n by directly encrypting one block with AES.\"\n - https://github.com/C2SP/wycheproof/blob/master/doc/key_wrap.md\n - \"RFC 3394 specifies in Section 2, that the input for the key wrap\n algorithm must be at least two blocks and otherwise the constant\n field and key are simply encrypted with ECB as a single block\"\n- What RFC 3394 actually says (in Section 2):\n - \"Before being wrapped, the key data is parsed into n blocks of 64 bits.\n The only restriction the key wrap algorithm places on n is that n be\n at least two\"\n - \"For key data with length less than or equal to 64 bits, the constant\n field used in this specification and the key data form a single\n 128-bit codebook input making this key wrap unnecessary.\"\n- Which means \"assert(n >= 2)\" and \"use something else for 8 byte keys\"\n- NIST SP800-38F actually prohibits 8-byte in \"5.3.1 Mandatory Limits\".\n It states that plaintext for KW should be \"2 to 2^54 -1 semiblocks\".\n- So, where does \"directly encrypt single block with AES\" come from?\n - Not RFC 3394. Pseudocode of key wrap in 2.2 explicitly uses\n loop of 6 for any code path\n - There is a weird W3C spec:\n https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#kw-aes128\n - This spec is outdated, as admitted by Wycheproof authors\n - There is RFC 5649 for padded key wrap, which is padding construction on\n top of AESKW. In '4.1.2' it says: \"If the padded plaintext contains exactly\n eight octets, then prepend the AIV as defined in Section 3 above to P[1] and\n encrypt the resulting 128-bit block using AES in ECB mode [Modes] with key\n K (the KEK). In this case, the output is two 64-bit blocks C[0] and C[1]:\"\n - Browser subtle crypto is actually crashes on wrapping keys less than 16 bytes:\n `Error: error:1C8000E6:Provider routines::invalid input length] { opensslErrorStack: [ 'error:030000BD:digital envelope routines::update error' ]`\n\nIn the end, seems like a bug in Wycheproof.\nThe 8-byte check can be easily disabled inside of AES_W.\n*/\n\nconst AESKWP_IV = 0xa65959a6; // single u32le value\n\n/**\n * AES-KW, but with padding and allows random keys.\n * Second u32 of IV is used as counter for length.\n * [RFC 5649](https://www.rfc-editor.org/rfc/rfc5649)\n */\nexport const aeskwp: ((kek: Uint8Array) => Cipher) & {\n blockSize: number;\n} = /* @__PURE__ */ wrapCipher(\n { blockSize: 8 },\n (kek: Uint8Array): Cipher => ({\n encrypt(plaintext: Uint8Array) {\n if (!plaintext.length) throw new Error('invalid plaintext length');\n const padded = Math.ceil(plaintext.length / 8) * 8;\n const out = new Uint8Array(8 + padded);\n out.set(plaintext, 8);\n const out32 = u32(out);\n out32[0] = AESKWP_IV;\n out32[1] = byteSwap(plaintext.length);\n AESW.encrypt(kek, out);\n return out;\n },\n decrypt(ciphertext: Uint8Array) {\n // 16 because should have at least one block\n if (ciphertext.length < 16) throw new Error('invalid ciphertext length');\n const out = copyBytes(ciphertext);\n const o32 = u32(out);\n AESW.decrypt(kek, out);\n const len = byteSwap(o32[1]) >>> 0;\n const padded = Math.ceil(len / 8) * 8;\n if (o32[0] !== AESKWP_IV || out.length - 8 !== padded)\n throw new Error('integrity check failed');\n for (let i = len; i < padded; i++)\n if (out[8 + i] !== 0) throw new Error('integrity check failed');\n out.subarray(0, 8).fill(0); // ciphertext.subarray(0, 8) === IV, but we clean it anyway\n return out.subarray(8, 8 + len);\n },\n })\n);\n\n/** Unsafe low-level internal methods. May change at any time. */\nexport const unsafe: {\n expandKeyLE: typeof expandKeyLE;\n expandKeyDecLE: typeof expandKeyDecLE;\n encrypt: typeof encrypt;\n decrypt: typeof decrypt;\n encryptBlock: typeof encryptBlock;\n decryptBlock: typeof decryptBlock;\n ctrCounter: typeof ctrCounter;\n ctr32: typeof ctr32;\n} = {\n expandKeyLE,\n expandKeyDecLE,\n encrypt,\n decrypt,\n encryptBlock,\n decryptBlock,\n ctrCounter,\n ctr32,\n};\n","/**\n * GHash from AES-GCM and its little-endian \"mirror image\" Polyval from AES-SIV.\n *\n * Implemented in terms of GHash with conversion function for keys\n * GCM GHASH from\n * [NIST SP800-38d](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf),\n * SIV from\n * [RFC 8452](https://datatracker.ietf.org/doc/html/rfc8452).\n *\n * GHASH modulo: x^128 + x^7 + x^2 + x + 1\n * POLYVAL modulo: x^128 + x^127 + x^126 + x^121 + 1\n *\n * @module\n */\n// prettier-ignore\nimport {\n abytes, aexists, aoutput,\n clean, copyBytes, createView, Hash, type Input, toBytes, u32,\n} from './utils.ts';\n\nconst BLOCK_SIZE = 16;\n// TODO: rewrite\n// temporary padding buffer\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\nconst ZEROS32 = u32(ZEROS16);\nconst POLY = 0xe1; // v = 2*v % POLY\n\n// v = 2*v % POLY\n// NOTE: because x + x = 0 (add/sub is same), mul2(x) != x+x\n// We can multiply any number using montgomery ladder and this function (works as double, add is simple xor)\nconst mul2 = (s0: number, s1: number, s2: number, s3: number) => {\n const hiBit = s3 & 1;\n return {\n s3: (s2 << 31) | (s3 >>> 1),\n s2: (s1 << 31) | (s2 >>> 1),\n s1: (s0 << 31) | (s1 >>> 1),\n s0: (s0 >>> 1) ^ ((POLY << 24) & -(hiBit & 1)), // reduce % poly\n };\n};\n\nconst swapLE = (n: number) =>\n (((n >>> 0) & 0xff) << 24) |\n (((n >>> 8) & 0xff) << 16) |\n (((n >>> 16) & 0xff) << 8) |\n ((n >>> 24) & 0xff) |\n 0;\n\n/**\n * `mulX_POLYVAL(ByteReverse(H))` from spec\n * @param k mutated in place\n */\nexport function _toGHASHKey(k: Uint8Array): Uint8Array {\n k.reverse();\n const hiBit = k[15] & 1;\n // k >>= 1\n let carry = 0;\n for (let i = 0; i < k.length; i++) {\n const t = k[i];\n k[i] = (t >>> 1) | carry;\n carry = (t & 1) << 7;\n }\n k[0] ^= -hiBit & 0xe1; // if (hiBit) n ^= 0xe1000000000000000000000000000000;\n return k;\n}\n\ntype Value = { s0: number; s1: number; s2: number; s3: number };\n\nconst estimateWindow = (bytes: number) => {\n if (bytes > 64 * 1024) return 8;\n if (bytes > 1024) return 4;\n return 2;\n};\n\nclass GHASH implements Hash<GHASH> {\n readonly blockLen = BLOCK_SIZE;\n readonly outputLen = BLOCK_SIZE;\n protected s0 = 0;\n protected s1 = 0;\n protected s2 = 0;\n protected s3 = 0;\n protected finished = false;\n protected t: Value[];\n private W: number;\n private windowSize: number;\n // We select bits per window adaptively based on expectedLength\n constructor(key: Input, expectedLength?: number) {\n key = toBytes(key);\n abytes(key, 16);\n const kView = createView(key);\n let k0 = kView.getUint32(0, false);\n let k1 = kView.getUint32(4, false);\n let k2 = kView.getUint32(8, false);\n let k3 = kView.getUint32(12, false);\n // generate table of doubled keys (half of montgomery ladder)\n const doubles: Value[] = [];\n for (let i = 0; i < 128; i++) {\n doubles.push({ s0: swapLE(k0), s1: swapLE(k1), s2: swapLE(k2), s3: swapLE(k3) });\n ({ s0: k0, s1: k1, s2: k2, s3: k3 } = mul2(k0, k1, k2, k3));\n }\n const W = estimateWindow(expectedLength || 1024);\n if (![1, 2, 4, 8].includes(W))\n throw new Error('ghash: invalid window size, expected 2, 4 or 8');\n this.W = W;\n const bits = 128; // always 128 bits;\n const windows = bits / W;\n const windowSize = (this.windowSize = 2 ** W);\n const items: Value[] = [];\n // Create precompute table for window of W bits\n for (let w = 0; w < windows; w++) {\n // truth table: 00, 01, 10, 11\n for (let byte = 0; byte < windowSize; byte++) {\n // prettier-ignore\n let s0 = 0, s1 = 0, s2 = 0, s3 = 0;\n for (let j = 0; j < W; j++) {\n const bit = (byte >>> (W - j - 1)) & 1;\n if (!bit) continue;\n const { s0: d0, s1: d1, s2: d2, s3: d3 } = doubles[W * w + j];\n (s0 ^= d0), (s1 ^= d1), (s2 ^= d2), (s3 ^= d3);\n }\n items.push({ s0, s1, s2, s3 });\n }\n }\n this.t = items;\n }\n protected _updateBlock(s0: number, s1: number, s2: number, s3: number) {\n (s0 ^= this.s0), (s1 ^= this.s1), (s2 ^= this.s2), (s3 ^= this.s3);\n const { W, t, windowSize } = this;\n // prettier-ignore\n let o0 = 0, o1 = 0, o2 = 0, o3 = 0;\n const mask = (1 << W) - 1; // 2**W will kill performance.\n let w = 0;\n for (const num of [s0, s1, s2, s3]) {\n for (let bytePos = 0; bytePos < 4; bytePos++) {\n const byte = (num >>> (8 * bytePos)) & 0xff;\n for (let bitPos = 8 / W - 1; bitPos >= 0; bitPos--) {\n const bit = (byte >>> (W * bitPos)) & mask;\n const { s0: e0, s1: e1, s2: e2, s3: e3 } = t[w * windowSize + bit];\n (o0 ^= e0), (o1 ^= e1), (o2 ^= e2), (o3 ^= e3);\n w += 1;\n }\n }\n }\n this.s0 = o0;\n this.s1 = o1;\n this.s2 = o2;\n this.s3 = o3;\n }\n update(data: Input): this {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const b32 = u32(data);\n const blocks = Math.floor(data.length / BLOCK_SIZE);\n const left = data.length % BLOCK_SIZE;\n for (let i = 0; i < blocks; i++) {\n this._updateBlock(b32[i * 4 + 0], b32[i * 4 + 1], b32[i * 4 + 2], b32[i * 4 + 3]);\n }\n if (left) {\n ZEROS16.set(data.subarray(blocks * BLOCK_SIZE));\n this._updateBlock(ZEROS32[0], ZEROS32[1], ZEROS32[2], ZEROS32[3]);\n clean(ZEROS32); // clean tmp buffer\n }\n return this;\n }\n destroy() {\n const { t } = this;\n // clean precompute table\n for (const elm of t) {\n (elm.s0 = 0), (elm.s1 = 0), (elm.s2 = 0), (elm.s3 = 0);\n }\n }\n digestInto(out: Uint8Array) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n const { s0, s1, s2, s3 } = this;\n const o32 = u32(out);\n o32[0] = s0;\n o32[1] = s1;\n o32[2] = s2;\n o32[3] = s3;\n return out;\n }\n digest(): Uint8Array {\n const res = new Uint8Array(BLOCK_SIZE);\n this.digestInto(res);\n this.destroy();\n return res;\n }\n}\n\nclass Polyval extends GHASH {\n constructor(key: Input, expectedLength?: number) {\n key = toBytes(key);\n abytes(key);\n const ghKey = _toGHASHKey(copyBytes(key));\n super(ghKey, expectedLength);\n clean(ghKey);\n }\n update(data: Input): this {\n data = toBytes(data);\n aexists(this);\n const b32 = u32(data);\n const left = data.length % BLOCK_SIZE;\n const blocks = Math.floor(data.length / BLOCK_SIZE);\n for (let i = 0; i < blocks; i++) {\n this._updateBlock(\n swapLE(b32[i * 4 + 3]),\n swapLE(b32[i * 4 + 2]),\n swapLE(b32[i * 4 + 1]),\n swapLE(b32[i * 4 + 0])\n );\n }\n if (left) {\n ZEROS16.set(data.subarray(blocks * BLOCK_SIZE));\n this._updateBlock(\n swapLE(ZEROS32[3]),\n swapLE(ZEROS32[2]),\n swapLE(ZEROS32[1]),\n swapLE(ZEROS32[0])\n );\n clean(ZEROS32);\n }\n return this;\n }\n digestInto(out: Uint8Array) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // tmp ugly hack\n const { s0, s1, s2, s3 } = this;\n const o32 = u32(out);\n o32[0] = s0;\n o32[1] = s1;\n o32[2] = s2;\n o32[3] = s3;\n return out.reverse();\n }\n}\n\nexport type CHashPV = ReturnType<typeof wrapConstructorWithKey>;\nfunction wrapConstructorWithKey<H extends Hash<H>>(\n hashCons: (key: Input, expectedLength?: number) => Hash<H>\n): {\n (msg: Input, key: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(key: Input, expectedLength?: number): Hash<H>;\n} {\n const hashC = (msg: Input, key: Input): Uint8Array =>\n hashCons(key, msg.length).update(toBytes(msg)).digest();\n const tmp = hashCons(new Uint8Array(16), 0);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (key: Input, expectedLength?: number) => hashCons(key, expectedLength);\n return hashC;\n}\n\n/** GHash MAC for AES-GCM. */\nexport const ghash: CHashPV = wrapConstructorWithKey(\n (key, expectedLength) => new GHASH(key, expectedLength)\n);\n\n/** Polyval MAC for AES-SIV. */\nexport const polyval: CHashPV = wrapConstructorWithKey(\n (key, expectedLength) => new Polyval(key, expectedLength)\n);\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is boolean. */\nexport function abool(b: boolean): void {\n if (typeof b !== 'boolean') throw new Error(`boolean expected, not ${b}`);\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/**\n * Asserts something is hash\n * TODO: remove\n * @deprecated\n */\nexport function ahash(h: IHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\nexport type IHash = {\n (data: string | Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n// Used in micro\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n return BigInt(hex === '' ? '0' : '0x' + hex); // Big Endian\n}\n\n// Used in ff1\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex(bytes));\n}\n\n// Used in micro, ff1\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\n\n// TODO: remove\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async (): Promise<void> => {};\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(new Uint8Array([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\n// TODO: remove\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: string | Uint8Array): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n else if (isBytes(data)) data = copyBytes(data);\n else throw new Error('Uint8Array expected, got ' + typeof data);\n return data;\n}\n\n/**\n * Checks if two U8A use same underlying buffer and overlaps.\n * This is invalid and can corrupt data.\n */\nexport function overlapBytes(a: Uint8Array, b: Uint8Array): boolean {\n return (\n a.buffer === b.buffer && // best we can do, may fail with an obscure Proxy\n a.byteOffset < b.byteOffset + b.byteLength && // a starts before b end\n b.byteOffset < a.byteOffset + a.byteLength // b starts before a end\n );\n}\n\n/**\n * If input and output overlap and input starts before output, we will overwrite end of input before\n * we start processing it, so this is not supported for most ciphers (except chacha/salse, which designed with this)\n */\nexport function complexOverlapBytes(input: Uint8Array, output: Uint8Array): void {\n // This is very cursed. It works somehow, but I'm completely unsure,\n // reasoning about overlapping aligned windows is very hard.\n if (overlapBytes(input, output) && input.byteOffset < output.byteOffset)\n throw new Error('complex overlap of input and output is not supported');\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\n// Used in ARX only\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts: T2\n): T1 & T2 {\n if (opts == null || typeof opts !== 'object') throw new Error('options must be defined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Compares 2 uint8array-s in kinda constant time. */\nexport function equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n// TODO: remove\n/** For runtime check if class implements interface. */\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: string | Uint8Array): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n}\n\n// This will allow to re-use with composable things like packed & base encoders\n// Also, we probably can make tags composable\n\n/** Sync cipher: takes byte array and returns byte array. */\nexport type Cipher = {\n encrypt(plaintext: Uint8Array): Uint8Array;\n decrypt(ciphertext: Uint8Array): Uint8Array;\n};\n\n/** Async cipher e.g. from built-in WebCrypto. */\nexport type AsyncCipher = {\n encrypt(plaintext: Uint8Array): Promise<Uint8Array>;\n decrypt(ciphertext: Uint8Array): Promise<Uint8Array>;\n};\n\n/** Cipher with `output` argument which can optimize by doing 1 less allocation. */\nexport type CipherWithOutput = Cipher & {\n encrypt(plaintext: Uint8Array, output?: Uint8Array): Uint8Array;\n decrypt(ciphertext: Uint8Array, output?: Uint8Array): Uint8Array;\n};\n\n/**\n * Params are outside of return type, so it is accessible before calling constructor.\n * If function support multiple nonceLength's, we return the best one.\n */\nexport type CipherParams = {\n blockSize: number;\n nonceLength?: number;\n tagLength?: number;\n varSizeNonce?: boolean;\n};\n/** ARX cipher, like salsa or chacha. */\nexport type ARXCipher = ((\n key: Uint8Array,\n nonce: Uint8Array,\n AAD?: Uint8Array\n) => CipherWithOutput) & {\n blockSize: number;\n nonceLength: number;\n tagLength: number;\n};\nexport type CipherCons<T extends any[]> = (key: Uint8Array, ...args: T) => Cipher;\n/**\n * Wraps a cipher: validates args, ensures encrypt() can only be called once.\n * @__NO_SIDE_EFFECTS__\n */\nexport const wrapCipher = <C extends CipherCons<any>, P extends CipherParams>(\n params: P,\n constructor: C\n): C & P => {\n function wrappedCipher(key: Uint8Array, ...args: any[]): CipherWithOutput {\n // Validate key\n abytes(key);\n\n // Big-Endian hardware is rare. Just in case someone still decides to run ciphers:\n if (!isLE) throw new Error('Non little-endian hardware is not yet supported');\n\n // Validate nonce if nonceLength is present\n if (params.nonceLength !== undefined) {\n const nonce = args[0];\n if (!nonce) throw new Error('nonce / iv required');\n if (params.varSizeNonce) abytes(nonce);\n else abytes(nonce, params.nonceLength);\n }\n\n // Validate AAD if tagLength present\n const tagl = params.tagLength;\n if (tagl && args[1] !== undefined) {\n abytes(args[1]);\n }\n\n const cipher = constructor(key, ...args);\n const checkOutput = (fnLength: number, output?: Uint8Array) => {\n if (output !== undefined) {\n if (fnLength !== 2) throw new Error('cipher output not supported');\n abytes(output);\n }\n };\n // Create wrapped cipher with validation and single-use encryption\n let called = false;\n const wrCipher = {\n encrypt(data: Uint8Array, output?: Uint8Array) {\n if (called) throw new Error('cannot encrypt() twice with same key + nonce');\n called = true;\n abytes(data);\n checkOutput(cipher.encrypt.length, output);\n return (cipher as CipherWithOutput).encrypt(data, output);\n },\n decrypt(data: Uint8Array, output?: Uint8Array) {\n abytes(data);\n if (tagl && data.length < tagl)\n throw new Error('invalid ciphertext length: smaller than tagLength=' + tagl);\n checkOutput(cipher.decrypt.length, output);\n return (cipher as CipherWithOutput).decrypt(data, output);\n },\n };\n\n return wrCipher;\n }\n\n Object.assign(wrappedCipher, params);\n return wrappedCipher as C & P;\n};\n\n/** Represents salsa / chacha stream. */\nexport type XorStream = (\n key: Uint8Array,\n nonce: Uint8Array,\n data: Uint8Array,\n output?: Uint8Array,\n counter?: number\n) => Uint8Array;\n\n/**\n * By default, returns u8a of length.\n * When out is available, it checks it for validity and uses it.\n */\nexport function getOutput(\n expectedLength: number,\n out?: Uint8Array,\n onlyAligned = true\n): Uint8Array {\n if (out === undefined) return new Uint8Array(expectedLength);\n if (out.length !== expectedLength)\n throw new Error('invalid output length, expected ' + expectedLength + ', got: ' + out.length);\n if (onlyAligned && !isAligned32(out)) throw new Error('invalid output, must be aligned');\n return out;\n}\n\n/** Polyfill for Safari 14. */\nexport function setBigUint64(\n view: DataView,\n byteOffset: number,\n value: bigint,\n isLE: boolean\n): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\nexport function u64Lengths(dataLength: number, aadLength: number, isLE: boolean): Uint8Array {\n abool(isLE);\n const num = new Uint8Array(16);\n const view = createView(num);\n setBigUint64(view, 0, BigInt(aadLength), isLE);\n setBigUint64(view, 8, BigInt(dataLength), isLE);\n return num;\n}\n\n// Is byte array aligned to 4 byte offset (u32)?\nexport function isAligned32(bytes: Uint8Array): boolean {\n return bytes.byteOffset % 4 === 0;\n}\n\n// copy bytes to new u8a (aligned). Because Buffer.slice is broken.\nexport function copyBytes(bytes: Uint8Array): Uint8Array {\n return Uint8Array.from(bytes);\n}\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes, type CHash, type Input } from './utils.ts';\n\nexport class HMAC<T extends Hash<T>> extends Hash<HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Input): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC<T>): HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone(): HMAC<T> {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Input, message: Input): Uint8Array;\n create(hash: CHash, key: Input): HMAC<any>;\n} = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC<any>(hash, key);\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n hashCons: () => Hash<T>\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash<T>;\n} {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): Hash<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): HashXOF<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD<SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n\n constructor(outputLen: number = 32) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\nexport class SHA224 extends SHA256 {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\nexport class SHA512 extends HashMD<SHA512> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor(outputLen: number = 64) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\nexport class SHA384 extends SHA512 {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\nexport class SHA512_224 extends SHA512 {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\nexport class SHA512_256 extends SHA512 {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256: CHash = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash = /* @__PURE__ */ createHasher(() => new SHA224());\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash = /* @__PURE__ */ createHasher(() => new SHA384());\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash = /* @__PURE__ */ createHasher(() => new SHA512_224());\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { type Input, Hash, abytes, aexists, aoutput, clean, createView, toBytes } from './utils.ts';\n\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(\n view: DataView,\n byteOffset: number,\n value: bigint,\n isLE: boolean\n): void {\n if (typeof view.setBigUint64 === 'function') return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> extends Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","// inspired by\n// https://github.com/brianloveswords/buffer-crc32/blob/master/index.js\n// optimized by\n// https://stackoverflow.com/a/18639975\n\n// we don't want to have dependency in @trezor/protocol package + our implementation is simpler and faster\n\nconst getCrcTable = () =>\n new Int32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535,\n 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd,\n 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d,\n 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,\n 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,\n 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac,\n 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab,\n 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,\n 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb,\n 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea,\n 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce,\n 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,\n 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409,\n 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739,\n 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,\n 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268,\n 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0,\n 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8,\n 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,\n 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703,\n 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7,\n 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,\n 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae,\n 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6,\n 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d,\n 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5,\n 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,\n 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n ]);\n\nexport const crc32 = (buf: Buffer): Buffer => {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('Invalid crc input');\n }\n\n const table = getCrcTable();\n let crc = -1;\n for (let i = 0; i < buf.length; i++) {\n crc = table[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n }\n const buffer = Buffer.alloc(4);\n buffer.writeInt32BE(crc ^ -1, 0);\n\n return buffer;\n};\n","import { createHash, randomBytes } from 'crypto';\n\nimport { aesgcm } from './aesgcm';\nimport { curve25519, elligator2, getCurve25519KeyPair } from './curve25519';\nimport { bigEndianBytesToBigInt, getIvFromNonce, hashOfTwo, hkdf, sha256 } from './tools';\nimport { type ThpState } from '../ThpState';\nimport {\n type ThpCredentials,\n type ThpHandshakeCredentials,\n type ThpHandshakeInitResponse,\n ThpPairingMethod,\n} from '../messages';\n\nconst getProtocolName = () =>\n Buffer.concat([Buffer.from('Noise_XX_25519_AESGCM_SHA256'), Buffer.alloc(4).fill(0)]);\n\nexport const getHandshakeHash = (deviceProperties: Buffer) =>\n // 1. Set h = SHA-256(protocol_name || device_properties).\n hashOfTwo(getProtocolName(), deviceProperties);\n\n// 10. Search credentials for a pairs (trezor_static_pubkey, credential) such that trezor_masked_static_pubkey == X25519(SHA-256(trezor_static_pubkey || trezor_ephemeral_pubkey), trezor_static_pubkey).\nexport const findKnownPairingCredentials = (\n knownCredentials: ThpCredentials[],\n trezorMaskedStaticPubkey: Buffer,\n trezorEphemeralPubkey: Buffer,\n) =>\n knownCredentials.filter(c => {\n try {\n const trezorStaticPubkey = Buffer.from(c.trezor_static_public_key, 'hex');\n // X25519(SHA-256(trezor_static_pubkey || trezor_ephemeral_pubkey), trezor_static_pubkey).\n const h = hashOfTwo(trezorStaticPubkey, trezorEphemeralPubkey);\n\n return trezorMaskedStaticPubkey.compare(curve25519(h, trezorStaticPubkey)) === 0;\n } catch {\n // silent\n }\n });\n\nexport const getTrezorState = (credentials: ThpHandshakeCredentials, payload: Buffer) => {\n // 2. Set trezor_state, success = AES-GCM-DECRYPT(key=key_response, IV=0^96, ad=empty_string, plaintext=trezor_state). Assert that success is True.\n const aes = aesgcm(credentials.trezorKey, Buffer.alloc(12));\n aes.auth(Buffer.alloc(0));\n const trezorState = aes.decrypt(payload.subarray(0, 1), payload.subarray(1, 17));\n\n return trezorState.readUint8() as 0 | 1;\n};\n\ntype Curve25519KeyPair = ReturnType<typeof getCurve25519KeyPair>;\n\n// State HH1\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a#193dc526060681b4b871e6b761107fba\nexport const handleHandshakeInit = ({\n handshakeInitResponse,\n thpState,\n knownCredentials,\n hostEphemeralKeys,\n tryToUnlock,\n protobufEncoder,\n}: {\n handshakeInitResponse: ThpHandshakeInitResponse;\n thpState: ThpState;\n knownCredentials: ThpCredentials[];\n hostEphemeralKeys: Curve25519KeyPair;\n tryToUnlock: 0 | 1;\n protobufEncoder: (name: string, data: Record<string, unknown>) => { message: Buffer };\n}) => {\n if (!thpState.handshakeCredentials) {\n throw new Error('ThpStateMissing');\n }\n\n const { trezorEphemeralPubkey, trezorEncryptedStaticPubkey, tag } = handshakeInitResponse;\n const { sendNonce, recvNonce } = thpState;\n const { handshakeHash } = thpState.handshakeCredentials;\n const iv0 = getIvFromNonce(sendNonce); // should be 0\n const iv1 = getIvFromNonce(recvNonce); // should be 1\n\n let h: Buffer, point: Buffer, aes: ReturnType<typeof aesgcm>;\n\n // 1. Set h = SHA-256(protocol_name || device_properties).\n // h = hash_of_two(PROTOCOL_NAME, deviceProperties); // moved to getHandshakeHash\n h = handshakeHash;\n // 2. Set h = SHA-256(h || host_ephemeral_pubkey).\n h = hashOfTwo(h, hostEphemeralKeys.publicKey);\n // 3. Set h = SHA-256(h || try_to_unlock).\n h = hashOfTwo(h, Buffer.from([tryToUnlock]));\n // 4. Set h = SHA-256(h || trezor_ephemeral_pubkey).\n h = hashOfTwo(h, trezorEphemeralPubkey);\n // 5. Set ck, k = HKDF(protocol_name, X25519(host_ephemeral_privkey, trezor_ephemeral_pubkey)).\n point = curve25519(hostEphemeralKeys.privateKey, trezorEphemeralPubkey);\n let [ck, k] = hkdf(getProtocolName(), point);\n\n // 6. Set trezor_masked_static_pubkey, success = AES-GCM-DECRYPT(key=k, IV=0^96 (bits, 12 bytes), ad=h, plaintext=encrypted_trezor_static_pubkey). Assert that success is True.\n aes = aesgcm(k, iv0);\n aes.auth(h);\n const trezorStaticPubkey = trezorEncryptedStaticPubkey.subarray(0, 32);\n const trezorStaticPubkeyTag = trezorEncryptedStaticPubkey.subarray(32, 32 + 16);\n const trezorMaskedStaticPubkey = aes.decrypt(trezorStaticPubkey, trezorStaticPubkeyTag);\n // 7. Set h = SHA-256(h || encrypted_trezor_static_pubkey)\n h = hashOfTwo(h, trezorEncryptedStaticPubkey);\n // 8. Set ck, k = HKDF(ck, X25519(host_ephemeral_privkey, trezor_masked_static_pubkey))\n point = curve25519(hostEphemeralKeys.privateKey, trezorMaskedStaticPubkey);\n [ck, k] = hkdf(ck, point);\n\n // 9. Set tag_of_empty_string, success = AES-GCM-DECRYPT(key=k, IV=0^96 (bits, 12 bytes), ad=h, plaintext=empty_string). Assert that success is True.\n aes = aesgcm(k, iv0);\n aes.auth(h);\n aes.decrypt(Buffer.alloc(0), tag);\n // 10. Set h = SHA-256(h || tag)\n h = hashOfTwo(h, tag);\n\n // 11. Search credentials for a pairs\n const allCredentials = findKnownPairingCredentials(\n knownCredentials,\n trezorMaskedStaticPubkey,\n trezorEphemeralPubkey,\n );\n // and use first from the list (could be undefined)\n const credentials = allCredentials.length ? allCredentials[0] : undefined;\n\n // 11.1 If found set (temp_host_static_privkey, temp_host_static_pubkey) = (host_static_privkey, host_static_pubkey).\n // 11.2 If not found set (temp_host_static_privkey, temp_host_static_pubkey) = (X25519(0, B), 0).\n // NOTE: This logic is deprecated and zero keypair should never be used, source:\n // https://satoshilabs.slack.com/archives/C078GRAK58U/p1740132971826629?thread_ts=1739181741.870599&cid=C078GRAK58Us\n\n const staticKey = credentials?.host_static_key\n ? Buffer.from(credentials.host_static_key, 'hex')\n : randomBytes(32);\n const hostStaticKeys = getCurve25519KeyPair(staticKey);\n // 12. Set encrypted_host_static_pubkey = AES-GCM-ENCRYPT(key=k, IV=0^95 || 1, ad=h, plaintext=temp_host_static_pubkey).\n aes = aesgcm(k, iv1);\n aes.auth(h);\n const hostEncryptedStaticPubkey = Buffer.concat([\n aes.encrypt(hostStaticKeys.publicKey),\n aes.finish(),\n ]);\n // 13. Set h = SHA-256(h || encrypted_host_static_pubkey).\n h = hashOfTwo(h, hostEncryptedStaticPubkey);\n // 14. Set ck, k = HKDF(ck, X25519(temp_host_static_privkey, trezor_ephemeral_pubkey)).\n point = curve25519(hostStaticKeys.privateKey, trezorEphemeralPubkey);\n [ck, k] = hkdf(ck, point);\n // 15. Set payload_binary = PROTOBUF-ENCODE(type=HandshakeCompletionReqNoisePayload, host_pairing_credential).\n const { message } = protobufEncoder('ThpHandshakeCompletionReqNoisePayload', {\n host_pairing_credential: credentials?.credential,\n });\n // 16. Set *encrypted_payload* = AES-GCM-ENCRYPT(*key*=*k*, *IV*=*0^96*, *ad*=*h*, *plaintext*=*payload_binary*).\n aes = aesgcm(k, iv0);\n aes.auth(h);\n const encryptedPayload = Buffer.concat([aes.encrypt(message), aes.finish()]);\n h = hashOfTwo(h, encryptedPayload);\n\n // HH2 and HH3\n // 1. Set key_request, key_response = HKDF(ck, empty_string).\n const [hostKey, trezorKey] = hkdf(ck, Buffer.alloc(0));\n\n return {\n trezorMaskedStaticPubkey,\n trezorEncryptedStaticPubkey,\n hostEncryptedStaticPubkey,\n hostKey,\n trezorKey,\n handshakeHash: h,\n credentials,\n allCredentials,\n encryptedPayload,\n staticKey,\n hostStaticKeys,\n };\n};\n\nexport const getCpaceHostKeys = (code: Buffer, handshakeHash: Buffer) => {\n // TODO: link-to-public-docs\n // https://www.notion.so/satoshilabs/Pairing-phase-996b0e879fff4ebd9460ae27376fce76\n // If the user enters code, take the following actions:\n // 2. Compute *pregenerator* as the first 32 bytes of SHA-512(*prefix* || *code* - 6 bytes || *padding || h*), where *prefix* is the byte-string 0x08 || 0x43 || 0x50 || 0x61 || 0x63 || 0x65 || 0x32 || 0x35 || 0x35 || 0x06 and *padding* is the byte-string 0x50 || 0x00 ^ 80 || 0x20.\n // 3. Set *generator =* ELLIGATOR2(*pregenerator*).\n // 4. Generate a random 32-byte *cpace_host_private_key.*\n // 5. Set *cpace_host_public_key* = X25519(*cpace_host_private_key*, *generator*).\n // 6. Send the message CodeEntryCpaceHost(*cpace_host_public_key*) to the host.\n\n const shaCtx = createHash('sha512');\n shaCtx.update(Buffer.from([0x08, 0x43, 0x50, 0x61, 0x63, 0x65, 0x32, 0x35, 0x35, 0x06]));\n shaCtx.update(code);\n shaCtx.update(\n Buffer.concat([Buffer.from([0x6f]), Buffer.alloc(111).fill(0), Buffer.from([0x20])]),\n );\n shaCtx.update(handshakeHash);\n shaCtx.update(Buffer.from([0x00]));\n const sha = shaCtx.digest().subarray(0, 32);\n\n const generator = elligator2(sha);\n\n const privateKey = randomBytes(32);\n const publicKey = curve25519(privateKey, generator);\n\n return { privateKey, publicKey };\n};\n\nexport const getSharedSecret = (publicKey: Buffer, privateKey: Buffer) => {\n // 1. Set *shared_secret* = X25519(*cpace_host_private_key*, *cpace_trezor_public_key*).\n // 2. Set *tag* = SHA-256(*shared_secret*).\n\n const sharedSecret = curve25519(privateKey, publicKey);\n\n return sha256(Buffer.from(sharedSecret));\n};\n\nexport const validateCodeEntryTag = (\n credentials: ThpHandshakeCredentials,\n value: string,\n secret: string,\n) => {\n // 1. Assert that handshake commitment = SHA-256(secret)\n const sha = createHash('sha256').update(Buffer.from(secret, 'hex')).digest();\n const { handshakeHash, handshakeCommitment, codeEntryChallenge } = credentials;\n if (sha.compare(handshakeCommitment) !== 0) {\n throw new Error(\n `HP5: commitment mismatch ${handshakeCommitment.toString('hex')} != ${sha.toString('hex')}`,\n );\n }\n\n // 2. Assert that value = SHA-256(ThpPairingMethod.CodeEntry || h || secret || challenge) % 1000000\n const shaCtx = createHash('sha256');\n shaCtx.update(Buffer.from([ThpPairingMethod.CodeEntry]));\n shaCtx.update(handshakeHash);\n shaCtx.update(Buffer.from(secret, 'hex'));\n shaCtx.update(codeEntryChallenge);\n\n const calculatedValue = bigEndianBytesToBigInt(shaCtx.digest()) % 1000000n;\n if (calculatedValue !== BigInt(value)) {\n throw new Error(`HP5: code mismatch ${value} != ${calculatedValue.toString()}`);\n }\n};\n\nconst validatePairingTag = (\n handshakeHash: Buffer,\n method: ThpPairingMethod,\n secret: Buffer,\n value: string,\n errorCode: string,\n) => {\n const shaCtx = createHash('sha256');\n shaCtx.update(Buffer.from([method]));\n shaCtx.update(handshakeHash);\n shaCtx.update(secret);\n\n const calculatedValue = shaCtx.digest().subarray(0, 16);\n const expectedValue = Buffer.from(value, 'hex').subarray(0, 16);\n if (calculatedValue.compare(expectedValue) !== 0) {\n throw new Error(\n `${errorCode}: code mismatch ${calculatedValue.toString('hex')} != ${expectedValue.toString('hex')}`,\n );\n }\n};\n\nexport const validateQrCodeTag = (\n { handshakeHash }: ThpHandshakeCredentials,\n value: string,\n secret: string, // ThpQrCodeSecret.secret\n) =>\n // Assert that value = SHA-256(ThpPairingMethod.QrCode || h || secret)\n validatePairingTag(\n handshakeHash,\n ThpPairingMethod.QrCode,\n Buffer.from(secret, 'hex'),\n value,\n 'HP6',\n );\n\n// validate ThpNfcTagTrezor\nexport const validateNfcTag = (\n { handshakeHash }: ThpHandshakeCredentials,\n value: string, // ThpNfcTagTrezor.tag\n secret: Buffer, // ThpState.nfcSecret\n) =>\n // Assert that value = SHA-256(ThpPairingMethod.NFC || h || secret)\n validatePairingTag(handshakeHash, ThpPairingMethod.NFC, secret, value, 'HP7');\n","// TypeScript implementation of elligator2 https://www.rfc-editor.org/rfc/rfc9380.html#ell2-opt\n\nimport { littleEndianBytesToBigInt } from './tools';\n\nlet constants: ReturnType<typeof getConstants> | undefined;\n\nconst getConstants = (): {\n p: bigint;\n J: bigint;\n c3: bigint;\n c4: bigint;\n a24: bigint;\n} => {\n if (constants) {\n return constants;\n }\n\n if (typeof BigInt === 'undefined') {\n throw new Error('curve25519: BigInt not supported');\n }\n\n const p = 2n ** 255n - 19n;\n const J = 486662n;\n\n const c3 = BigInt(\n '19681161376707505956807079304988542015446066515923890162744021073123829784752',\n ); // sqrt(-1)\n\n const c4 = (p - 5n) / 8n;\n const a24 = (J + 2n) / 4n;\n\n const ctx = {\n p,\n J,\n c3,\n c4,\n a24,\n };\n\n constants = ctx;\n\n return ctx;\n};\n\n// python int.to_bytes(32, \"little\")\nfunction bigintToLittleEndianBytes(value: bigint, length: number = 32): Uint8Array {\n const byteArray = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n byteArray[i] = Number(value & 0xffn);\n value >>= 8n;\n }\n\n return byteArray;\n}\n\n// python pow(a, b, c)\nfunction pow(base: bigint, exp: bigint, mod: bigint): bigint {\n let result = 1n;\n base = base % mod;\n while (exp > 0) {\n if (exp % 2n === 1n) {\n result = (result * base) % mod;\n }\n exp = exp >> 1n;\n base = (base * base) % mod;\n }\n\n return result;\n}\n\n// decodeScalar25519 from\n// https://datatracker.ietf.org/doc/html/rfc7748#section-5\nfunction decodeScalar(scalar: Uint8Array): bigint {\n if (scalar.length !== 32) {\n throw new Error('Invalid length of scalar');\n }\n\n const array = new Uint8Array(scalar);\n array[0] &= 248;\n array[31] &= 127;\n array[31] |= 64;\n\n return littleEndianBytesToBigInt(array);\n}\n\n// decodeUCoordinate from\n// https://datatracker.ietf.org/doc/html/rfc7748#section-5\nfunction decodeCoordinate(coordinate: Uint8Array): bigint {\n if (coordinate.length !== 32) {\n throw new Error('Invalid length of coordinate');\n }\n\n const array = new Uint8Array(coordinate);\n array[array.length - 1] &= 0x7f;\n\n return littleEndianBytesToBigInt(array);\n}\n\n// encodeUCoordinate from\n// https://datatracker.ietf.org/doc/html/rfc7748#section-5\nfunction encodeCoordinate(coordinate: bigint): Uint8Array {\n return bigintToLittleEndianBytes(coordinate);\n}\n\n// Returns (second, first) if condition is true and (first, second) otherwise\nfunction conditionalSwap(a: bigint, b: bigint, condition: boolean): [bigint, bigint] {\n // Must be implemented in a way that it is constant time\n // const mask = condition ? -1n : 0n;\n // const newA = (a & ~mask) | (b & mask);\n // const newB = (a & mask) | (b & ~mask);\n // return [newA, newB];\n // NOTE: typescript doesn't guarantee constant time. leaving the code just for reference\n\n return condition ? [b, a] : [a, b];\n}\n\n// https://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#ladder-ladd-1987-m-3\n// (x4, z4) = 2 * (x2, z2)\n// (x5, z5) = (x2, z2) + (x3, z3)\n// where (x1, 1) = (x3, z3) - (x2, z2)\nfunction ladderOperation(\n { p, a24 }: ReturnType<typeof getConstants>,\n x1: bigint,\n x2: bigint,\n z2: bigint,\n x3: bigint,\n z3: bigint,\n): [bigint, bigint, bigint, bigint] {\n const a = (x2 + z2) % p;\n const aa = (a * a) % p;\n const b = (x2 - z2 + p) % p;\n const bb = (b * b) % p;\n const e = (aa - bb + p) % p;\n const c = (x3 + z3) % p;\n const d = (x3 - z3 + p) % p;\n const da = (d * a) % p;\n const cb = (c * b) % p;\n const t0 = (da + cb) % p;\n const x5 = (t0 * t0) % p;\n const t1 = (da - cb + p) % p;\n const t2 = (t1 * t1) % p;\n const z5 = (x1 * t2) % p;\n const x4 = (aa * bb) % p;\n const t3 = (a24 * e) % p;\n const t4 = (bb + t3) % p;\n const z4 = (e * t4) % p;\n\n return [x4, z4, x5, z5];\n}\n\n// X25519 from\n// https://datatracker.ietf.org/doc/html/rfc7748#section-5\nexport function curve25519(privateKey: Uint8Array, publicKey: Uint8Array): Buffer {\n const ctx = getConstants();\n const { p } = ctx;\n const k = decodeScalar(privateKey);\n const u = decodeCoordinate(publicKey) % p;\n\n const x1 = u;\n let x2 = 1n;\n let z2 = 0n;\n let x3 = u;\n let z3 = 1n;\n let swap = 0;\n\n for (let i = 255; i >= 0; i--) {\n const bit = Number((k >> BigInt(i)) & 1n);\n swap ^= bit;\n [x2, x3] = conditionalSwap(x2, x3, Boolean(swap));\n [z2, z3] = conditionalSwap(z2, z3, Boolean(swap));\n swap = bit;\n [x2, z2, x3, z3] = ladderOperation(ctx, x1, x2, z2, x3, z3);\n }\n\n [x2, x3] = conditionalSwap(x2, x3, Boolean(swap));\n [z2, z3] = conditionalSwap(z2, z3, Boolean(swap));\n\n const x = (pow(z2, p - 2n, p) * x2) % p;\n\n return Buffer.from(encodeCoordinate(x));\n}\n\n// Returns second if condition is true and first otherwise\nfunction conditionalMove(first: bigint, second: bigint, condition: boolean): bigint {\n // Must be implemented in a way that it is constant time\n // const trueMask = condition ? -1n : 0n;\n // const falseMask = ~trueMask;\n // return (first & falseMask) | (second & trueMask);\n // NOTE: typescript doesn't guarantee constant time. leaving the code just for reference\n\n return condition ? second : first;\n}\n\n// map_to_curve_elligator2_curve25519 from\n// https://www.rfc-editor.org/rfc/rfc9380.html#ell2-opt\nexport function elligator2(point: Uint8Array): Uint8Array {\n const ctx = getConstants();\n const { p, J, c4, c3 } = ctx;\n\n const u = decodeCoordinate(point) % p;\n\n let tv1 = (u * u) % p;\n tv1 = (2n * tv1) % p;\n const xd = (tv1 + 1n) % p;\n const x1n = (-J + p) % p;\n let tv2 = (xd * xd) % p;\n const gxd = (tv2 * xd) % p;\n let gx1 = (J * tv1) % p;\n gx1 = (gx1 * x1n) % p;\n gx1 = (gx1 + tv2) % p;\n gx1 = (gx1 * x1n) % p;\n\n let tv3 = (gxd * gxd) % p;\n tv2 = (tv3 * tv3) % p;\n tv3 = (tv3 * gxd) % p;\n tv3 = (tv3 * gx1) % p;\n tv2 = (tv2 * tv3) % p;\n\n let y11 = pow(tv2, c4, p);\n y11 = (y11 * tv3) % p;\n const y12 = (y11 * c3) % p;\n tv2 = (y11 * y11) % p;\n tv2 = (tv2 * gxd) % p;\n\n const e1 = tv2 == gx1;\n const y1 = conditionalMove(y12, y11, e1);\n const x2n = (x1n * tv1) % p;\n\n tv2 = (y1 * y1) % p;\n tv2 = (tv2 * gxd) % p;\n const e3 = tv2 == gx1;\n const xn = conditionalMove(x2n, x1n, e3);\n const x = (xn * pow(xd, p - 2n, p)) % p;\n\n return encodeCoordinate(x);\n}\n\n// https://cr.yp.to/ecdh.html\n// Computing secret keys\nexport const getCurve25519KeyPair = (randomBytes: Buffer) => {\n const randomPriv = Buffer.from(randomBytes);\n randomPriv[0] &= 248;\n randomPriv[31] &= 127;\n randomPriv[31] |= 64;\n\n const basepoint = Buffer.alloc(32).fill(0);\n basepoint[0] = 0x09;\n\n return {\n publicKey: curve25519(randomPriv, basepoint),\n privateKey: randomPriv,\n };\n};\n","import * as crypto from 'crypto';\n\nexport const hmacSHA256 = (key: Buffer, data: Buffer) =>\n crypto.createHmac('sha256', key).update(data).digest();\n\nexport const sha256 = (buffer: Buffer) => crypto.createHash('sha256').update(buffer).digest();\n\nexport const hkdf = (chainingKey: Buffer, input: Buffer) => {\n const tempKey = hmacSHA256(chainingKey, input);\n const output1 = hmacSHA256(tempKey, Buffer.from([0x01]));\n\n const ctxOutput2 = crypto.createHmac('sha256', tempKey).update(output1);\n ctxOutput2.update(Buffer.from([0x02]));\n const output2 = ctxOutput2.digest();\n\n return [output1, output2];\n};\n\nexport const hashOfTwo = (hash1: Buffer, hash2: Buffer) =>\n crypto.createHash('sha256').update(hash1).update(hash2).digest();\n\nexport const getIvFromNonce = (nonce: number): Buffer => {\n const iv = new Uint8Array(12);\n const nonceBytes = new Uint8Array(8);\n for (let i = 0; i < 8; i++) {\n nonceBytes[7 - i] = nonce & 0xff;\n nonce = nonce >> 8;\n }\n iv.set(nonceBytes, 4);\n\n return Buffer.from(iv);\n};\n\n// python int.from_bytes(array, \"big\")\nexport const bigEndianBytesToBigInt = (bytes: Uint8Array): bigint => {\n const result: bigint[] = [];\n const { length } = bytes;\n for (let i = 0; i < length; i++) {\n result.push(BigInt(bytes[i] * 256 ** (length - (1 + i))));\n }\n\n return result.reduce((prev, curr) => prev + curr, BigInt(0));\n};\n\n// python int.from_bytes(array, \"little\")\nexport const littleEndianBytesToBigInt = (bytes: Uint8Array): bigint => {\n let result = 0n;\n for (let i = 0; i < bytes.length; i++) {\n result += BigInt(bytes[i]) << (8n * BigInt(i));\n }\n\n return result;\n};\n","// @generated by @trezor/protobuf/protoc-gen-plugin 1.0.0\n// source: messages-thp.proto\n// DO NOT EDIT\n\nexport enum ThpPairingMethod {\n SkipPairing = 1,\n CodeEntry = 2,\n QrCode = 3,\n NFC = 4,\n}\n\nexport type ThpCodeEntryChallenge = {\n challenge: string;\n};\n\nexport type ThpCodeEntryCommitment = {\n commitment: string;\n};\n\nexport type ThpCodeEntryCpaceHostTag = {\n cpace_host_public_key: string;\n tag: string;\n};\n\nexport type ThpCodeEntryCpaceTrezor = {\n cpace_trezor_public_key: string;\n};\n\nexport type ThpCodeEntrySecret = {\n secret: string;\n};\n\n// ThpCreateNewSession replacement\n// either passphrase or on_device needs to be present\nexport type ThpCreateNewSession = { derive_cardano?: boolean } & (\n | { passphrase: string; on_device?: undefined }\n | { passphrase?: undefined; on_device: boolean }\n);\n\nexport type ThpCredentialRequest = {\n host_static_public_key: string;\n autoconnect?: boolean;\n credential?: string;\n};\n\nexport type ThpCredentialResponse = {\n trezor_static_public_key: string;\n credential: string;\n};\n\nexport type ThpDeviceProperties = {\n internal_model: string;\n model_variant: number;\n protocol_version_major: number;\n protocol_version_minor: number;\n pairing_methods: (keyof typeof ThpPairingMethod)[];\n};\n\nexport type ThpEndRequest = Record<never, never>;\n\nexport type ThpEndResponse = Record<never, never>;\n\nexport type ThpHandshakeCompletionReqNoisePayload = {\n host_pairing_credential?: string;\n};\n\nexport type ThpNfcTagHost = {\n tag: string;\n};\n\nexport type ThpNfcTagTrezor = {\n tag: string;\n};\n\nexport type ThpPairingPreparationsFinished = Record<never, never>;\n\nexport type ThpPairingRequest = {\n host_name: string;\n app_name: string;\n};\n\nexport type ThpPairingRequestApproved = Record<never, never>;\n\nexport type ThpQrCodeSecret = {\n secret: string;\n};\n\nexport type ThpQrCodeTag = {\n tag: string;\n};\n\nexport type ThpSelectMethod = {\n selected_pairing_method: ThpPairingMethod;\n};\n","import { ThpState } from './ThpState';\nimport { CRC_LENGTH, TAG_LENGTH, THP_DEFAULT_CHANNEL } from './constants';\nimport { aesgcm, crc32 } from './crypto';\nimport { THP_CONTROL_BYTE } from '../protocol-v2/constants';\nimport { getIvFromNonce } from './crypto/tools';\nimport { addAckBit, addSequenceBit, isThpMessageName } from './utils';\n\n// @trezor/protobuf encodeMessage without direct reference to protobuf root\ntype ProtobufEncoder = (\n messageName: string,\n messageData: Record<string, unknown>,\n) => {\n messageType: number;\n message: Buffer;\n};\n\nconst cipherMessage = (key: Buffer, sendNonce: number, handshakeHash: Buffer, payload: Buffer) => {\n // Set encrypted_payload = AES-GCM-ENCRYPT(key=k, IV=0^96, ad=h, plaintext=payload_binary).\n const aes = aesgcm(key, getIvFromNonce(sendNonce));\n aes.auth(handshakeHash);\n const encryptedPayload = aes.encrypt(payload);\n const encryptedPayloadTag = aes.finish();\n\n return Buffer.concat([encryptedPayload, encryptedPayloadTag]);\n};\n\n// utility for **RequestPayload inputs/params\nconst getBytesFromField = (data: Record<string, unknown>, fieldName: string) => {\n const value = data[fieldName];\n if (typeof value === 'string') {\n return Buffer.from(value, 'hex');\n }\n if (typeof value === 'number') {\n return Buffer.from([value]);\n }\n if (Buffer.isBuffer(value)) {\n return value;\n }\n};\n\nconst createChannelRequestPayload = (data: Record<string, unknown>) => {\n const nonce = getBytesFromField(data, 'nonce');\n if (!nonce) {\n throw new Error('Missing nonce field');\n }\n\n return nonce;\n};\n\nconst handshakeInitRequestPayload = (data: Record<string, unknown>, _thpState: ThpState) => {\n const key = getBytesFromField(data, 'key');\n if (!key) {\n throw new Error('ThpHandshakeInitRequest missing key field');\n }\n\n const tryToUnlock = getBytesFromField(data, 'tryToUnlock') ?? Buffer.from([0]);\n\n return Buffer.concat([key, tryToUnlock]);\n};\n\nconst handshakeCompletionRequestPayload = (data: Record<string, unknown>) => {\n const hostPubkey = getBytesFromField(data, 'hostPubkey');\n if (!hostPubkey) {\n throw new Error('ThpHandshakeCompletionRequest missing hostPubkey field');\n }\n const encryptedPayload = getBytesFromField(data, 'encryptedPayload');\n if (!encryptedPayload) {\n throw new Error('ThpHandshakeCompletionRequest missing encryptedPayload field');\n }\n\n return Buffer.concat([hostPubkey, encryptedPayload]);\n};\n\nexport const encodePayload = (name: string, data: Record<string, unknown>, thpState: ThpState) => {\n if (name === 'ThpCreateChannelRequest') {\n return createChannelRequestPayload(data);\n }\n if (name === 'ThpHandshakeInitRequest') {\n return handshakeInitRequestPayload(data, thpState);\n }\n if (name === 'ThpHandshakeCompletionRequest') {\n return handshakeCompletionRequestPayload(data);\n }\n\n return Buffer.alloc(0);\n};\n\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a\n// example: 40ffff000c639ba57ff4e0c2348189a406\n// [magic | channel | len* | nonce | crc ]\n// [40 | ffff | 000c | 639ba57ff4e0c234 | 8189a406]\n// *len includes nonce+crc\nconst createChannelRequest = (data: Buffer, channel: Buffer) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + CRC_LENGTH); // 8 nonce + 4 crc\n\n const magic = Buffer.from([THP_CONTROL_BYTE.CHANNEL_ALLOCATION_REQ]);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = crc32(message);\n\n return Buffer.concat([message, crc]);\n};\n\nconst handshakeInitRequest = (data: Buffer, channel: Buffer, enablePiggybackAck: boolean) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + CRC_LENGTH);\n\n // enable piggybackAck on Trezor\n const magic = addAckBit(THP_CONTROL_BYTE.HANDSHAKE_INIT_REQ, enablePiggybackAck ? 1 : 0);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = crc32(message);\n\n return Buffer.concat([message, crc]);\n};\n\nconst handshakeCompletionRequest = (data: Buffer, channel: Buffer, sendBit: number) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + CRC_LENGTH);\n\n const magic = addSequenceBit(THP_CONTROL_BYTE.HANDSHAKE_COMP_REQ, sendBit);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = crc32(message);\n\n return Buffer.concat([message, crc]);\n};\n\nconst getPreviousAckBit = (thpState: ThpState) => (thpState.recvAckBit ? 0 : 1);\n\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a\n// example: 2012340004d9fcce58\n// [magic | channel | len | crc ]\n// [20 | 1234 | 0004 | d9fcce58]\nexport const encodeAck = (state: ThpState) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(CRC_LENGTH);\n\n const magic = addAckBit(THP_CONTROL_BYTE.ACK_MESSAGE, state.recvAckBit);\n const message = Buffer.concat([magic, state.channel, length]);\n const crc = crc32(message);\n\n return Buffer.concat([message, crc]);\n};\n\n// Encode previous ThpAck with flipped recvAckBit\nexport const encodePreviousAck = (thpState: ThpState) => {\n const prevState = new ThpState();\n prevState.deserialize({ ...thpState.serialize(), recvAckBit: getPreviousAckBit(thpState) });\n\n return encodeAck(prevState);\n};\n\nconst encodeThpMessage = (\n messageType: string,\n data: Buffer,\n channel: Buffer,\n thpState: ThpState,\n) => {\n if (messageType === 'ThpCreateChannelRequest') {\n return createChannelRequest(data, channel);\n }\n\n if (messageType === 'ThpHandshakeInitRequest') {\n return handshakeInitRequest(data, channel, thpState.isPiggybackAckAvailable);\n }\n\n if (messageType === 'ThpHandshakeCompletionRequest') {\n return handshakeCompletionRequest(data, channel, thpState.sendBit || 0);\n }\n\n if (messageType === 'ThpAck') {\n return thpState.isPiggybackAckEnabled ? encodePreviousAck(thpState) : encodeAck(thpState);\n }\n\n throw new Error(`Unknown Thp message type ${messageType}`);\n};\n\n// TODO: link-to-public-docs\n// https://www.notion.so/satoshilabs/THP-Specification-2-0-18fdc5260606806ab573d0a7cba1897a\nexport const encodeProtobufMessage = (\n messageType: number,\n data: Buffer,\n channel: Buffer,\n thpState?: ThpState,\n) => {\n if (!thpState) {\n throw new Error('ThpStateMissing');\n }\n\n const length = Buffer.alloc(2);\n length.writeUInt16BE(1 + 2 + data.length + TAG_LENGTH + CRC_LENGTH); // 1 session_id + 2 messageType + protobuf len + 16 tag + 4 crc\n\n // TODO: distinguish encrypted and decrypted messages (not implemented in FW)\n let magic = addSequenceBit(THP_CONTROL_BYTE.ENCRYPTED, thpState.sendBit);\n if (thpState.isPiggybackAckEnabled) {\n // send ackBit with the actual message\n magic = addAckBit(magic.readUint8(), getPreviousAckBit(thpState));\n }\n const header = Buffer.concat([magic, channel]);\n\n const messageTypeBytes = Buffer.alloc(2);\n messageTypeBytes.writeUInt16BE(messageType);\n const cipheredMessage = cipherMessage(\n thpState.handshakeCredentials!.hostKey,\n thpState.sendNonce,\n Buffer.alloc(0),\n Buffer.concat([thpState.sessionId, messageTypeBytes, data]),\n );\n const message = Buffer.concat([header, length, cipheredMessage]);\n const crc = crc32(message);\n\n return Buffer.concat([message, crc]);\n};\n\n// Encode protocol-v2 message\nexport const encode = (options: {\n messageName: string;\n data: Record<string, unknown>;\n thpState?: ThpState;\n protobufEncoder: ProtobufEncoder;\n}) => {\n if (!options.thpState) {\n throw new Error('ThpStateMissing');\n }\n\n const channel = options.thpState.channel || THP_DEFAULT_CHANNEL;\n const { messageName, data, protobufEncoder, thpState } = options;\n\n let result: Buffer;\n if (isThpMessageName(messageName)) {\n const payload = encodePayload(messageName, data, thpState);\n result = encodeThpMessage(messageName, payload, channel, options.thpState);\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] encode.thp', {\n messageName,\n channelHex: channel.toString('hex'),\n sessionIdHex: thpState.sessionId.toString('hex'),\n });\n } else {\n const { messageType, message } = protobufEncoder(messageName, data);\n result = encodeProtobufMessage(messageType, message, channel, thpState);\n // eslint-disable-next-line no-console\n console.log('[TREZOR_VERIFY] encode.protobuf', {\n messageName,\n messageType,\n channelHex: channel.toString('hex'),\n sessionIdHex: thpState.sessionId.toString('hex'),\n sendBit: thpState.sendBit,\n recvBit: thpState.recvBit,\n sendNonce: thpState.sendNonce,\n recvNonce: thpState.recvNonce,\n protobufBytes: message.length,\n protobufHex: message.toString('hex'),\n dataKeys: Object.keys(data),\n });\n }\n\n return result;\n};\n","import {\n type ThpCredentials,\n type ThpDeviceProperties,\n type ThpHandshakeCredentials,\n type ThpMessageSyncBit,\n ThpPairingMethod,\n} from './messages';\n\nexport type ThpStateSerialized = {\n properties?: ThpDeviceProperties;\n credentials: ThpCredentials[];\n} & ThpChannelState;\n\nexport type ThpChannelState = {\n channel: string; // 2 bytes as hex\n sendBit: ThpMessageSyncBit; // host synchronization bit\n recvBit: ThpMessageSyncBit; // device synchronization bit\n sendAckBit: ThpMessageSyncBit; // host ack bit\n recvAckBit: ThpMessageSyncBit; // device ack bit\n sendNonce: number; // host nonce\n recvNonce: number; // device nonce\n expectedResponses: number[]; // expected responses from the device\n recentMessage: string;\n piggybackAckEnabled?: boolean;\n};\n\nexport type ThpPhase = 'handshake' | 'pairing' | 'paired';\n\nexport class ThpState {\n private _properties?: ThpDeviceProperties;\n private _pairingCredentials: ThpCredentials[] = [];\n private _phase: ThpPhase = 'handshake';\n private _isPaired: boolean = false;\n private _pairingTagPromise: { abort: () => Promise<void> } | undefined;\n private _cancelablePromise: boolean = false;\n private _handshakeCredentials?: ThpHandshakeCredentials;\n private _channel: Buffer = Buffer.alloc(0);\n private _sendBit: ThpMessageSyncBit = 0;\n private _sendAckBit: ThpMessageSyncBit = 0;\n private _sendNonce: number = 0;\n private _recvBit: ThpMessageSyncBit = 0;\n private _recvAckBit: ThpMessageSyncBit = 0;\n private _recvNonce: number = 1;\n private _expectedResponses: number[] = [];\n private _selectedMethod?: ThpPairingMethod;\n private _nfcSecret?: Buffer;\n private _sessionId: Buffer = Buffer.alloc(1);\n private _sessionIdCounter: number = 0;\n private _piggybackAckAvailable: boolean = false;\n private _piggybackAckEnabled: boolean = false;\n private _recentMessage: Buffer = Buffer.alloc(0);\n\n get recentMessage() {\n return this._recentMessage;\n }\n\n setRecentMessage(msg: Buffer) {\n this._recentMessage = msg;\n }\n\n get pairingTagPromise() {\n return this._pairingTagPromise;\n }\n\n setPairingTagPromise(p?: { abort: () => Promise<void> }) {\n this._pairingTagPromise = p;\n }\n\n get cancelablePromise() {\n return this._cancelablePromise;\n }\n\n setCancelablePromise(p: boolean) {\n this._cancelablePromise = p;\n }\n\n get properties() {\n return this._properties;\n }\n\n setThpProperties(props: ThpDeviceProperties) {\n this._properties = props;\n // available since THP 2.1 https://github.com/trezor/trezor-firmware/pull/6202\n this._piggybackAckAvailable = props.protocol_version_minor > 0;\n }\n\n get phase() {\n return this._phase;\n }\n\n setPhase(phase: ThpPhase) {\n this._phase = phase;\n }\n\n get isPaired() {\n return this._isPaired;\n }\n\n get isAutoconnectPaired() {\n return this._isPaired && this._pairingCredentials[0]?.autoconnect;\n }\n\n setIsPaired(isPaired: boolean) {\n this._isPaired = isPaired;\n }\n\n get pairingMethod() {\n return this._selectedMethod;\n }\n\n setPairingMethod(method: ThpPairingMethod) {\n this._selectedMethod = method;\n }\n\n get pairingCredentials() {\n return this._pairingCredentials;\n }\n\n setPairingCredentials(credentials?: ThpCredentials[]) {\n if (credentials) {\n this._pairingCredentials.push(...credentials);\n } else {\n this._pairingCredentials = [];\n }\n }\n\n removePairingCredential({ credential }: ThpCredentials) {\n const index = this._pairingCredentials.findIndex(c => c.credential === credential);\n if (index >= 0) this._pairingCredentials.splice(index, 1);\n }\n\n setNfcSecret(secret: Buffer) {\n this._nfcSecret = secret;\n }\n\n get nfcSecret() {\n return this._nfcSecret;\n }\n\n get nfcData() {\n if (this._selectedMethod === ThpPairingMethod.NFC && this._nfcSecret) {\n return Buffer.concat([\n this._nfcSecret,\n this.handshakeCredentials!.handshakeHash.subarray(0, 16),\n ]);\n }\n }\n\n get channel() {\n return this._channel;\n }\n\n setChannel(channel: Buffer) {\n this._channel = channel;\n }\n\n get sendBit() {\n return this._sendBit;\n }\n\n get sendAckBit() {\n return this._sendAckBit;\n }\n\n get sendNonce() {\n return this._sendNonce;\n }\n\n get recvBit() {\n return this._recvBit;\n }\n\n get recvAckBit() {\n return this._recvAckBit;\n }\n\n get recvNonce() {\n return this._recvNonce;\n }\n\n updateAckBit(type: 'send' | 'recv') {\n if (type === 'send') {\n this._sendAckBit = this._sendAckBit > 0 ? 0 : 1;\n } else {\n this._recvAckBit = this._recvAckBit > 0 ? 0 : 1;\n }\n }\n\n updateSyncBit(type: 'send' | 'recv') {\n if (type === 'send') {\n this._sendBit = this._sendBit > 0 ? 0 : 1;\n } else {\n this._recvBit = this._recvBit > 0 ? 0 : 1;\n }\n }\n\n updateNonce(type: 'send' | 'recv') {\n if (type === 'send') {\n this._sendNonce += 1;\n } else {\n this._recvNonce += 1;\n }\n }\n\n sync(type: 'send' | 'recv', messageType: string) {\n // check if syncBit should be updated\n const updateSyncBit = ![\n 'ThpAck',\n 'ThpCreateChannelRequest',\n 'ThpCreateChannelResponse',\n ].includes(messageType);\n if (updateSyncBit) {\n this.updateAckBit(type);\n this.updateSyncBit(type);\n }\n\n // check if nonce should be updated\n const updateNonce =\n updateSyncBit &&\n ![\n 'ThpHandshakeInitRequest',\n 'ThpHandshakeInitResponse',\n 'ThpHandshakeCompletionRequest',\n 'ThpHandshakeCompletionResponse',\n ].includes(messageType);\n if (updateNonce) {\n this.updateNonce(type);\n }\n }\n\n get handshakeCredentials() {\n return this._handshakeCredentials;\n }\n\n updateHandshakeCredentials(newCredentials: Partial<ThpHandshakeCredentials>) {\n if (!this._handshakeCredentials) {\n this._handshakeCredentials = {\n pairingMethods: [],\n handshakeHash: Buffer.alloc(0),\n handshakeCommitment: Buffer.alloc(0),\n codeEntryChallenge: Buffer.alloc(0),\n trezorEncryptedStaticPubkey: Buffer.alloc(0),\n hostEncryptedStaticPubkey: Buffer.alloc(0),\n staticKey: Buffer.alloc(0),\n hostStaticPublicKey: Buffer.alloc(0),\n hostKey: Buffer.alloc(0),\n trezorKey: Buffer.alloc(0),\n trezorCpacePublicKey: Buffer.alloc(0),\n };\n }\n\n this._handshakeCredentials = {\n ...this._handshakeCredentials,\n ...newCredentials,\n };\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n createNewSessionId() {\n this._sessionIdCounter++;\n if (this._sessionIdCounter > 255) {\n this._sessionIdCounter = 1;\n }\n\n const sessionId = Buffer.alloc(1);\n sessionId.writeUint8(this._sessionIdCounter, 0);\n\n this.setSessionId(sessionId);\n\n return sessionId;\n }\n\n setSessionId(sessionId: Buffer) {\n this._sessionId = sessionId;\n }\n\n serialize(): ThpStateSerialized {\n return {\n properties: this._properties,\n channel: this.channel.toString('hex'),\n sendBit: this.sendBit,\n recvBit: this.recvBit,\n sendAckBit: this.sendAckBit,\n recvAckBit: this.recvAckBit,\n sendNonce: this.sendNonce,\n recvNonce: this.recvNonce,\n expectedResponses: this._expectedResponses.slice(0),\n credentials: this._pairingCredentials.slice(0),\n recentMessage: this._recentMessage.toString('hex'),\n piggybackAckEnabled: this._piggybackAckEnabled,\n };\n }\n\n deserialize(json: ThpChannelState) {\n // simple fields validation\n const error = new Error('ThpState.deserialize invalid state');\n if (!json || typeof json !== 'object') {\n throw error;\n }\n if (!Array.isArray(json.expectedResponses)) {\n throw error;\n }\n if (typeof json.channel !== 'string') {\n throw error;\n }\n if (typeof json.recentMessage !== 'string') {\n throw error;\n }\n [\n json.sendBit,\n json.recvBit,\n json.sendAckBit,\n json.recvAckBit,\n json.sendNonce,\n json.recvNonce,\n ...json.expectedResponses,\n ].forEach(nr => {\n if (typeof nr !== 'number') {\n throw error;\n }\n });\n\n this._channel = Buffer.from(json.channel, 'hex');\n this._expectedResponses = json.expectedResponses;\n this._sendBit = json.sendBit;\n this._recvBit = json.recvBit;\n this._sendAckBit = json.sendAckBit;\n this._recvAckBit = json.recvAckBit;\n this._sendNonce = json.sendNonce;\n this._recvNonce = json.recvNonce;\n this._recentMessage = Buffer.from(json.recentMessage, 'hex');\n this._piggybackAckEnabled =\n typeof json.piggybackAckEnabled === 'boolean' ? json.piggybackAckEnabled : false;\n }\n\n get expectedResponses() {\n return this._expectedResponses;\n }\n\n setExpectedResponses(expected: number[]) {\n this._expectedResponses = expected;\n }\n\n get isPiggybackAckAvailable() {\n return this._piggybackAckAvailable;\n }\n\n enablePiggybackAck(enabled: boolean) {\n this._piggybackAckEnabled = this._piggybackAckAvailable && enabled;\n }\n\n get isPiggybackAckEnabled() {\n return this._piggybackAckEnabled;\n }\n\n resetState() {\n this._phase = 'handshake';\n this._isPaired = false;\n this._pairingTagPromise = undefined;\n this._cancelablePromise = false;\n this._handshakeCredentials = undefined;\n this._channel = Buffer.alloc(0);\n this._sendBit = 0;\n this._sendAckBit = 0;\n this._sendNonce = 0;\n this._recvBit = 0;\n this._recvAckBit = 0;\n this._recvNonce = 1;\n this._expectedResponses = [];\n this._pairingCredentials = [];\n this._selectedMethod = undefined;\n this._nfcSecret = undefined;\n this._sessionId = Buffer.alloc(1);\n this._sessionIdCounter = 0;\n this._piggybackAckEnabled = false;\n }\n\n toString() {\n return JSON.stringify(this.serialize());\n }\n}\n","import { type ThpMessageSyncBit, ThpPairingMethod } from './messages';\nimport { THP_CONTROL_BYTE } from '../protocol-v2/constants';\n\nexport const addAckBit = (magic: number, ackBit: number) => {\n const result = Buffer.alloc(1);\n result.writeInt8(magic | (ackBit << 3));\n\n return result;\n};\n\nexport const addSequenceBit = (magic: number, seqBit: number) => {\n const result = Buffer.alloc(1);\n result.writeInt8(magic | (seqBit << 4));\n\n return result;\n};\n\n// clear 4th (ack) and 5th (sequence) bit\nexport const clearControlBit = (magic: number) => magic & ~(1 << 3) & ~(1 << 4);\n\nexport const getControlBit = (magic: number) => {\n const ackBit: ThpMessageSyncBit = (magic & (1 << 3)) === 0 ? 0 : 1;\n const sequenceBit: ThpMessageSyncBit = (magic & (1 << 4)) === 0 ? 0 : 1;\n\n return { ackBit, sequenceBit };\n};\n\n// transform protocol-v2 message header to ThpHeader object\nexport const readThpHeader = (bytes: Buffer) => {\n // 1 byte\n const magic = bytes.readUInt8();\n // sequence bit\n const { ackBit, sequenceBit } = getControlBit(magic);\n // 2 bytes channel id\n const channel = bytes.subarray(1, 3);\n\n return {\n magic: clearControlBit(magic),\n ackBit,\n sequenceBit,\n channel,\n };\n};\n\n// check if ThpAck is send/expected by Trezor\n// Trezor doesn't send ThpAck after ThpCreateChannelRequest\n// Trezor doesn't expect ThpAck ThpCreateChannelResponse\nexport const isAckExpected = (bytesOrMagic: Buffer | number[]) => {\n const isCreateChannelMessage = (magic: number) =>\n [THP_CONTROL_BYTE.CHANNEL_ALLOCATION_REQ, THP_CONTROL_BYTE.CHANNEL_ALLOCATION_RES].includes(\n magic,\n );\n\n if (Array.isArray(bytesOrMagic)) {\n return !bytesOrMagic.find(n => isCreateChannelMessage(n));\n }\n\n return !isCreateChannelMessage(bytesOrMagic.readUInt8());\n};\n\n// get expected responses from decoded request data\nexport const getExpectedResponses = (bytes: Buffer) => {\n const { magic } = readThpHeader(bytes);\n\n if (magic === THP_CONTROL_BYTE.CHANNEL_ALLOCATION_REQ) {\n return [THP_CONTROL_BYTE.CHANNEL_ALLOCATION_RES];\n }\n if (magic === THP_CONTROL_BYTE.HANDSHAKE_INIT_REQ) {\n return [THP_CONTROL_BYTE.HANDSHAKE_INIT_RES];\n }\n if (magic === THP_CONTROL_BYTE.HANDSHAKE_COMP_REQ) {\n return [THP_CONTROL_BYTE.HANDSHAKE_COMP_RES];\n }\n if (magic === THP_CONTROL_BYTE.ENCRYPTED) {\n return [THP_CONTROL_BYTE.ENCRYPTED];\n }\n\n return [];\n};\n\nexport const isThpMessageName = (name: string) =>\n [\n 'ThpCreateChannelRequest',\n 'ThpHandshakeInitRequest',\n 'ThpHandshakeCompletionRequest',\n 'ThpAck',\n ].includes(name);\n\nexport const getThpPairingMethod = (dm: ThpPairingMethod | keyof typeof ThpPairingMethod) =>\n typeof dm === 'string' ? ThpPairingMethod[dm] : dm;\n","export { buildMessage, createChunks, sendChunks } from './src/utils/send';\nexport { receive, receiveAndParse } from './src/utils/receive';\nexport { callThpMessage, parseThpMessage } from './src/thp';\n","import { protobufManager } from '@onekeyfe/hwk-trezor-protobuf';\nimport { type ThpState, type TransportProtocol, thp as protocolThp } from '@onekeyfe/hwk-trezor-protocol';\n\nimport { type AsyncResultWithTypedError } from '../types';\n\nexport const createChunks = (data: Buffer, chunkHeader: Buffer, chunkSize: number) => {\n if (!chunkSize || data.byteLength <= chunkSize) {\n const buffer = Buffer.alloc(Math.max(chunkSize, data.byteLength));\n data.copy(buffer);\n\n return [buffer];\n }\n\n // create first chunk without chunkHeader\n const chunks = [data.subarray(0, chunkSize)];\n // create following chunks prefixed with chunkHeader\n let position = chunkSize;\n while (position < data.byteLength) {\n const sliceEnd = Math.min(position + chunkSize - chunkHeader.byteLength, data.byteLength);\n const slice = data.subarray(position, sliceEnd);\n const chunk = Buffer.concat([chunkHeader, slice]);\n chunks.push(Buffer.alloc(chunkSize).fill(chunk, 0, chunk.byteLength));\n position = sliceEnd;\n }\n\n return chunks;\n};\n\ninterface BuildMessageProps {\n name: string;\n data: Record<string, unknown>;\n protocol: TransportProtocol;\n thpState?: ThpState;\n}\n\n// common protobufEncoder for protocol v1 and v2 (THP)\nexport const buildMessage = ({ name, data, protocol, thpState }: BuildMessageProps) => {\n const protobufEncoder = (messageName: string, data: Record<string, unknown>) => {\n const { messageType, message } = protobufManager.encode(messageName, data);\n\n return protocol.encode(message, { messageType });\n };\n\n if (protocol.name === 'v2') {\n // THP encoding requires more data than regular protocol.encode\n return protocolThp.encode({\n messageName: name,\n data,\n thpState,\n protobufEncoder: (messageName, data) => protobufManager.encode(messageName, data),\n });\n }\n\n return protobufEncoder(name, data);\n};\n\nexport const sendChunks = async <T, E extends string>(\n chunks: Buffer[],\n apiWrite: (chunk: Buffer) => AsyncResultWithTypedError<T, E>,\n) => {\n for (let i = 0; i < chunks.length; i++) {\n const result = await apiWrite(chunks[i]);\n if (!result.success) {\n return result;\n }\n }\n\n return { success: true as const, payload: undefined };\n};\n","import { protobufManager } from '@onekeyfe/hwk-trezor-protobuf';\nimport { PROTOCOL_MALFORMED, type TransportProtocol } from '@onekeyfe/hwk-trezor-protocol';\n\nimport { error, success } from './result';\nimport { type AbstractApi } from '../api/abstract';\n\ntype Receiver = () => ReturnType<AbstractApi['read']>;\n\nexport async function receive<T extends Receiver>(receiver: T, protocol: TransportProtocol) {\n const readResult = await receiver();\n if (!readResult.success) {\n return readResult;\n }\n\n try {\n const data = readResult.payload;\n const { length, messageType, payload, header } = protocol.decode(readResult.payload);\n const [, chunkHeader] = protocol.getHeaders(data);\n\n const result: Buffer = Buffer.alloc(length);\n payload.copy(result);\n\n let offset = payload.length;\n while (offset < length) {\n const readResult = await receiver();\n if (!readResult.success) {\n return readResult;\n }\n const data = readResult.payload;\n const dataChunkHeader = data.subarray(0, chunkHeader.length);\n if (dataChunkHeader.compare(chunkHeader) !== 0) {\n throw new Error(`Unexpected chunkHeader ${dataChunkHeader.toString('hex')}`);\n }\n\n Buffer.from(data).copy(result, offset, chunkHeader.byteLength);\n offset += data.byteLength - chunkHeader.byteLength;\n }\n\n return success({ messageType, payload: result, header, length });\n } catch (e) {\n console.warn('Protocol decode failed', {\n error: e.message,\n payload: readResult.payload.toString('hex'),\n });\n\n return error({ code: PROTOCOL_MALFORMED, message: e.message });\n }\n}\n\nexport async function receiveAndParse<T extends Receiver>(\n receiver: T,\n protocol: TransportProtocol,\n) {\n const readResult = await receive(receiver, protocol);\n if (!readResult.success) return readResult;\n\n const { messageType, payload, length } = readResult.payload;\n const message = protobufManager.decode(messageType, payload.subarray(0, length));\n\n return success(message);\n}\n","import { type Ok, type Result, err, ok } from '@onekeyfe/hwk-trezor-type-utils';\n\nimport { UNEXPECTED_ERROR } from '../errors';\nimport type { TransportError } from '../types';\n\n// The ok() factory returns Result<T, never> which is structurally Ok<T> but TS\n// does not narrow the union automatically, so we assert.\nexport const success = <T>(payload: T): Ok<T> => ok(payload) as Ok<T>;\n\nexport const error = <E extends string>({\n code,\n message,\n}: {\n code: E;\n message?: string;\n}): Result<never, TransportError<E>> => err({ code, message });\n\nexport const unknownError = <E extends string = never>(\n thrownError: Error,\n expectedErrors: E[] = [],\n) => {\n const expectedErr = expectedErrors.find(eE => eE === thrownError.message);\n if (expectedErr) {\n return error({ code: expectedErr });\n }\n\n return error({ code: UNEXPECTED_ERROR, message: thrownError.message });\n};\n","export type * from './array';\nexport * from './branded';\nexport * from './exhaustive';\nexport type * from './object';\nexport type * from './overloads';\nexport * from './result';\nexport type * from './timeout';\nexport type * from './utils';\n","/**\n * This is copy-cat of Evolu Result type.\n * @see https://www.evolu.dev/docs/api-reference/common/Result/type-aliases/Result\n */\n\nexport interface Ok<out T> {\n readonly success: true;\n readonly payload: T;\n}\n\nexport interface Err<out E> {\n readonly success: false;\n readonly error: E;\n}\n\nexport type Result<T, E = never> = Ok<T> | Err<E>;\n\nexport type InferOk<R extends Result<any, any>> = R extends Ok<infer T> ? T : never;\nexport type InferErr<R extends Result<any, any>> = R extends Err<infer E> ? E : never;\n\nexport function ok(): Result<void>;\nexport function ok<T>(payload: T): Result<T>;\nexport function ok<T>(payload?: T): Result<T> {\n return { success: true, payload: payload as T };\n}\n\nexport const err = <E>(error: E): Result<never, E> => ({ success: false, error });\n","// this file contains all PUBLIC errors\n\nexport const INTERFACE_UNABLE_TO_OPEN_DEVICE = 'Unable to open device' as const;\nexport const INTERFACE_UNABLE_TO_CLOSE_DEVICE = 'Unable to close device' as const;\n/**\n * An error occured during data transfer.\n * If user disconnects device DEVICE_DISCONNECTED_DURING_ACTION should be returned\n *\n * transports: webusb\n */\nexport const INTERFACE_DATA_TRANSFER = 'A transfer error has occurred.' as const;\n/**\n * for given path device does not exist\n *\n * transports: bridge, webusb\n *\n * bridge: https://github.com/trezor/trezord-go/blob/8f35971d3c36ea8b91ff54810397526ef8e741c5/usb/bus.go#L56\n *\n */\nexport const DEVICE_NOT_FOUND = 'device not found' as const;\n/**\n * device was enumerated but we can't read/write it\n *\n * transports: webusb\n */\nexport const DEVICE_UNREADABLE = 'Device unreadable' as const;\n/**\n * in acquire call, trying to acquire path with wrong previous session\n *\n * transports: bridge, webusb\n *\n * bridge: https://github.com/trezor/trezord-go/blob/8f35971d3c36ea8b91ff54810397526ef8e741c5/core/core.go#L138\n */\nexport const SESSION_WRONG_PREVIOUS = 'wrong previous session' as const;\n/**\n * operation on a session that does not exist\n *\n * transports: bridge, webusb\n *\n * bridge: https://github.com/trezor/trezord-go/blob/8f35971d3c36ea8b91ff54810397526ef8e741c5/core/core.go#L138\n */\nexport const SESSION_NOT_FOUND = 'session not found' as const;\n/**\n * sessions background did not respond in time\n *\n * transports: webusb\n */\nexport const SESSION_BACKGROUND_TIMEOUT = 'sessions background did not respond' as const;\n/**\n * in case transport.listen is called for another time. implementators error.\n *\n * transports: webusb\n */\nexport const ALREADY_LISTENING = 'already listening' as const;\n/**\n * attempt to use specific transport class in a wrong environment. implementators error.\n *\n * transports: webusb\n */\nexport const NATIVE_INTERFACE_NOT_AVAILABLE = 'interface not available' as const;\n/**\n * bridge returned unexpected shape of response for selected call.\n *\n * this error should be removed in the future\n */\nexport const WRONG_RESULT_TYPE = 'Wrong result type.' as const;\nexport const WRONG_ENVIRONMENT = 'This transport can not be used in this environment' as const;\n/**\n * self-explanatory\n *\n * transports: bridge, webusb\n *\n * bridge: https://github.com/trezor/trezord-go/blob/8f35971d3c36ea8b91ff54810397526ef8e741c5/usb/bus.go#L56\n */\nexport const DEVICE_DISCONNECTED_DURING_ACTION = 'device disconnected during action' as const;\nexport const OTHER_CALL_IN_PROGRESS = 'other call in progress' as const;\n// bridge\nexport const HTTP_ERROR = 'Network request failed' as const;\n// bluetooth\nexport const API_DISCONNECTED = 'Api disconnected' as const;\n/**\n * COMMON ERRORS\n */\nexport const UNEXPECTED_ERROR = 'unexpected error' as const;\n/**\n * see scheduleAction\n */\nexport const ABORTED_BY_SIGNAL = 'Aborted by signal' as const;\n/**\n * see scheduleAction\n */\nexport const ABORTED_BY_TIMEOUT = 'Aborted by timeout' as const;\n/**\n * missing udev rules on linux\n */\nexport const LIBUSB_ERROR_ACCESS = 'LIBUSB_ERROR_ACCESS' as const;\n/**\n * missing THP state\n */\nexport const THP_STATE_ERROR = 'ThpStateError' as const;\n","export { receiveThpMessage, parseThpMessage } from './receive';\nexport { sendThpMessage } from './send';\nexport { callThpMessage } from './call';\n","// receive with ThpAck\n\nimport { protobufManager } from '@onekeyfe/hwk-trezor-protobuf';\nimport { thp as protocolThp } from '@onekeyfe/hwk-trezor-protocol';\n\nimport { THP_STATE_ERROR } from '../errors';\nimport { thpLoop } from './loop';\nimport type { CommonProps } from './receiveExpectedMessage';\nimport { type receive } from '../utils/receive';\nimport { error } from '../utils/result';\n\nexport const receiveThpMessage = async ({\n thpState,\n apiRead,\n apiWrite,\n signal,\n logger,\n skipAck,\n}: Omit<CommonProps, 'chunks'>) => {\n if (!thpState) {\n return error({ code: THP_STATE_ERROR, message: 'ThpStateMissing' });\n }\n\n const result = await thpLoop({\n thpState,\n apiRead,\n apiWrite,\n signal,\n logger,\n chunks: [],\n skipAck,\n receiveOnly: true,\n });\n\n // NOTE: result should never be empty\n return result ?? error({ code: THP_STATE_ERROR, message: 'MissingResponse' });\n};\n\nexport type ParseThpMessageProps = {\n decoded: Extract<Awaited<ReturnType<typeof receive>>, { success: true }>['payload'];\n thpState?: protocolThp.ThpState;\n};\n\nexport const parseThpMessage = ({ decoded, thpState }: ParseThpMessageProps) => {\n const message = protocolThp.decode(\n decoded,\n (messageType, data) => protobufManager.decode(messageType, data),\n thpState,\n );\n\n return message;\n};\n","import { thp as protocolThp } from '@onekeyfe/hwk-trezor-protocol';\nimport { THP_CONTROL_BYTE } from '@onekeyfe/hwk-trezor-protocol';\n\nimport {\n ATTEMPTS_LIMIT,\n type CommonProps,\n THP_ACK_DEADLINE,\n THP_ACK_TIMEOUT,\n receiveExpectedMessage,\n} from './receiveExpectedMessage';\nimport { THP_STATE_ERROR } from '../errors';\nimport { error } from '../utils/result';\nimport { sendChunks } from '../utils/send';\n\ntype ThpLoopProps = CommonProps & {\n thpState: NonNullable<CommonProps['thpState']>;\n sendOnly?: boolean;\n receiveOnly?: boolean;\n};\n\nenum ThpLoopState {\n WRITE_REQUEST,\n READ_ACK,\n READ_RESPONSE,\n SEND_ACK,\n SEND_RECENT_ACK,\n // VERIFY_ACK, // TODO verify that SEND_ACK was successful and device is not sending anything\n DONE,\n}\n\nexport const thpLoop = async ({\n chunks,\n thpState,\n apiWrite,\n apiRead,\n signal,\n logger,\n skipAck,\n sendOnly,\n receiveOnly,\n}: ThpLoopProps) => {\n const caller =\n (sendOnly && 'sendThpMessage') || (receiveOnly && 'receiveThpMessage') || 'callThpMessage';\n const debug = logger ? (msg: string) => logger.debug(`${caller} ${msg}`) : () => {};\n\n let phase = receiveOnly ? ThpLoopState.READ_RESPONSE : ThpLoopState.WRITE_REQUEST;\n let writeAttempt = 0;\n let readAttempt = 0;\n const deadline = Date.now() + THP_ACK_DEADLINE;\n const isDeadlineReached = () => Date.now() >= deadline;\n const thpStateError = (message: string) => error({ code: THP_STATE_ERROR, message });\n let result;\n\n while (phase !== ThpLoopState.DONE) {\n switch (phase) {\n case ThpLoopState.WRITE_REQUEST: {\n debug(`WRITE_REQUEST attempt ${writeAttempt}`);\n\n if (++writeAttempt > ATTEMPTS_LIMIT) {\n return thpStateError('RetriesExceeded');\n }\n\n if (isDeadlineReached()) {\n return thpStateError('Aborted by deadline');\n }\n\n const sendResult = await sendChunks(chunks, apiWrite);\n debug(`WRITE_REQUEST success: ${sendResult.success}`);\n if (!sendResult.success) {\n return sendResult;\n }\n\n if (!sendOnly) {\n const expectedResponses = protocolThp.getExpectedResponses(chunks[0]);\n thpState.setExpectedResponses(expectedResponses);\n }\n\n const isAckExpected = !skipAck && protocolThp.isAckExpected(chunks[0]);\n if (isAckExpected) {\n phase = ThpLoopState.READ_ACK;\n } else if (sendOnly) {\n phase = ThpLoopState.DONE;\n } else {\n phase = ThpLoopState.READ_RESPONSE;\n }\n break;\n }\n\n case ThpLoopState.READ_ACK: {\n debug(`READ_ACK`);\n\n if (isDeadlineReached()) {\n phase = ThpLoopState.WRITE_REQUEST;\n break;\n }\n\n const ackResult = await receiveExpectedMessage(\n apiRead,\n thpState,\n signal,\n THP_ACK_TIMEOUT,\n );\n if (!ackResult.success) {\n switch (ackResult.error.code) {\n case 'UnexpectedChunk':\n break; // keep reading\n case 'UnexpectedCRC':\n return thpStateError(ackResult.error.code);\n case 'UnexpectedChannel':\n break; // keep reading. TODO: try to close unknown channel\n case 'UnexpectedRecentMessage':\n phase = ThpLoopState.SEND_RECENT_ACK;\n break;\n case 'Timeout':\n case 'UnexpectedMessage':\n case 'UnexpectedRecvBit':\n phase = ThpLoopState.WRITE_REQUEST;\n break;\n\n default:\n return ackResult;\n }\n\n break;\n }\n\n if (sendOnly) {\n phase = ThpLoopState.DONE;\n break;\n }\n\n const { ackBit } = protocolThp.readThpHeader(ackResult.payload.header);\n switch (ackResult.payload.messageType) {\n case THP_CONTROL_BYTE.ACK_MESSAGE: {\n if (ackBit === thpState.sendAckBit) {\n phase = ThpLoopState.READ_RESPONSE;\n } else {\n debug(`READ_ACK unexpected ThpAck bit`);\n }\n\n break;\n }\n case THP_CONTROL_BYTE.ERROR:\n result = ackResult;\n phase = ThpLoopState.DONE;\n break;\n default:\n if (\n thpState.isPiggybackAckAvailable &&\n ackResult.payload.messageType === THP_CONTROL_BYTE.ENCRYPTED &&\n ackBit !== thpState.sendAckBit\n ) {\n debug(`READ_ACK received response with unexpected ThpAck bit`);\n phase = ThpLoopState.WRITE_REQUEST;\n break;\n }\n\n debug(`READ_ACK received response`);\n result = ackResult;\n phase = ThpLoopState.SEND_ACK;\n break;\n }\n\n break;\n }\n\n case ThpLoopState.READ_RESPONSE: {\n debug(`READ_RESPONSE`);\n\n if (++readAttempt > ATTEMPTS_LIMIT) {\n return thpStateError('RetriesExceeded');\n }\n\n const receiveResult = await receiveExpectedMessage(apiRead, thpState, signal);\n if (!receiveResult.success) {\n switch (receiveResult.error.code) {\n case 'UnexpectedChunk':\n break; // keep reading\n case 'UnexpectedCRC':\n return thpStateError(receiveResult.error.code);\n case 'UnexpectedChannel':\n break; // keep reading. TODO: try to close unknown channel\n case 'UnexpectedRecentMessage':\n if (receiveOnly) {\n phase = ThpLoopState.SEND_RECENT_ACK;\n break;\n } else {\n return thpStateError(receiveResult.error.code);\n }\n case 'Timeout': // NOTE: timeout should never happen here as receiveExpectedMessage doesn't use it\n case 'UnexpectedMessage':\n case 'UnexpectedRecvBit':\n return thpStateError(receiveResult.error.code);\n default:\n return receiveResult;\n }\n\n break;\n }\n\n switch (receiveResult.payload.messageType) {\n case THP_CONTROL_BYTE.ACK_MESSAGE:\n break; // keep reading\n case THP_CONTROL_BYTE.ERROR:\n result = receiveResult;\n phase = ThpLoopState.DONE;\n break;\n default:\n result = receiveResult;\n phase = ThpLoopState.SEND_ACK;\n\n break;\n }\n\n break;\n }\n\n case ThpLoopState.SEND_RECENT_ACK: {\n debug('SEND_RECENT_ACK');\n\n const chunk = protocolThp.encodePreviousAck(thpState);\n const ackResult = await apiWrite(chunk, signal);\n if (!ackResult.success) {\n return ackResult;\n }\n\n if (receiveOnly) {\n phase = ThpLoopState.READ_RESPONSE;\n } else {\n phase = ThpLoopState.WRITE_REQUEST;\n }\n break;\n }\n\n case ThpLoopState.SEND_ACK: {\n const isAckExpected = protocolThp.isAckExpected(thpState.expectedResponses || []);\n debug(`SEND_ACK ${isAckExpected} with piggyback ${thpState.isPiggybackAckEnabled}`);\n\n if (!skipAck && isAckExpected && !thpState.isPiggybackAckEnabled) {\n const ack = await apiWrite(protocolThp.encodeAck(thpState), signal);\n if (!ack.success) {\n return ack;\n }\n }\n\n if (result) {\n thpState.setRecentMessage(protocolThp.getCRC(result.payload));\n }\n\n phase = ThpLoopState.DONE;\n break;\n }\n }\n }\n\n return result;\n};\n","import {\n PROTOCOL_MALFORMED,\n type ThpState,\n thp as protocolThp,\n v2 as protocolV2,\n} from '@onekeyfe/hwk-trezor-protocol';\nimport { THP_CONTROL_BYTE } from '@onekeyfe/hwk-trezor-protocol';\nimport { SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE, scheduleAction } from '@onekeyfe/hwk-trezor-utils';\n\nimport type { AbstractApi } from '../api/abstract';\nimport { type Logger } from '../types';\nimport { receive } from '../utils/receive';\nimport { error } from '../utils/result';\n\nexport const ATTEMPTS_LIMIT = 10;\nexport const THP_ACK_TIMEOUT = 10_000;\nexport const THP_ACK_DEADLINE = 30_000;\n\nexport type ReceiveResult = Awaited<ReturnType<typeof receive>>;\ntype ReceiveSuccess = Extract<ReceiveResult, { success: true }>;\ntype ReceiveError = Extract<ReceiveResult, { success: false }>;\ntype ReceiveExpectedMessageError = ReturnType<\n typeof error<\n | 'UnexpectedChunk'\n | 'UnexpectedChannel'\n | 'UnexpectedCRC'\n | 'UnexpectedRecvBit'\n | 'UnexpectedRecentMessage'\n | 'UnexpectedMessage'\n | 'Timeout'\n >\n>;\n\nexport type CommonProps = {\n apiWrite: (chunk: Buffer, signal?: AbortSignal) => ReturnType<AbstractApi['write']>;\n apiRead: (signal?: AbortSignal) => ReturnType<AbstractApi['read']>;\n thpState?: ThpState;\n skipAck?: boolean;\n signal?: AbortSignal;\n logger?: Logger;\n chunks: Buffer[];\n};\n\nconst isRecentMessage = (msg: ReceiveSuccess, thpState: ThpState) => {\n if (thpState.recentMessage.length > 0) {\n return thpState.recentMessage.compare(protocolThp.getCRC(msg.payload)) === 0;\n }\n\n return false;\n};\n\n// TODO: create it in scheduleAction\ntype ScheduleActionError = typeof SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE;\n\nexport const receiveExpectedMessage = async (\n apiRead: CommonProps['apiRead'],\n thpState: ThpState,\n signal?: AbortSignal,\n timeout?: number,\n): Promise<ReceiveResult | ReceiveExpectedMessageError> => {\n // scheduleAction returns wrapped error from the apiRead or throws error from itself (timeout, deadline, signal)\n const receiveResult = await scheduleAction(\n attemptSignal => receive(() => apiRead(attemptSignal), protocolV2),\n {\n signal,\n graceful: true,\n timeout,\n },\n ).catch(e =>\n error({\n code: e.message as ScheduleActionError,\n }),\n );\n\n if (!receiveResult.success) {\n // apiRead received gibberish for example continuation packet or empty data\n if (receiveResult.error.code === PROTOCOL_MALFORMED) {\n return error({ code: 'UnexpectedChunk' });\n }\n\n if (receiveResult.error.code === SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE) {\n return error({ code: 'Timeout' });\n }\n\n return receiveResult as ReceiveError;\n }\n\n const encodedMessage = receiveResult.payload;\n const thpHeader = protocolThp.readThpHeader(encodedMessage.header);\n\n const isExpectedChannel = thpHeader.channel.compare(thpState.channel) === 0;\n if (!isExpectedChannel) {\n return error({ code: 'UnexpectedChannel' });\n }\n\n try {\n protocolThp.validateCrc(encodedMessage);\n } catch {\n return error({ code: 'UnexpectedCRC' });\n }\n\n if (encodedMessage.messageType === THP_CONTROL_BYTE.ERROR) {\n return receiveResult;\n }\n\n if (encodedMessage.messageType === THP_CONTROL_BYTE.ACK_MESSAGE) {\n return receiveResult;\n }\n\n const isExpectedCtrlByte = thpState.expectedResponses.find(\n m => m === encodedMessage.messageType,\n );\n\n if (!isExpectedCtrlByte) {\n if (isRecentMessage(receiveResult, thpState)) {\n return error({ code: 'UnexpectedRecentMessage' });\n }\n\n return error({ code: 'UnexpectedMessage' });\n }\n\n if (thpHeader.sequenceBit !== thpState.recvBit) {\n if (isRecentMessage(receiveResult, thpState)) {\n return error({ code: 'UnexpectedRecentMessage' });\n }\n\n return error({ code: 'UnexpectedRecvBit' });\n }\n\n return receiveResult;\n};\n","export * as bufferUtils from './bufferUtils';\nexport * as enumUtils from './enumUtils';\nexport * as versionUtils from './versionUtils';\nexport type { VersionArray } from './versionUtils';\nexport * as xssFilters from './xssFilters';\nexport * from './addDashesToSpaces';\nexport * from './arrayDistinct';\nexport * from './arrayPartition';\nexport * from './arrayShuffle';\nexport * from './arrayToDictionary';\nexport * from './asciiUtils';\nexport * from './bigNumber';\nexport * from './bytesToHumanReadable';\nexport * from './cache';\nexport * from './capitalizeFirstLetter';\nexport * from './cloneObject';\nexport * from './comparison';\nexport * from './convertTaprootXpub';\nexport * from './countBytesInString';\nexport * from './createCooldown';\nexport * from './createDeferred';\nexport * from './createDeferredManager';\nexport * from './createLazy';\nexport * from './extractUrlsFromText';\nexport * from './formatBigUintToLE';\nexport * from './getLocaleSeparators';\nexport * from './getRandomInt';\nexport * from './getSynchronize';\nexport * from './getWeakRandomId';\nexport * from './getWeakRandomInt';\nexport * from './getWeakRandomNumberInRange';\nexport { hexToRgba } from './hexToRgba';\nexport { hexToRgbaArray } from './hexToRgbaArray';\nexport { isApproximatelyEqual } from './isApproximatelyEqual';\nexport * from './isArrayMember';\nexport * from './isFullPath';\nexport * from './isHex';\nexport * from './isNotNull';\nexport * from './isNotNullOrUndefined';\nexport * from './isNotUndefined';\nexport * from './isUrl';\nexport * from './isWhitelistedHost';\nexport * from './logs';\nexport * from './logsManager';\nexport * from './mergeDeepObject';\nexport * from './objectPartition';\nexport * from './parseElectrumUrl';\nexport * from './parseHostname';\nexport * from './promiseAllSequence';\nexport * from './redactUserPath';\nexport * from './resolveAfter';\nexport * from './scheduleAction';\nexport * from './serializeError';\nexport * from './splitStringEveryNCharacters';\nexport * from './throttler';\nexport * from './throwError';\nexport * from './topologicalSort';\nexport * from './typedObject';\nexport * from './typedEventEmitter';\nexport * from './urlToOnion';\nexport * from './zip';\nexport * from './removeTrailingSlashes';\nexport * from './getIntegerInRangeFromString';\nexport * from './safeBigIntStringify';\nexport * from './unique';\nexport * from './isInt';\nexport * from './number';\nexport * from './sanitizeFilename';\nexport * from './isSafeObjectKey';\n","import { type TimerId } from '@onekeyfe/hwk-trezor-type-utils';\n\nexport type ScheduledAction<T> = (signal?: AbortSignal) => Promise<T>;\n\ntype AttemptParams = {\n timeout?: number; // How many ms wait for a single action attempt (default = indefinitely)\n gap?: number; // How many ms wait before the next attempt (default = none)\n};\n\nexport type ScheduleActionParams = {\n delay?: number; // How many ms wait before calling action for the first time (default = none)\n deadline?: number; // Timestamp in which all attempts are rejected (default = none)\n attempts?:\n | number // How many attempts before failure (default = one, or infinite when deadline is set)\n | readonly AttemptParams[]; // Array of timeouts and gaps for every attempt (length = attempt count)\n signal?: AbortSignal;\n graceful?: boolean; // Abort signalling will not throw immediately but let the action handle it instead (default = false)\n attemptFailureHandler?: (error: Error) => Error | void; // break attemptLoop if `Error` is set\n} & AttemptParams; // Ignored when attempts is AttemptParams[]\n\nexport const SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE = 'Aborted by signal' as const;\nexport class RejectWhenAbortedError extends Error {\n constructor() {\n super(SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE);\n }\n}\n\nconst isArray = (\n attempts: ScheduleActionParams['attempts'],\n): attempts is readonly AttemptParams[] => Array.isArray(attempts);\n\nconst resolveAfterMs = (ms: number | undefined, clear: AbortSignal) =>\n new Promise<void>((resolve, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n if (ms === undefined) return resolve();\n // eslint-disable-next-line prefer-const\n let timeout: TimerId;\n const onClear = () => {\n clearTimeout(timeout);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n timeout = setTimeout(() => {\n clear.removeEventListener('abort', onClear);\n resolve();\n }, ms);\n clear.addEventListener('abort', onClear);\n });\n\nconst rejectAfterMs = (ms: number, reason: Error, clear: AbortSignal) =>\n new Promise<never>((_, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n // eslint-disable-next-line prefer-const\n let timeout: TimerId | undefined;\n const onClear = () => {\n clearTimeout(timeout);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n timeout = setTimeout(() => {\n clear.removeEventListener('abort', onClear);\n reject(reason);\n }, ms);\n clear.addEventListener('abort', onClear);\n });\n\nconst maybeRejectAfterMs = (ms: number | undefined, reason: Error, clear: AbortSignal) =>\n ms === undefined ? [] : [rejectAfterMs(ms, reason, clear)];\n\nconst rejectWhenAborted = (signal: AbortSignal | undefined, clear: AbortSignal) =>\n new Promise<never>((_, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n if (signal?.aborted) return reject(errorSignal);\n const onAbort = () => reject(errorSignal);\n signal?.addEventListener('abort', onAbort);\n const onClear = () => {\n signal?.removeEventListener('abort', onAbort);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n clear.addEventListener('abort', onClear);\n });\n\nconst resolveAction = async <T>(action: ScheduledAction<T>, clear: AbortSignal) => {\n const aborter = new AbortController();\n if (clear.aborted) aborter.abort();\n const onClear = () => {\n clear.removeEventListener('abort', onClear);\n aborter.abort();\n };\n clear.addEventListener('abort', onClear);\n try {\n return await new Promise<T>(resolve => resolve(action(aborter.signal)));\n } finally {\n if (!clear.aborted) clear.removeEventListener('abort', onClear);\n }\n};\n\nconst attemptLoop = async <T>(\n attempts: number,\n attempt: (attempt: number, signal: AbortSignal) => Promise<T>,\n failure: (attempt: number, error: Error) => Promise<Error | void>,\n clear: AbortSignal,\n) => {\n // Tries only (attempts - 1) times, because the last attempt throws its error\n for (let a = 0; a < attempts - 1; a++) {\n if (clear.aborted) break;\n const aborter = new AbortController();\n const onClear = () => aborter.abort();\n clear.addEventListener('abort', onClear);\n try {\n return await attempt(a, aborter.signal);\n } catch (error) {\n onClear();\n\n await failure(a, error);\n } finally {\n clear.removeEventListener('abort', onClear);\n }\n }\n\n return clear.aborted\n ? Promise.reject(new RejectWhenAbortedError())\n : attempt(attempts - 1, clear);\n};\n\nexport const SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE = 'Aborted by timeout' as const;\n\nexport class ScheduleActionTimeoutError extends Error {\n constructor() {\n super(SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE);\n }\n}\n\nexport const SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE = 'Aborted by deadline' as const;\n\nexport class ScheduleActionDeadlineError extends Error {\n constructor() {\n super(SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE);\n }\n}\n\nexport const scheduleAction = async <T>(\n action: ScheduledAction<T>,\n params: ScheduleActionParams,\n) => {\n const { signal, delay, attempts, timeout, deadline, gap, attemptFailureHandler } = params;\n const deadlineMs = deadline && deadline - Date.now();\n const attemptCount = isArray(attempts)\n ? attempts.length\n : (attempts ?? (deadline ? Infinity : 1));\n const clearAborter = new AbortController();\n const clear = clearAborter.signal;\n const getParams = isArray(attempts)\n ? (attempt: number) => attempts[attempt]\n : () => ({ timeout, gap });\n const errorDeadline = new ScheduleActionDeadlineError();\n const errorTimeout = new ScheduleActionTimeoutError();\n\n const graceful = params.graceful && signal;\n const actionAborter = new AbortController();\n if (graceful) {\n if (signal.aborted) {\n actionAborter.abort();\n } else {\n const onAbort = () => {\n signal.removeEventListener('abort', onAbort);\n clear.removeEventListener('abort', onAbort);\n actionAborter.abort();\n };\n signal.addEventListener('abort', onAbort);\n clear.addEventListener('abort', onAbort);\n }\n }\n\n try {\n return await Promise.race([\n ...(graceful ? [] : [rejectWhenAborted(signal, clear)]),\n ...maybeRejectAfterMs(deadlineMs, errorDeadline, clear),\n resolveAfterMs(delay, clear).then(() =>\n attemptLoop(\n attemptCount,\n (attempt, abort) =>\n Promise.race([\n ...maybeRejectAfterMs(getParams(attempt).timeout, errorTimeout, clear),\n resolveAction(action, abort),\n ]),\n (attempt, error) => {\n const errorHandlerResult = attemptFailureHandler?.(error);\n\n return errorHandlerResult\n ? Promise.reject(errorHandlerResult)\n : resolveAfterMs(getParams(attempt).gap ?? 0, clear);\n },\n graceful ? actionAborter.signal : clear,\n ),\n ),\n ]);\n } finally {\n clearAborter.abort();\n }\n};\n","import { THP_STATE_ERROR } from '../errors';\nimport { thpLoop } from './loop';\nimport type { CommonProps } from './receiveExpectedMessage';\nimport { error } from '../utils/result';\n\nexport const callThpMessage = async ({\n thpState,\n chunks,\n apiWrite,\n apiRead,\n signal,\n logger,\n}: CommonProps) => {\n if (!thpState) {\n return error({ code: THP_STATE_ERROR, message: 'ThpStateMissing' });\n }\n\n const result = await thpLoop({ chunks, thpState, apiWrite, apiRead, signal, logger });\n\n // NOTE: result should never be empty\n return result ?? error({ code: THP_STATE_ERROR, message: 'MissingResponse' });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA,YAAQ,aAAa;AACrB,YAAQ,cAAc;AACtB,YAAQ,gBAAgB;AAExB,QAAI,SAAS,CAAC;AACd,QAAI,YAAY,CAAC;AACjB,QAAI,MAAM,OAAO,eAAe,cAAc,aAAa;AAE3D,QAAI,OAAO;AACX,SAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG;AAC/C,aAAO,CAAC,IAAI,KAAK,CAAC;AAClB,gBAAU,KAAK,WAAW,CAAC,CAAC,IAAI;AAAA,IAClC;AAHS;AAAO;AAOhB,cAAU,IAAI,WAAW,CAAC,CAAC,IAAI;AAC/B,cAAU,IAAI,WAAW,CAAC,CAAC,IAAI;AAE/B,aAAS,QAAS,KAAK;AACrB,UAAIA,OAAM,IAAI;AAEd,UAAIA,OAAM,IAAI,GAAG;AACf,cAAM,IAAI,MAAM,gDAAgD;AAAA,MAClE;AAIA,UAAI,WAAW,IAAI,QAAQ,GAAG;AAC9B,UAAI,aAAa,GAAI,YAAWA;AAEhC,UAAI,kBAAkB,aAAaA,OAC/B,IACA,IAAK,WAAW;AAEpB,aAAO,CAAC,UAAU,eAAe;AAAA,IACnC;AAGA,aAAS,WAAY,KAAK;AACxB,UAAI,OAAO,QAAQ,GAAG;AACtB,UAAI,WAAW,KAAK,CAAC;AACrB,UAAI,kBAAkB,KAAK,CAAC;AAC5B,cAAS,WAAW,mBAAmB,IAAI,IAAK;AAAA,IAClD;AAEA,aAAS,YAAa,KAAK,UAAU,iBAAiB;AACpD,cAAS,WAAW,mBAAmB,IAAI,IAAK;AAAA,IAClD;AAEA,aAAS,YAAa,KAAK;AACzB,UAAI;AACJ,UAAI,OAAO,QAAQ,GAAG;AACtB,UAAI,WAAW,KAAK,CAAC;AACrB,UAAI,kBAAkB,KAAK,CAAC;AAE5B,UAAI,MAAM,IAAI,IAAI,YAAY,KAAK,UAAU,eAAe,CAAC;AAE7D,UAAI,UAAU;AAGd,UAAIA,OAAM,kBAAkB,IACxB,WAAW,IACX;AAEJ,UAAIC;AACJ,WAAKA,KAAI,GAAGA,KAAID,MAAKC,MAAK,GAAG;AAC3B,cACG,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,KAChC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,KACpC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,IACrC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC;AACjC,YAAI,SAAS,IAAK,OAAO,KAAM;AAC/B,YAAI,SAAS,IAAK,OAAO,IAAK;AAC9B,YAAI,SAAS,IAAI,MAAM;AAAA,MACzB;AAEA,UAAI,oBAAoB,GAAG;AACzB,cACG,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,IAChC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK;AACvC,YAAI,SAAS,IAAI,MAAM;AAAA,MACzB;AAEA,UAAI,oBAAoB,GAAG;AACzB,cACG,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,KAChC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,IACpC,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK;AACvC,YAAI,SAAS,IAAK,OAAO,IAAK;AAC9B,YAAI,SAAS,IAAI,MAAM;AAAA,MACzB;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,gBAAiB,KAAK;AAC7B,aAAO,OAAO,OAAO,KAAK,EAAI,IAC5B,OAAO,OAAO,KAAK,EAAI,IACvB,OAAO,OAAO,IAAI,EAAI,IACtB,OAAO,MAAM,EAAI;AAAA,IACrB;AAEA,aAAS,YAAa,OAAO,OAAO,KAAK;AACvC,UAAI;AACJ,UAAI,SAAS,CAAC;AACd,eAASA,KAAI,OAAOA,KAAI,KAAKA,MAAK,GAAG;AACnC,eACI,MAAMA,EAAC,KAAK,KAAM,aAClB,MAAMA,KAAI,CAAC,KAAK,IAAK,UACtB,MAAMA,KAAI,CAAC,IAAI;AAClB,eAAO,KAAK,gBAAgB,GAAG,CAAC;AAAA,MAClC;AACA,aAAO,OAAO,KAAK,EAAE;AAAA,IACvB;AAEA,aAAS,cAAe,OAAO;AAC7B,UAAI;AACJ,UAAID,OAAM,MAAM;AAChB,UAAI,aAAaA,OAAM;AACvB,UAAI,QAAQ,CAAC;AACb,UAAI,iBAAiB;AAGrB,eAASC,KAAI,GAAGC,QAAOF,OAAM,YAAYC,KAAIC,OAAMD,MAAK,gBAAgB;AACtE,cAAM,KAAK,YAAY,OAAOA,IAAIA,KAAI,iBAAkBC,QAAOA,QAAQD,KAAI,cAAe,CAAC;AAAA,MAC7F;AAGA,UAAI,eAAe,GAAG;AACpB,cAAM,MAAMD,OAAM,CAAC;AACnB,cAAM;AAAA,UACJ,OAAO,OAAO,CAAC,IACf,OAAQ,OAAO,IAAK,EAAI,IACxB;AAAA,QACF;AAAA,MACF,WAAW,eAAe,GAAG;AAC3B,eAAO,MAAMA,OAAM,CAAC,KAAK,KAAK,MAAMA,OAAM,CAAC;AAC3C,cAAM;AAAA,UACJ,OAAO,OAAO,EAAE,IAChB,OAAQ,OAAO,IAAK,EAAI,IACxB,OAAQ,OAAO,IAAK,EAAI,IACxB;AAAA,QACF;AAAA,MACF;AAEA,aAAO,MAAM,KAAK,EAAE;AAAA,IACtB;AAAA;AAAA;;;ACrJA;AAAA;AAAA;AAAA;AACA,YAAQ,OAAO,SAAU,QAAQ,QAAQG,OAAM,MAAM,QAAQ;AAC3D,UAAI,GAAG;AACP,UAAI,OAAQ,SAAS,IAAK,OAAO;AACjC,UAAI,QAAQ,KAAK,QAAQ;AACzB,UAAI,QAAQ,QAAQ;AACpB,UAAI,QAAQ;AACZ,UAAI,IAAIA,QAAQ,SAAS,IAAK;AAC9B,UAAI,IAAIA,QAAO,KAAK;AACpB,UAAI,IAAI,OAAO,SAAS,CAAC;AAEzB,WAAK;AAEL,UAAI,KAAM,KAAM,CAAC,SAAU;AAC3B,YAAO,CAAC;AACR,eAAS;AACT,aAAO,QAAQ,GAAG,IAAK,IAAI,MAAO,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,MAAC;AAE3E,UAAI,KAAM,KAAM,CAAC,SAAU;AAC3B,YAAO,CAAC;AACR,eAAS;AACT,aAAO,QAAQ,GAAG,IAAK,IAAI,MAAO,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,MAAC;AAE3E,UAAI,MAAM,GAAG;AACX,YAAI,IAAI;AAAA,MACV,WAAW,MAAM,MAAM;AACrB,eAAO,IAAI,OAAQ,IAAI,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,YAAI,IAAI,KAAK,IAAI,GAAG,IAAI;AACxB,YAAI,IAAI;AAAA,MACV;AACA,cAAQ,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI;AAAA,IAChD;AAEA,YAAQ,QAAQ,SAAU,QAAQ,OAAO,QAAQA,OAAM,MAAM,QAAQ;AACnE,UAAI,GAAG,GAAG;AACV,UAAI,OAAQ,SAAS,IAAK,OAAO;AACjC,UAAI,QAAQ,KAAK,QAAQ;AACzB,UAAI,QAAQ,QAAQ;AACpB,UAAI,KAAM,SAAS,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI;AAC9D,UAAI,IAAIA,QAAO,IAAK,SAAS;AAC7B,UAAI,IAAIA,QAAO,IAAI;AACnB,UAAI,IAAI,QAAQ,KAAM,UAAU,KAAK,IAAI,QAAQ,IAAK,IAAI;AAE1D,cAAQ,KAAK,IAAI,KAAK;AAEtB,UAAI,MAAM,KAAK,KAAK,UAAU,UAAU;AACtC,YAAI,MAAM,KAAK,IAAI,IAAI;AACvB,YAAI;AAAA,MACN,OAAO;AACL,YAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG;AACzC,YAAI,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;AACrC;AACA,eAAK;AAAA,QACP;AACA,YAAI,IAAI,SAAS,GAAG;AAClB,mBAAS,KAAK;AAAA,QAChB,OAAO;AACL,mBAAS,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK;AAAA,QACrC;AACA,YAAI,QAAQ,KAAK,GAAG;AAClB;AACA,eAAK;AAAA,QACP;AAEA,YAAI,IAAI,SAAS,MAAM;AACrB,cAAI;AACJ,cAAI;AAAA,QACN,WAAW,IAAI,SAAS,GAAG;AACzB,eAAM,QAAQ,IAAK,KAAK,KAAK,IAAI,GAAG,IAAI;AACxC,cAAI,IAAI;AAAA,QACV,OAAO;AACL,cAAI,QAAQ,KAAK,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI;AACrD,cAAI;AAAA,QACN;AAAA,MACF;AAEA,aAAO,QAAQ,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,MAAC;AAE/E,UAAK,KAAK,OAAQ;AAClB,cAAQ;AACR,aAAO,OAAO,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,MAAC;AAE9E,aAAO,SAAS,IAAI,CAAC,KAAK,IAAI;AAAA,IAChC;AAAA;AAAA;;;ACpFA;AAAA;AAAA;AAAA;AAUA,QAAM,SAAS;AACf,QAAM,UAAU;AAChB,QAAM,sBACH,OAAO,WAAW,cAAc,OAAO,OAAO,KAAK,MAAM,aACtD,OAAO,KAAK,EAAE,4BAA4B,IAC1C;AAEN,YAAQ,SAASC;AACjB,YAAQ,aAAa;AACrB,YAAQ,oBAAoB;AAE5B,QAAM,eAAe;AACrB,YAAQ,aAAa;AAgBrB,IAAAA,QAAO,sBAAsB,kBAAkB;AAE/C,QAAI,CAACA,QAAO,uBAAuB,OAAO,YAAY,eAClD,OAAO,QAAQ,UAAU,YAAY;AACvC,cAAQ;AAAA,QACN;AAAA,MAEF;AAAA,IACF;AAEA,aAAS,oBAAqB;AAE5B,UAAI;AACF,cAAM,MAAM,IAAI,WAAW,CAAC;AAC5B,cAAM,QAAQ,EAAE,KAAK,WAAY;AAAE,iBAAO;AAAA,QAAG,EAAE;AAC/C,eAAO,eAAe,OAAO,WAAW,SAAS;AACjD,eAAO,eAAe,KAAK,KAAK;AAChC,eAAO,IAAI,IAAI,MAAM;AAAA,MACvB,SAAS,GAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,eAAeA,QAAO,WAAW,UAAU;AAAA,MAChD,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,YAAI,CAACA,QAAO,SAAS,IAAI,EAAG,QAAO;AACnC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAED,WAAO,eAAeA,QAAO,WAAW,UAAU;AAAA,MAChD,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,YAAI,CAACA,QAAO,SAAS,IAAI,EAAG,QAAO;AACnC,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAED,aAAS,aAAc,QAAQ;AAC7B,UAAI,SAAS,cAAc;AACzB,cAAM,IAAI,WAAW,gBAAgB,SAAS,gCAAgC;AAAA,MAChF;AAEA,YAAM,MAAM,IAAI,WAAW,MAAM;AACjC,aAAO,eAAe,KAAKA,QAAO,SAAS;AAC3C,aAAO;AAAA,IACT;AAYA,aAASA,QAAQ,KAAK,kBAAkB,QAAQ;AAE9C,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI,OAAO,qBAAqB,UAAU;AACxC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AACA,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,aAAO,KAAK,KAAK,kBAAkB,MAAM;AAAA,IAC3C;AAEA,IAAAA,QAAO,WAAW;AAElB,aAAS,KAAM,OAAO,kBAAkB,QAAQ;AAC9C,UAAI,OAAO,UAAU,UAAU;AAC7B,eAAO,WAAW,OAAO,gBAAgB;AAAA,MAC3C;AAEA,UAAI,YAAY,OAAO,KAAK,GAAG;AAC7B,eAAO,cAAc,KAAK;AAAA,MAC5B;AAEA,UAAI,SAAS,MAAM;AACjB,cAAM,IAAI;AAAA,UACR,oHAC0C,OAAO;AAAA,QACnD;AAAA,MACF;AAEA,UAAI,WAAW,OAAO,WAAW,KAC5B,SAAS,WAAW,MAAM,QAAQ,WAAW,GAAI;AACpD,eAAO,gBAAgB,OAAO,kBAAkB,MAAM;AAAA,MACxD;AAEA,UAAI,OAAO,sBAAsB,gBAC5B,WAAW,OAAO,iBAAiB,KACnC,SAAS,WAAW,MAAM,QAAQ,iBAAiB,IAAK;AAC3D,eAAO,gBAAgB,OAAO,kBAAkB,MAAM;AAAA,MACxD;AAEA,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,UAAU,MAAM,WAAW,MAAM,QAAQ;AAC/C,UAAI,WAAW,QAAQ,YAAY,OAAO;AACxC,eAAOA,QAAO,KAAK,SAAS,kBAAkB,MAAM;AAAA,MACtD;AAEA,YAAM,IAAI,WAAW,KAAK;AAC1B,UAAI,EAAG,QAAO;AAEd,UAAI,OAAO,WAAW,eAAe,OAAO,eAAe,QACvD,OAAO,MAAM,OAAO,WAAW,MAAM,YAAY;AACnD,eAAOA,QAAO,KAAK,MAAM,OAAO,WAAW,EAAE,QAAQ,GAAG,kBAAkB,MAAM;AAAA,MAClF;AAEA,YAAM,IAAI;AAAA,QACR,oHAC0C,OAAO;AAAA,MACnD;AAAA,IACF;AAUA,IAAAA,QAAO,OAAO,SAAU,OAAO,kBAAkB,QAAQ;AACvD,aAAO,KAAK,OAAO,kBAAkB,MAAM;AAAA,IAC7C;AAIA,WAAO,eAAeA,QAAO,WAAW,WAAW,SAAS;AAC5D,WAAO,eAAeA,SAAQ,UAAU;AAExC,aAAS,WAAY,MAAM;AACzB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,wCAAwC;AAAA,MAC9D,WAAW,OAAO,GAAG;AACnB,cAAM,IAAI,WAAW,gBAAgB,OAAO,gCAAgC;AAAA,MAC9E;AAAA,IACF;AAEA,aAAS,MAAO,MAAM,MAAM,UAAU;AACpC,iBAAW,IAAI;AACf,UAAI,QAAQ,GAAG;AACb,eAAO,aAAa,IAAI;AAAA,MAC1B;AACA,UAAI,SAAS,QAAW;AAItB,eAAO,OAAO,aAAa,WACvB,aAAa,IAAI,EAAE,KAAK,MAAM,QAAQ,IACtC,aAAa,IAAI,EAAE,KAAK,IAAI;AAAA,MAClC;AACA,aAAO,aAAa,IAAI;AAAA,IAC1B;AAMA,IAAAA,QAAO,QAAQ,SAAU,MAAM,MAAM,UAAU;AAC7C,aAAO,MAAM,MAAM,MAAM,QAAQ;AAAA,IACnC;AAEA,aAAS,YAAa,MAAM;AAC1B,iBAAW,IAAI;AACf,aAAO,aAAa,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;AAAA,IACtD;AAKA,IAAAA,QAAO,cAAc,SAAU,MAAM;AACnC,aAAO,YAAY,IAAI;AAAA,IACzB;AAIA,IAAAA,QAAO,kBAAkB,SAAU,MAAM;AACvC,aAAO,YAAY,IAAI;AAAA,IACzB;AAEA,aAAS,WAAY,QAAQ,UAAU;AACrC,UAAI,OAAO,aAAa,YAAY,aAAa,IAAI;AACnD,mBAAW;AAAA,MACb;AAEA,UAAI,CAACA,QAAO,WAAW,QAAQ,GAAG;AAChC,cAAM,IAAI,UAAU,uBAAuB,QAAQ;AAAA,MACrD;AAEA,YAAM,SAAS,WAAW,QAAQ,QAAQ,IAAI;AAC9C,UAAI,MAAM,aAAa,MAAM;AAE7B,YAAM,SAAS,IAAI,MAAM,QAAQ,QAAQ;AAEzC,UAAI,WAAW,QAAQ;AAIrB,cAAM,IAAI,MAAM,GAAG,MAAM;AAAA,MAC3B;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,cAAe,OAAO;AAC7B,YAAM,SAAS,MAAM,SAAS,IAAI,IAAI,QAAQ,MAAM,MAAM,IAAI;AAC9D,YAAM,MAAM,aAAa,MAAM;AAC/B,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAClC,YAAI,CAAC,IAAI,MAAM,CAAC,IAAI;AAAA,MACtB;AACA,aAAO;AAAA,IACT;AAEA,aAAS,cAAe,WAAW;AACjC,UAAI,WAAW,WAAW,UAAU,GAAG;AACrC,cAAM,OAAO,IAAI,WAAW,SAAS;AACrC,eAAO,gBAAgB,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,MACtE;AACA,aAAO,cAAc,SAAS;AAAA,IAChC;AAEA,aAAS,gBAAiB,OAAO,YAAY,QAAQ;AACnD,UAAI,aAAa,KAAK,MAAM,aAAa,YAAY;AACnD,cAAM,IAAI,WAAW,sCAAsC;AAAA,MAC7D;AAEA,UAAI,MAAM,aAAa,cAAc,UAAU,IAAI;AACjD,cAAM,IAAI,WAAW,sCAAsC;AAAA,MAC7D;AAEA,UAAI;AACJ,UAAI,eAAe,UAAa,WAAW,QAAW;AACpD,cAAM,IAAI,WAAW,KAAK;AAAA,MAC5B,WAAW,WAAW,QAAW;AAC/B,cAAM,IAAI,WAAW,OAAO,UAAU;AAAA,MACxC,OAAO;AACL,cAAM,IAAI,WAAW,OAAO,YAAY,MAAM;AAAA,MAChD;AAGA,aAAO,eAAe,KAAKA,QAAO,SAAS;AAE3C,aAAO;AAAA,IACT;AAEA,aAAS,WAAY,KAAK;AACxB,UAAIA,QAAO,SAAS,GAAG,GAAG;AACxB,cAAM,MAAM,QAAQ,IAAI,MAAM,IAAI;AAClC,cAAM,MAAM,aAAa,GAAG;AAE5B,YAAI,IAAI,WAAW,GAAG;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,KAAK,GAAG,GAAG,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,WAAW,QAAW;AAC5B,YAAI,OAAO,IAAI,WAAW,YAAY,YAAY,IAAI,MAAM,GAAG;AAC7D,iBAAO,aAAa,CAAC;AAAA,QACvB;AACA,eAAO,cAAc,GAAG;AAAA,MAC1B;AAEA,UAAI,IAAI,SAAS,YAAY,MAAM,QAAQ,IAAI,IAAI,GAAG;AACpD,eAAO,cAAc,IAAI,IAAI;AAAA,MAC/B;AAAA,IACF;AAEA,aAAS,QAAS,QAAQ;AAGxB,UAAI,UAAU,cAAc;AAC1B,cAAM,IAAI,WAAW,4DACa,aAAa,SAAS,EAAE,IAAI,QAAQ;AAAA,MACxE;AACA,aAAO,SAAS;AAAA,IAClB;AAEA,aAAS,WAAY,QAAQ;AAC3B,UAAI,CAAC,UAAU,QAAQ;AACrB,iBAAS;AAAA,MACX;AACA,aAAOA,QAAO,MAAM,CAAC,MAAM;AAAA,IAC7B;AAEA,IAAAA,QAAO,WAAW,SAAS,SAAU,GAAG;AACtC,aAAO,KAAK,QAAQ,EAAE,cAAc,QAClC,MAAMA,QAAO;AAAA,IACjB;AAEA,IAAAA,QAAO,UAAU,SAAS,QAAS,GAAG,GAAG;AACvC,UAAI,WAAW,GAAG,UAAU,EAAG,KAAIA,QAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,UAAU;AACxE,UAAI,WAAW,GAAG,UAAU,EAAG,KAAIA,QAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,UAAU;AACxE,UAAI,CAACA,QAAO,SAAS,CAAC,KAAK,CAACA,QAAO,SAAS,CAAC,GAAG;AAC9C,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,UAAI,MAAM,EAAG,QAAO;AAEpB,UAAI,IAAI,EAAE;AACV,UAAI,IAAI,EAAE;AAEV,eAAS,IAAI,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG;AAClD,YAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AACjB,cAAI,EAAE,CAAC;AACP,cAAI,EAAE,CAAC;AACP;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,EAAG,QAAO;AAClB,UAAI,IAAI,EAAG,QAAO;AAClB,aAAO;AAAA,IACT;AAEA,IAAAA,QAAO,aAAa,SAAS,WAAY,UAAU;AACjD,cAAQ,OAAO,QAAQ,EAAE,YAAY,GAAG;AAAA,QACtC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAEA,IAAAA,QAAO,SAAS,SAAS,OAAQ,MAAM,QAAQ;AAC7C,UAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,cAAM,IAAI,UAAU,6CAA6C;AAAA,MACnE;AAEA,UAAI,KAAK,WAAW,GAAG;AACrB,eAAOA,QAAO,MAAM,CAAC;AAAA,MACvB;AAEA,UAAI;AACJ,UAAI,WAAW,QAAW;AACxB,iBAAS;AACT,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,oBAAU,KAAK,CAAC,EAAE;AAAA,QACpB;AAAA,MACF;AAEA,YAAM,SAASA,QAAO,YAAY,MAAM;AACxC,UAAI,MAAM;AACV,WAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,YAAI,MAAM,KAAK,CAAC;AAChB,YAAI,WAAW,KAAK,UAAU,GAAG;AAC/B,cAAI,MAAM,IAAI,SAAS,OAAO,QAAQ;AACpC,gBAAI,CAACA,QAAO,SAAS,GAAG,EAAG,OAAMA,QAAO,KAAK,GAAG;AAChD,gBAAI,KAAK,QAAQ,GAAG;AAAA,UACtB,OAAO;AACL,uBAAW,UAAU,IAAI;AAAA,cACvB;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,CAACA,QAAO,SAAS,GAAG,GAAG;AAChC,gBAAM,IAAI,UAAU,6CAA6C;AAAA,QACnE,OAAO;AACL,cAAI,KAAK,QAAQ,GAAG;AAAA,QACtB;AACA,eAAO,IAAI;AAAA,MACb;AACA,aAAO;AAAA,IACT;AAEA,aAAS,WAAY,QAAQ,UAAU;AACrC,UAAIA,QAAO,SAAS,MAAM,GAAG;AAC3B,eAAO,OAAO;AAAA,MAChB;AACA,UAAI,YAAY,OAAO,MAAM,KAAK,WAAW,QAAQ,WAAW,GAAG;AACjE,eAAO,OAAO;AAAA,MAChB;AACA,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,6FACmB,OAAO;AAAA,QAC5B;AAAA,MACF;AAEA,YAAM,MAAM,OAAO;AACnB,YAAM,YAAa,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM;AAC5D,UAAI,CAAC,aAAa,QAAQ,EAAG,QAAO;AAGpC,UAAI,cAAc;AAClB,iBAAS;AACP,gBAAQ,UAAU;AAAA,UAChB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AAAA,UACL,KAAK;AACH,mBAAOC,aAAY,MAAM,EAAE;AAAA,UAC7B,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,MAAM;AAAA,UACf,KAAK;AACH,mBAAO,QAAQ;AAAA,UACjB,KAAK;AACH,mBAAO,cAAc,MAAM,EAAE;AAAA,UAC/B;AACE,gBAAI,aAAa;AACf,qBAAO,YAAY,KAAKA,aAAY,MAAM,EAAE;AAAA,YAC9C;AACA,wBAAY,KAAK,UAAU,YAAY;AACvC,0BAAc;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,IAAAD,QAAO,aAAa;AAEpB,aAAS,aAAc,UAAU,OAAO,KAAK;AAC3C,UAAI,cAAc;AASlB,UAAI,UAAU,UAAa,QAAQ,GAAG;AACpC,gBAAQ;AAAA,MACV;AAGA,UAAI,QAAQ,KAAK,QAAQ;AACvB,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,UAAa,MAAM,KAAK,QAAQ;AAC1C,cAAM,KAAK;AAAA,MACb;AAEA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AAGA,eAAS;AACT,iBAAW;AAEX,UAAI,OAAO,OAAO;AAChB,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,SAAU,YAAW;AAE1B,aAAO,MAAM;AACX,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO,SAAS,MAAM,OAAO,GAAG;AAAA,UAElC,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,UAAU,MAAM,OAAO,GAAG;AAAA,UAEnC,KAAK;AACH,mBAAO,WAAW,MAAM,OAAO,GAAG;AAAA,UAEpC,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,YAAY,MAAM,OAAO,GAAG;AAAA,UAErC,KAAK;AACH,mBAAO,YAAY,MAAM,OAAO,GAAG;AAAA,UAErC,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,aAAa,MAAM,OAAO,GAAG;AAAA,UAEtC;AACE,gBAAI,YAAa,OAAM,IAAI,UAAU,uBAAuB,QAAQ;AACpE,wBAAY,WAAW,IAAI,YAAY;AACvC,0BAAc;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAQA,IAAAA,QAAO,UAAU,YAAY;AAE7B,aAAS,KAAM,GAAG,GAAG,GAAG;AACtB,YAAM,IAAI,EAAE,CAAC;AACb,QAAE,CAAC,IAAI,EAAE,CAAC;AACV,QAAE,CAAC,IAAI;AAAA,IACT;AAEA,IAAAA,QAAO,UAAU,SAAS,SAAS,SAAU;AAC3C,YAAM,MAAM,KAAK;AACjB,UAAI,MAAM,MAAM,GAAG;AACjB,cAAM,IAAI,WAAW,2CAA2C;AAAA,MAClE;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,aAAK,MAAM,GAAG,IAAI,CAAC;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAEA,IAAAA,QAAO,UAAU,SAAS,SAAS,SAAU;AAC3C,YAAM,MAAM,KAAK;AACjB,UAAI,MAAM,MAAM,GAAG;AACjB,cAAM,IAAI,WAAW,2CAA2C;AAAA,MAClE;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,aAAK,MAAM,GAAG,IAAI,CAAC;AACnB,aAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAEA,IAAAA,QAAO,UAAU,SAAS,SAAS,SAAU;AAC3C,YAAM,MAAM,KAAK;AACjB,UAAI,MAAM,MAAM,GAAG;AACjB,cAAM,IAAI,WAAW,2CAA2C;AAAA,MAClE;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,aAAK,MAAM,GAAG,IAAI,CAAC;AACnB,aAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AACvB,aAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AACvB,aAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAEA,IAAAA,QAAO,UAAU,WAAW,SAAS,WAAY;AAC/C,YAAM,SAAS,KAAK;AACpB,UAAI,WAAW,EAAG,QAAO;AACzB,UAAI,UAAU,WAAW,EAAG,QAAO,UAAU,MAAM,GAAG,MAAM;AAC5D,aAAO,aAAa,MAAM,MAAM,SAAS;AAAA,IAC3C;AAEA,IAAAA,QAAO,UAAU,iBAAiBA,QAAO,UAAU;AAEnD,IAAAA,QAAO,UAAU,SAAS,SAAS,OAAQ,GAAG;AAC5C,UAAI,CAACA,QAAO,SAAS,CAAC,EAAG,OAAM,IAAI,UAAU,2BAA2B;AACxE,UAAI,SAAS,EAAG,QAAO;AACvB,aAAOA,QAAO,QAAQ,MAAM,CAAC,MAAM;AAAA,IACrC;AAEA,IAAAA,QAAO,UAAU,UAAU,SAAS,UAAW;AAC7C,UAAI,MAAM;AACV,YAAM,MAAM,QAAQ;AACpB,YAAM,KAAK,SAAS,OAAO,GAAG,GAAG,EAAE,QAAQ,WAAW,KAAK,EAAE,KAAK;AAClE,UAAI,KAAK,SAAS,IAAK,QAAO;AAC9B,aAAO,aAAa,MAAM;AAAA,IAC5B;AACA,QAAI,qBAAqB;AACvB,MAAAA,QAAO,UAAU,mBAAmB,IAAIA,QAAO,UAAU;AAAA,IAC3D;AAEA,IAAAA,QAAO,UAAU,UAAU,SAAS,QAAS,QAAQ,OAAO,KAAK,WAAW,SAAS;AACnF,UAAI,WAAW,QAAQ,UAAU,GAAG;AAClC,iBAASA,QAAO,KAAK,QAAQ,OAAO,QAAQ,OAAO,UAAU;AAAA,MAC/D;AACA,UAAI,CAACA,QAAO,SAAS,MAAM,GAAG;AAC5B,cAAM,IAAI;AAAA,UACR,mFACoB,OAAO;AAAA,QAC7B;AAAA,MACF;AAEA,UAAI,UAAU,QAAW;AACvB,gBAAQ;AAAA,MACV;AACA,UAAI,QAAQ,QAAW;AACrB,cAAM,SAAS,OAAO,SAAS;AAAA,MACjC;AACA,UAAI,cAAc,QAAW;AAC3B,oBAAY;AAAA,MACd;AACA,UAAI,YAAY,QAAW;AACzB,kBAAU,KAAK;AAAA,MACjB;AAEA,UAAI,QAAQ,KAAK,MAAM,OAAO,UAAU,YAAY,KAAK,UAAU,KAAK,QAAQ;AAC9E,cAAM,IAAI,WAAW,oBAAoB;AAAA,MAC3C;AAEA,UAAI,aAAa,WAAW,SAAS,KAAK;AACxC,eAAO;AAAA,MACT;AACA,UAAI,aAAa,SAAS;AACxB,eAAO;AAAA,MACT;AACA,UAAI,SAAS,KAAK;AAChB,eAAO;AAAA,MACT;AAEA,iBAAW;AACX,eAAS;AACT,qBAAe;AACf,mBAAa;AAEb,UAAI,SAAS,OAAQ,QAAO;AAE5B,UAAI,IAAI,UAAU;AAClB,UAAI,IAAI,MAAM;AACd,YAAM,MAAM,KAAK,IAAI,GAAG,CAAC;AAEzB,YAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAC9C,YAAM,aAAa,OAAO,MAAM,OAAO,GAAG;AAE1C,eAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC5B,YAAI,SAAS,CAAC,MAAM,WAAW,CAAC,GAAG;AACjC,cAAI,SAAS,CAAC;AACd,cAAI,WAAW,CAAC;AAChB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,IAAI,EAAG,QAAO;AAClB,UAAI,IAAI,EAAG,QAAO;AAClB,aAAO;AAAA,IACT;AAWA,aAAS,qBAAsB,QAAQ,KAAK,YAAY,UAAU,KAAK;AAErE,UAAI,OAAO,WAAW,EAAG,QAAO;AAGhC,UAAI,OAAO,eAAe,UAAU;AAClC,mBAAW;AACX,qBAAa;AAAA,MACf,WAAW,aAAa,YAAY;AAClC,qBAAa;AAAA,MACf,WAAW,aAAa,aAAa;AACnC,qBAAa;AAAA,MACf;AACA,mBAAa,CAAC;AACd,UAAI,YAAY,UAAU,GAAG;AAE3B,qBAAa,MAAM,IAAK,OAAO,SAAS;AAAA,MAC1C;AAGA,UAAI,aAAa,EAAG,cAAa,OAAO,SAAS;AACjD,UAAI,cAAc,OAAO,QAAQ;AAC/B,YAAI,IAAK,QAAO;AAAA,YACX,cAAa,OAAO,SAAS;AAAA,MACpC,WAAW,aAAa,GAAG;AACzB,YAAI,IAAK,cAAa;AAAA,YACjB,QAAO;AAAA,MACd;AAGA,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAMA,QAAO,KAAK,KAAK,QAAQ;AAAA,MACjC;AAGA,UAAIA,QAAO,SAAS,GAAG,GAAG;AAExB,YAAI,IAAI,WAAW,GAAG;AACpB,iBAAO;AAAA,QACT;AACA,eAAO,aAAa,QAAQ,KAAK,YAAY,UAAU,GAAG;AAAA,MAC5D,WAAW,OAAO,QAAQ,UAAU;AAClC,cAAM,MAAM;AACZ,YAAI,OAAO,WAAW,UAAU,YAAY,YAAY;AACtD,cAAI,KAAK;AACP,mBAAO,WAAW,UAAU,QAAQ,KAAK,QAAQ,KAAK,UAAU;AAAA,UAClE,OAAO;AACL,mBAAO,WAAW,UAAU,YAAY,KAAK,QAAQ,KAAK,UAAU;AAAA,UACtE;AAAA,QACF;AACA,eAAO,aAAa,QAAQ,CAAC,GAAG,GAAG,YAAY,UAAU,GAAG;AAAA,MAC9D;AAEA,YAAM,IAAI,UAAU,sCAAsC;AAAA,IAC5D;AAEA,aAAS,aAAc,KAAK,KAAK,YAAY,UAAU,KAAK;AAC1D,UAAI,YAAY;AAChB,UAAI,YAAY,IAAI;AACpB,UAAI,YAAY,IAAI;AAEpB,UAAI,aAAa,QAAW;AAC1B,mBAAW,OAAO,QAAQ,EAAE,YAAY;AACxC,YAAI,aAAa,UAAU,aAAa,WACpC,aAAa,aAAa,aAAa,YAAY;AACrD,cAAI,IAAI,SAAS,KAAK,IAAI,SAAS,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,sBAAY;AACZ,uBAAa;AACb,uBAAa;AACb,wBAAc;AAAA,QAChB;AAAA,MACF;AAEA,eAAS,KAAM,KAAKE,IAAG;AACrB,YAAI,cAAc,GAAG;AACnB,iBAAO,IAAIA,EAAC;AAAA,QACd,OAAO;AACL,iBAAO,IAAI,aAAaA,KAAI,SAAS;AAAA,QACvC;AAAA,MACF;AAEA,UAAI;AACJ,UAAI,KAAK;AACP,YAAI,aAAa;AACjB,aAAK,IAAI,YAAY,IAAI,WAAW,KAAK;AACvC,cAAI,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,eAAe,KAAK,IAAI,IAAI,UAAU,GAAG;AACtE,gBAAI,eAAe,GAAI,cAAa;AACpC,gBAAI,IAAI,aAAa,MAAM,UAAW,QAAO,aAAa;AAAA,UAC5D,OAAO;AACL,gBAAI,eAAe,GAAI,MAAK,IAAI;AAChC,yBAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF,OAAO;AACL,YAAI,aAAa,YAAY,UAAW,cAAa,YAAY;AACjE,aAAK,IAAI,YAAY,KAAK,GAAG,KAAK;AAChC,cAAI,QAAQ;AACZ,mBAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,gBAAI,KAAK,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG;AACrC,sBAAQ;AACR;AAAA,YACF;AAAA,UACF;AACA,cAAI,MAAO,QAAO;AAAA,QACpB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,IAAAF,QAAO,UAAU,WAAW,SAAS,SAAU,KAAK,YAAY,UAAU;AACxE,aAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,MAAM;AAAA,IACrD;AAEA,IAAAA,QAAO,UAAU,UAAU,SAAS,QAAS,KAAK,YAAY,UAAU;AACtE,aAAO,qBAAqB,MAAM,KAAK,YAAY,UAAU,IAAI;AAAA,IACnE;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,KAAK,YAAY,UAAU;AAC9E,aAAO,qBAAqB,MAAM,KAAK,YAAY,UAAU,KAAK;AAAA,IACpE;AAEA,aAAS,SAAU,KAAK,QAAQ,QAAQ,QAAQ;AAC9C,eAAS,OAAO,MAAM,KAAK;AAC3B,YAAM,YAAY,IAAI,SAAS;AAC/B,UAAI,CAAC,QAAQ;AACX,iBAAS;AAAA,MACX,OAAO;AACL,iBAAS,OAAO,MAAM;AACtB,YAAI,SAAS,WAAW;AACtB,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,YAAM,SAAS,OAAO;AAEtB,UAAI,SAAS,SAAS,GAAG;AACvB,iBAAS,SAAS;AAAA,MACpB;AACA,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC3B,cAAM,SAAS,SAAS,OAAO,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE;AACnD,YAAI,YAAY,MAAM,EAAG,QAAO;AAChC,YAAI,SAAS,CAAC,IAAI;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAEA,aAAS,UAAW,KAAK,QAAQ,QAAQ,QAAQ;AAC/C,aAAO,WAAWC,aAAY,QAAQ,IAAI,SAAS,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,IACjF;AAEA,aAAS,WAAY,KAAK,QAAQ,QAAQ,QAAQ;AAChD,aAAO,WAAW,aAAa,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,IAC7D;AAEA,aAAS,YAAa,KAAK,QAAQ,QAAQ,QAAQ;AACjD,aAAO,WAAW,cAAc,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,IAC9D;AAEA,aAAS,UAAW,KAAK,QAAQ,QAAQ,QAAQ;AAC/C,aAAO,WAAW,eAAe,QAAQ,IAAI,SAAS,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,IACpF;AAEA,IAAAD,QAAO,UAAU,QAAQ,SAAS,MAAO,QAAQ,QAAQ,QAAQ,UAAU;AAEzE,UAAI,WAAW,QAAW;AACxB,mBAAW;AACX,iBAAS,KAAK;AACd,iBAAS;AAAA,MAEX,WAAW,WAAW,UAAa,OAAO,WAAW,UAAU;AAC7D,mBAAW;AACX,iBAAS,KAAK;AACd,iBAAS;AAAA,MAEX,WAAW,SAAS,MAAM,GAAG;AAC3B,iBAAS,WAAW;AACpB,YAAI,SAAS,MAAM,GAAG;AACpB,mBAAS,WAAW;AACpB,cAAI,aAAa,OAAW,YAAW;AAAA,QACzC,OAAO;AACL,qBAAW;AACX,mBAAS;AAAA,QACX;AAAA,MACF,OAAO;AACL,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,YAAY,KAAK,SAAS;AAChC,UAAI,WAAW,UAAa,SAAS,UAAW,UAAS;AAEzD,UAAK,OAAO,SAAS,MAAM,SAAS,KAAK,SAAS,MAAO,SAAS,KAAK,QAAQ;AAC7E,cAAM,IAAI,WAAW,wCAAwC;AAAA,MAC/D;AAEA,UAAI,CAAC,SAAU,YAAW;AAE1B,UAAI,cAAc;AAClB,iBAAS;AACP,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO,SAAS,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAE9C,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,UAAU,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAE/C,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,WAAW,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAEhD,KAAK;AAEH,mBAAO,YAAY,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAEjD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,UAAU,MAAM,QAAQ,QAAQ,MAAM;AAAA,UAE/C;AACE,gBAAI,YAAa,OAAM,IAAI,UAAU,uBAAuB,QAAQ;AACpE,wBAAY,KAAK,UAAU,YAAY;AACvC,0BAAc;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAEA,IAAAA,QAAO,UAAU,SAAS,SAAS,SAAU;AAC3C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,MAAM,UAAU,MAAM,KAAK,KAAK,QAAQ,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAEA,aAAS,YAAa,KAAK,OAAO,KAAK;AACrC,UAAI,UAAU,KAAK,QAAQ,IAAI,QAAQ;AACrC,eAAO,OAAO,cAAc,GAAG;AAAA,MACjC,OAAO;AACL,eAAO,OAAO,cAAc,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,MACnD;AAAA,IACF;AAEA,aAAS,UAAW,KAAK,OAAO,KAAK;AACnC,YAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAC9B,YAAM,MAAM,CAAC;AAEb,UAAI,IAAI;AACR,aAAO,IAAI,KAAK;AACd,cAAM,YAAY,IAAI,CAAC;AACvB,YAAI,YAAY;AAChB,YAAI,mBAAoB,YAAY,MAChC,IACC,YAAY,MACT,IACC,YAAY,MACT,IACA;AAEZ,YAAI,IAAI,oBAAoB,KAAK;AAC/B,cAAI,YAAY,WAAW,YAAY;AAEvC,kBAAQ,kBAAkB;AAAA,YACxB,KAAK;AACH,kBAAI,YAAY,KAAM;AACpB,4BAAY;AAAA,cACd;AACA;AAAA,YACF,KAAK;AACH,2BAAa,IAAI,IAAI,CAAC;AACtB,mBAAK,aAAa,SAAU,KAAM;AAChC,iCAAiB,YAAY,OAAS,IAAO,aAAa;AAC1D,oBAAI,gBAAgB,KAAM;AACxB,8BAAY;AAAA,gBACd;AAAA,cACF;AACA;AAAA,YACF,KAAK;AACH,2BAAa,IAAI,IAAI,CAAC;AACtB,0BAAY,IAAI,IAAI,CAAC;AACrB,mBAAK,aAAa,SAAU,QAAS,YAAY,SAAU,KAAM;AAC/D,iCAAiB,YAAY,OAAQ,MAAO,aAAa,OAAS,IAAO,YAAY;AACrF,oBAAI,gBAAgB,SAAU,gBAAgB,SAAU,gBAAgB,QAAS;AAC/E,8BAAY;AAAA,gBACd;AAAA,cACF;AACA;AAAA,YACF,KAAK;AACH,2BAAa,IAAI,IAAI,CAAC;AACtB,0BAAY,IAAI,IAAI,CAAC;AACrB,2BAAa,IAAI,IAAI,CAAC;AACtB,mBAAK,aAAa,SAAU,QAAS,YAAY,SAAU,QAAS,aAAa,SAAU,KAAM;AAC/F,iCAAiB,YAAY,OAAQ,MAAQ,aAAa,OAAS,MAAO,YAAY,OAAS,IAAO,aAAa;AACnH,oBAAI,gBAAgB,SAAU,gBAAgB,SAAU;AACtD,8BAAY;AAAA,gBACd;AAAA,cACF;AAAA,UACJ;AAAA,QACF;AAEA,YAAI,cAAc,MAAM;AAGtB,sBAAY;AACZ,6BAAmB;AAAA,QACrB,WAAW,YAAY,OAAQ;AAE7B,uBAAa;AACb,cAAI,KAAK,cAAc,KAAK,OAAQ,KAAM;AAC1C,sBAAY,QAAS,YAAY;AAAA,QACnC;AAEA,YAAI,KAAK,SAAS;AAClB,aAAK;AAAA,MACP;AAEA,aAAO,sBAAsB,GAAG;AAAA,IAClC;AAKA,QAAM,uBAAuB;AAE7B,aAAS,sBAAuB,YAAY;AAC1C,YAAM,MAAM,WAAW;AACvB,UAAI,OAAO,sBAAsB;AAC/B,eAAO,OAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,MACrD;AAGA,UAAI,MAAM;AACV,UAAI,IAAI;AACR,aAAO,IAAI,KAAK;AACd,eAAO,OAAO,aAAa;AAAA,UACzB;AAAA,UACA,WAAW,MAAM,GAAG,KAAK,oBAAoB;AAAA,QAC/C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,aAAS,WAAY,KAAK,OAAO,KAAK;AACpC,UAAI,MAAM;AACV,YAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAE9B,eAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,eAAO,OAAO,aAAa,IAAI,CAAC,IAAI,GAAI;AAAA,MAC1C;AACA,aAAO;AAAA,IACT;AAEA,aAAS,YAAa,KAAK,OAAO,KAAK;AACrC,UAAI,MAAM;AACV,YAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAE9B,eAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,eAAO,OAAO,aAAa,IAAI,CAAC,CAAC;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAEA,aAAS,SAAU,KAAK,OAAO,KAAK;AAClC,YAAM,MAAM,IAAI;AAEhB,UAAI,CAAC,SAAS,QAAQ,EAAG,SAAQ;AACjC,UAAI,CAAC,OAAO,MAAM,KAAK,MAAM,IAAK,OAAM;AAExC,UAAI,MAAM;AACV,eAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,eAAO,oBAAoB,IAAI,CAAC,CAAC;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAEA,aAAS,aAAc,KAAK,OAAO,KAAK;AACtC,YAAM,QAAQ,IAAI,MAAM,OAAO,GAAG;AAClC,UAAI,MAAM;AAEV,eAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG;AAC5C,eAAO,OAAO,aAAa,MAAM,CAAC,IAAK,MAAM,IAAI,CAAC,IAAI,GAAI;AAAA,MAC5D;AACA,aAAO;AAAA,IACT;AAEA,IAAAA,QAAO,UAAU,QAAQ,SAAS,MAAO,OAAO,KAAK;AACnD,YAAM,MAAM,KAAK;AACjB,cAAQ,CAAC,CAAC;AACV,YAAM,QAAQ,SAAY,MAAM,CAAC,CAAC;AAElC,UAAI,QAAQ,GAAG;AACb,iBAAS;AACT,YAAI,QAAQ,EAAG,SAAQ;AAAA,MACzB,WAAW,QAAQ,KAAK;AACtB,gBAAQ;AAAA,MACV;AAEA,UAAI,MAAM,GAAG;AACX,eAAO;AACP,YAAI,MAAM,EAAG,OAAM;AAAA,MACrB,WAAW,MAAM,KAAK;AACpB,cAAM;AAAA,MACR;AAEA,UAAI,MAAM,MAAO,OAAM;AAEvB,YAAM,SAAS,KAAK,SAAS,OAAO,GAAG;AAEvC,aAAO,eAAe,QAAQA,QAAO,SAAS;AAE9C,aAAO;AAAA,IACT;AAKA,aAAS,YAAa,QAAQ,KAAK,QAAQ;AACzC,UAAK,SAAS,MAAO,KAAK,SAAS,EAAG,OAAM,IAAI,WAAW,oBAAoB;AAC/E,UAAI,SAAS,MAAM,OAAQ,OAAM,IAAI,WAAW,uCAAuC;AAAA,IACzF;AAEA,IAAAA,QAAO,UAAU,aACjBA,QAAO,UAAU,aAAa,SAAS,WAAY,QAAQG,aAAY,UAAU;AAC/E,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAE1D,UAAI,MAAM,KAAK,MAAM;AACrB,UAAIC,OAAM;AACV,UAAI,IAAI;AACR,aAAO,EAAE,IAAID,gBAAeC,QAAO,MAAQ;AACzC,eAAO,KAAK,SAAS,CAAC,IAAIA;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT;AAEA,IAAAJ,QAAO,UAAU,aACjBA,QAAO,UAAU,aAAa,SAAS,WAAY,QAAQG,aAAY,UAAU;AAC/E,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,UAAU;AACb,oBAAY,QAAQA,aAAY,KAAK,MAAM;AAAA,MAC7C;AAEA,UAAI,MAAM,KAAK,SAAS,EAAEA,WAAU;AACpC,UAAIC,OAAM;AACV,aAAOD,cAAa,MAAMC,QAAO,MAAQ;AACvC,eAAO,KAAK,SAAS,EAAED,WAAU,IAAIC;AAAA,MACvC;AAEA,aAAO;AAAA,IACT;AAEA,IAAAJ,QAAO,UAAU,YACjBA,QAAO,UAAU,YAAY,SAAS,UAAW,QAAQ,UAAU;AACjE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,KAAK,MAAM;AAAA,IACpB;AAEA,IAAAA,QAAO,UAAU,eACjBA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,KAAK,MAAM,IAAK,KAAK,SAAS,CAAC,KAAK;AAAA,IAC7C;AAEA,IAAAA,QAAO,UAAU,eACjBA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAQ,KAAK,MAAM,KAAK,IAAK,KAAK,SAAS,CAAC;AAAA,IAC9C;AAEA,IAAAA,QAAO,UAAU,eACjBA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AAEjD,cAAS,KAAK,MAAM,IACf,KAAK,SAAS,CAAC,KAAK,IACpB,KAAK,SAAS,CAAC,KAAK,MACpB,KAAK,SAAS,CAAC,IAAI;AAAA,IAC1B;AAEA,IAAAA,QAAO,UAAU,eACjBA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AAEjD,aAAQ,KAAK,MAAM,IAAI,YACnB,KAAK,SAAS,CAAC,KAAK,KACrB,KAAK,SAAS,CAAC,KAAK,IACrB,KAAK,SAAS,CAAC;AAAA,IACnB;AAEA,IAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAiB,QAAQ;AACtF,eAAS,WAAW;AACpB,qBAAe,QAAQ,QAAQ;AAC/B,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,UAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,oBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,MACrC;AAEA,YAAM,KAAK,QACT,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK;AAExB,YAAM,KAAK,KAAK,EAAE,MAAM,IACtB,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,OAAO,KAAK;AAEd,aAAO,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AAAA,IAC9C,CAAC;AAED,IAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAiB,QAAQ;AACtF,eAAS,WAAW;AACpB,qBAAe,QAAQ,QAAQ;AAC/B,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,UAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,oBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,MACrC;AAEA,YAAM,KAAK,QAAQ,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,KAAK,EAAE,MAAM;AAEf,YAAM,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,KAC/B,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB;AAEF,cAAQ,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AAAA,IAC/C,CAAC;AAED,IAAAA,QAAO,UAAU,YAAY,SAAS,UAAW,QAAQG,aAAY,UAAU;AAC7E,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAE1D,UAAI,MAAM,KAAK,MAAM;AACrB,UAAIC,OAAM;AACV,UAAI,IAAI;AACR,aAAO,EAAE,IAAID,gBAAeC,QAAO,MAAQ;AACzC,eAAO,KAAK,SAAS,CAAC,IAAIA;AAAA,MAC5B;AACA,MAAAA,QAAO;AAEP,UAAI,OAAOA,KAAK,QAAO,KAAK,IAAI,GAAG,IAAID,WAAU;AAEjD,aAAO;AAAA,IACT;AAEA,IAAAH,QAAO,UAAU,YAAY,SAAS,UAAW,QAAQG,aAAY,UAAU;AAC7E,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAE1D,UAAI,IAAIA;AACR,UAAIC,OAAM;AACV,UAAI,MAAM,KAAK,SAAS,EAAE,CAAC;AAC3B,aAAO,IAAI,MAAMA,QAAO,MAAQ;AAC9B,eAAO,KAAK,SAAS,EAAE,CAAC,IAAIA;AAAA,MAC9B;AACA,MAAAA,QAAO;AAEP,UAAI,OAAOA,KAAK,QAAO,KAAK,IAAI,GAAG,IAAID,WAAU;AAEjD,aAAO;AAAA,IACT;AAEA,IAAAH,QAAO,UAAU,WAAW,SAAS,SAAU,QAAQ,UAAU;AAC/D,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,UAAI,EAAE,KAAK,MAAM,IAAI,KAAO,QAAQ,KAAK,MAAM;AAC/C,cAAS,MAAO,KAAK,MAAM,IAAI,KAAK;AAAA,IACtC;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,YAAM,MAAM,KAAK,MAAM,IAAK,KAAK,SAAS,CAAC,KAAK;AAChD,aAAQ,MAAM,QAAU,MAAM,aAAa;AAAA,IAC7C;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,YAAM,MAAM,KAAK,SAAS,CAAC,IAAK,KAAK,MAAM,KAAK;AAChD,aAAQ,MAAM,QAAU,MAAM,aAAa;AAAA,IAC7C;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AAEjD,aAAQ,KAAK,MAAM,IAChB,KAAK,SAAS,CAAC,KAAK,IACpB,KAAK,SAAS,CAAC,KAAK,KACpB,KAAK,SAAS,CAAC,KAAK;AAAA,IACzB;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AAEjD,aAAQ,KAAK,MAAM,KAAK,KACrB,KAAK,SAAS,CAAC,KAAK,KACpB,KAAK,SAAS,CAAC,KAAK,IACpB,KAAK,SAAS,CAAC;AAAA,IACpB;AAEA,IAAAA,QAAO,UAAU,iBAAiB,mBAAmB,SAAS,eAAgB,QAAQ;AACpF,eAAS,WAAW;AACpB,qBAAe,QAAQ,QAAQ;AAC/B,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,UAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,oBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,MACrC;AAEA,YAAM,MAAM,KAAK,SAAS,CAAC,IACzB,KAAK,SAAS,CAAC,IAAI,KAAK,IACxB,KAAK,SAAS,CAAC,IAAI,KAAK,MACvB,QAAQ;AAEX,cAAQ,OAAO,GAAG,KAAK,OAAO,EAAE,KAC9B,OAAO,QACP,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE;AAAA,IAC5B,CAAC;AAED,IAAAA,QAAO,UAAU,iBAAiB,mBAAmB,SAAS,eAAgB,QAAQ;AACpF,eAAS,WAAW;AACpB,qBAAe,QAAQ,QAAQ;AAC/B,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,UAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,oBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,MACrC;AAEA,YAAM,OAAO,SAAS;AAAA,MACpB,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,KAAK,EAAE,MAAM;AAEf,cAAQ,OAAO,GAAG,KAAK,OAAO,EAAE,KAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,KAAK,KAC7B,KAAK,EAAE,MAAM,IAAI,KAAK,KACtB,KAAK,EAAE,MAAM,IAAI,KAAK,IACtB,IAAI;AAAA,IACR,CAAC;AAED,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,IAC/C;AAEA,IAAAA,QAAO,UAAU,cAAc,SAAS,YAAa,QAAQ,UAAU;AACrE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,QAAQ,KAAK,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,IAChD;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,IAC/C;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,QAAQ,UAAU;AACvE,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,aAAO,QAAQ,KAAK,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,IAChD;AAEA,aAAS,SAAU,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK;AACpD,UAAI,CAACA,QAAO,SAAS,GAAG,EAAG,OAAM,IAAI,UAAU,6CAA6C;AAC5F,UAAI,QAAQ,OAAO,QAAQ,IAAK,OAAM,IAAI,WAAW,mCAAmC;AACxF,UAAI,SAAS,MAAM,IAAI,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AAAA,IAC1E;AAEA,IAAAA,QAAO,UAAU,cACjBA,QAAO,UAAU,cAAc,SAAS,YAAa,OAAO,QAAQG,aAAY,UAAU;AACxF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,UAAU;AACb,cAAM,WAAW,KAAK,IAAI,GAAG,IAAIA,WAAU,IAAI;AAC/C,iBAAS,MAAM,OAAO,QAAQA,aAAY,UAAU,CAAC;AAAA,MACvD;AAEA,UAAIC,OAAM;AACV,UAAI,IAAI;AACR,WAAK,MAAM,IAAI,QAAQ;AACvB,aAAO,EAAE,IAAID,gBAAeC,QAAO,MAAQ;AACzC,aAAK,SAAS,CAAC,IAAK,QAAQA,OAAO;AAAA,MACrC;AAEA,aAAO,SAASD;AAAA,IAClB;AAEA,IAAAH,QAAO,UAAU,cACjBA,QAAO,UAAU,cAAc,SAAS,YAAa,OAAO,QAAQG,aAAY,UAAU;AACxF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,MAAAA,cAAaA,gBAAe;AAC5B,UAAI,CAAC,UAAU;AACb,cAAM,WAAW,KAAK,IAAI,GAAG,IAAIA,WAAU,IAAI;AAC/C,iBAAS,MAAM,OAAO,QAAQA,aAAY,UAAU,CAAC;AAAA,MACvD;AAEA,UAAI,IAAIA,cAAa;AACrB,UAAIC,OAAM;AACV,WAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,aAAO,EAAE,KAAK,MAAMA,QAAO,MAAQ;AACjC,aAAK,SAAS,CAAC,IAAK,QAAQA,OAAO;AAAA,MACrC;AAEA,aAAO,SAASD;AAAA,IAClB;AAEA,IAAAH,QAAO,UAAU,aACjBA,QAAO,UAAU,aAAa,SAAS,WAAY,OAAO,QAAQ,UAAU;AAC1E,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,KAAM,CAAC;AACvD,WAAK,MAAM,IAAK,QAAQ;AACxB,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,gBACjBA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAQ,CAAC;AACzD,WAAK,MAAM,IAAK,QAAQ;AACxB,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,gBACjBA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAQ,CAAC;AACzD,WAAK,MAAM,IAAK,UAAU;AAC1B,WAAK,SAAS,CAAC,IAAK,QAAQ;AAC5B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,gBACjBA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,CAAC;AAC7D,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,MAAM,IAAK,QAAQ;AACxB,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,gBACjBA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,CAAC;AAC7D,WAAK,MAAM,IAAK,UAAU;AAC1B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,QAAQ;AAC5B,aAAO,SAAS;AAAA,IAClB;AAEA,aAAS,eAAgB,KAAK,OAAO,QAAQ,KAAK,KAAK;AACrD,iBAAW,OAAO,KAAK,KAAK,KAAK,QAAQ,CAAC;AAE1C,UAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,UAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,WAAK,MAAM;AACX,UAAI,QAAQ,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,aAAS,eAAgB,KAAK,OAAO,QAAQ,KAAK,KAAK;AACrD,iBAAW,OAAO,KAAK,KAAK,KAAK,QAAQ,CAAC;AAE1C,UAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,SAAS,CAAC,IAAI;AAClB,UAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,SAAS,CAAC,IAAI;AAClB,WAAK,MAAM;AACX,UAAI,MAAM,IAAI;AACd,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,mBAAmB,mBAAmB,SAAS,iBAAkB,OAAO,SAAS,GAAG;AACnG,aAAO,eAAe,MAAM,OAAO,QAAQ,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC;AAAA,IACpF,CAAC;AAED,IAAAA,QAAO,UAAU,mBAAmB,mBAAmB,SAAS,iBAAkB,OAAO,SAAS,GAAG;AACnG,aAAO,eAAe,MAAM,OAAO,QAAQ,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC;AAAA,IACpF,CAAC;AAED,IAAAA,QAAO,UAAU,aAAa,SAAS,WAAY,OAAO,QAAQG,aAAY,UAAU;AACtF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,UAAU;AACb,cAAM,QAAQ,KAAK,IAAI,GAAI,IAAIA,cAAc,CAAC;AAE9C,iBAAS,MAAM,OAAO,QAAQA,aAAY,QAAQ,GAAG,CAAC,KAAK;AAAA,MAC7D;AAEA,UAAI,IAAI;AACR,UAAIC,OAAM;AACV,UAAI,MAAM;AACV,WAAK,MAAM,IAAI,QAAQ;AACvB,aAAO,EAAE,IAAID,gBAAeC,QAAO,MAAQ;AACzC,YAAI,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,GAAG;AACxD,gBAAM;AAAA,QACR;AACA,aAAK,SAAS,CAAC,KAAM,QAAQA,QAAQ,KAAK,MAAM;AAAA,MAClD;AAEA,aAAO,SAASD;AAAA,IAClB;AAEA,IAAAH,QAAO,UAAU,aAAa,SAAS,WAAY,OAAO,QAAQG,aAAY,UAAU;AACtF,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,UAAU;AACb,cAAM,QAAQ,KAAK,IAAI,GAAI,IAAIA,cAAc,CAAC;AAE9C,iBAAS,MAAM,OAAO,QAAQA,aAAY,QAAQ,GAAG,CAAC,KAAK;AAAA,MAC7D;AAEA,UAAI,IAAIA,cAAa;AACrB,UAAIC,OAAM;AACV,UAAI,MAAM;AACV,WAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,aAAO,EAAE,KAAK,MAAMA,QAAO,MAAQ;AACjC,YAAI,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,GAAG;AACxD,gBAAM;AAAA,QACR;AACA,aAAK,SAAS,CAAC,KAAM,QAAQA,QAAQ,KAAK,MAAM;AAAA,MAClD;AAEA,aAAO,SAASD;AAAA,IAClB;AAEA,IAAAH,QAAO,UAAU,YAAY,SAAS,UAAW,OAAO,QAAQ,UAAU;AACxE,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,KAAM,IAAK;AAC3D,UAAI,QAAQ,EAAG,SAAQ,MAAO,QAAQ;AACtC,WAAK,MAAM,IAAK,QAAQ;AACxB,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAQ,MAAO;AAC/D,WAAK,MAAM,IAAK,QAAQ;AACxB,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAQ,MAAO;AAC/D,WAAK,MAAM,IAAK,UAAU;AAC1B,WAAK,SAAS,CAAC,IAAK,QAAQ;AAC5B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,WAAW;AACvE,WAAK,MAAM,IAAK,QAAQ;AACxB,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,WAAW;AACvE,UAAI,QAAQ,EAAG,SAAQ,aAAa,QAAQ;AAC5C,WAAK,MAAM,IAAK,UAAU;AAC1B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,UAAU;AAC9B,WAAK,SAAS,CAAC,IAAK,QAAQ;AAC5B,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAiB,OAAO,SAAS,GAAG;AACjG,aAAO,eAAe,MAAM,OAAO,QAAQ,CAAC,OAAO,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAAA,IACxG,CAAC;AAED,IAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAiB,OAAO,SAAS,GAAG;AACjG,aAAO,eAAe,MAAM,OAAO,QAAQ,CAAC,OAAO,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAAA,IACxG,CAAC;AAED,aAAS,aAAc,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK;AACxD,UAAI,SAAS,MAAM,IAAI,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AACxE,UAAI,SAAS,EAAG,OAAM,IAAI,WAAW,oBAAoB;AAAA,IAC3D;AAEA,aAAS,WAAY,KAAK,OAAO,QAAQ,cAAc,UAAU;AAC/D,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,UAAU;AACb,qBAAa,KAAK,OAAO,QAAQ,GAAG,sBAAwB,qBAAuB;AAAA,MACrF;AACA,cAAQ,MAAM,KAAK,OAAO,QAAQ,cAAc,IAAI,CAAC;AACrD,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,aAAO,WAAW,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,IACvD;AAEA,IAAAA,QAAO,UAAU,eAAe,SAAS,aAAc,OAAO,QAAQ,UAAU;AAC9E,aAAO,WAAW,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAAA,IACxD;AAEA,aAAS,YAAa,KAAK,OAAO,QAAQ,cAAc,UAAU;AAChE,cAAQ,CAAC;AACT,eAAS,WAAW;AACpB,UAAI,CAAC,UAAU;AACb,qBAAa,KAAK,OAAO,QAAQ,GAAG,uBAAyB,sBAAwB;AAAA,MACvF;AACA,cAAQ,MAAM,KAAK,OAAO,QAAQ,cAAc,IAAI,CAAC;AACrD,aAAO,SAAS;AAAA,IAClB;AAEA,IAAAA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,aAAO,YAAY,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,IACxD;AAEA,IAAAA,QAAO,UAAU,gBAAgB,SAAS,cAAe,OAAO,QAAQ,UAAU;AAChF,aAAO,YAAY,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAAA,IACzD;AAGA,IAAAA,QAAO,UAAU,OAAO,SAAS,KAAM,QAAQ,aAAa,OAAO,KAAK;AACtE,UAAI,CAACA,QAAO,SAAS,MAAM,EAAG,OAAM,IAAI,UAAU,6BAA6B;AAC/E,UAAI,CAAC,MAAO,SAAQ;AACpB,UAAI,CAAC,OAAO,QAAQ,EAAG,OAAM,KAAK;AAClC,UAAI,eAAe,OAAO,OAAQ,eAAc,OAAO;AACvD,UAAI,CAAC,YAAa,eAAc;AAChC,UAAI,MAAM,KAAK,MAAM,MAAO,OAAM;AAGlC,UAAI,QAAQ,MAAO,QAAO;AAC1B,UAAI,OAAO,WAAW,KAAK,KAAK,WAAW,EAAG,QAAO;AAGrD,UAAI,cAAc,GAAG;AACnB,cAAM,IAAI,WAAW,2BAA2B;AAAA,MAClD;AACA,UAAI,QAAQ,KAAK,SAAS,KAAK,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AAChF,UAAI,MAAM,EAAG,OAAM,IAAI,WAAW,yBAAyB;AAG3D,UAAI,MAAM,KAAK,OAAQ,OAAM,KAAK;AAClC,UAAI,OAAO,SAAS,cAAc,MAAM,OAAO;AAC7C,cAAM,OAAO,SAAS,cAAc;AAAA,MACtC;AAEA,YAAM,MAAM,MAAM;AAElB,UAAI,SAAS,UAAU,OAAO,WAAW,UAAU,eAAe,YAAY;AAE5E,aAAK,WAAW,aAAa,OAAO,GAAG;AAAA,MACzC,OAAO;AACL,mBAAW,UAAU,IAAI;AAAA,UACvB;AAAA,UACA,KAAK,SAAS,OAAO,GAAG;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAMA,IAAAA,QAAO,UAAU,OAAO,SAAS,KAAM,KAAK,OAAO,KAAK,UAAU;AAEhE,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI,OAAO,UAAU,UAAU;AAC7B,qBAAW;AACX,kBAAQ;AACR,gBAAM,KAAK;AAAA,QACb,WAAW,OAAO,QAAQ,UAAU;AAClC,qBAAW;AACX,gBAAM,KAAK;AAAA,QACb;AACA,YAAI,aAAa,UAAa,OAAO,aAAa,UAAU;AAC1D,gBAAM,IAAI,UAAU,2BAA2B;AAAA,QACjD;AACA,YAAI,OAAO,aAAa,YAAY,CAACA,QAAO,WAAW,QAAQ,GAAG;AAChE,gBAAM,IAAI,UAAU,uBAAuB,QAAQ;AAAA,QACrD;AACA,YAAI,IAAI,WAAW,GAAG;AACpB,gBAAM,OAAO,IAAI,WAAW,CAAC;AAC7B,cAAK,aAAa,UAAU,OAAO,OAC/B,aAAa,UAAU;AAEzB,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,WAAW,OAAO,QAAQ,UAAU;AAClC,cAAM,MAAM;AAAA,MACd,WAAW,OAAO,QAAQ,WAAW;AACnC,cAAM,OAAO,GAAG;AAAA,MAClB;AAGA,UAAI,QAAQ,KAAK,KAAK,SAAS,SAAS,KAAK,SAAS,KAAK;AACzD,cAAM,IAAI,WAAW,oBAAoB;AAAA,MAC3C;AAEA,UAAI,OAAO,OAAO;AAChB,eAAO;AAAA,MACT;AAEA,cAAQ,UAAU;AAClB,YAAM,QAAQ,SAAY,KAAK,SAAS,QAAQ;AAEhD,UAAI,CAAC,IAAK,OAAM;AAEhB,UAAI;AACJ,UAAI,OAAO,QAAQ,UAAU;AAC3B,aAAK,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAC5B,eAAK,CAAC,IAAI;AAAA,QACZ;AAAA,MACF,OAAO;AACL,cAAM,QAAQA,QAAO,SAAS,GAAG,IAC7B,MACAA,QAAO,KAAK,KAAK,QAAQ;AAC7B,cAAM,MAAM,MAAM;AAClB,YAAI,QAAQ,GAAG;AACb,gBAAM,IAAI,UAAU,gBAAgB,MAClC,mCAAmC;AAAA,QACvC;AACA,aAAK,IAAI,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG;AAChC,eAAK,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG;AAAA,QACjC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAMA,QAAM,SAAS,CAAC;AAChB,aAAS,EAAG,KAAK,YAAY,MAAM;AACjC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK;AAAA,QACzC,cAAe;AACb,gBAAM;AAEN,iBAAO,eAAe,MAAM,WAAW;AAAA,YACrC,OAAO,WAAW,MAAM,MAAM,SAAS;AAAA,YACvC,UAAU;AAAA,YACV,cAAc;AAAA,UAChB,CAAC;AAGD,eAAK,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;AAGhC,eAAK;AAEL,iBAAO,KAAK;AAAA,QACd;AAAA,QAEA,IAAI,OAAQ;AACV,iBAAO;AAAA,QACT;AAAA,QAEA,IAAI,KAAM,OAAO;AACf,iBAAO,eAAe,MAAM,QAAQ;AAAA,YAClC,cAAc;AAAA,YACd,YAAY;AAAA,YACZ;AAAA,YACA,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,QAEA,WAAY;AACV,iBAAO,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM,KAAK,OAAO;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAEA;AAAA,MAAE;AAAA,MACA,SAAUK,OAAM;AACd,YAAIA,OAAM;AACR,iBAAO,GAAGA,KAAI;AAAA,QAChB;AAEA,eAAO;AAAA,MACT;AAAA,MAAG;AAAA,IAAU;AACf;AAAA,MAAE;AAAA,MACA,SAAUA,OAAM,QAAQ;AACtB,eAAO,QAAQA,KAAI,oDAAoD,OAAO,MAAM;AAAA,MACtF;AAAA,MAAG;AAAA,IAAS;AACd;AAAA,MAAE;AAAA,MACA,SAAU,KAAK,OAAO,OAAO;AAC3B,YAAI,MAAM,iBAAiB,GAAG;AAC9B,YAAI,WAAW;AACf,YAAI,OAAO,UAAU,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;AACxD,qBAAW,sBAAsB,OAAO,KAAK,CAAC;AAAA,QAChD,WAAW,OAAO,UAAU,UAAU;AACpC,qBAAW,OAAO,KAAK;AACvB,cAAI,QAAQ,OAAO,CAAC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI;AACzE,uBAAW,sBAAsB,QAAQ;AAAA,UAC3C;AACA,sBAAY;AAAA,QACd;AACA,eAAO,eAAe,KAAK,cAAc,QAAQ;AACjD,eAAO;AAAA,MACT;AAAA,MAAG;AAAA,IAAU;AAEf,aAAS,sBAAuB,KAAK;AACnC,UAAI,MAAM;AACV,UAAI,IAAI,IAAI;AACZ,YAAM,QAAQ,IAAI,CAAC,MAAM,MAAM,IAAI;AACnC,aAAO,KAAK,QAAQ,GAAG,KAAK,GAAG;AAC7B,cAAM,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG;AAAA,MACrC;AACA,aAAO,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG;AAAA,IACjC;AAKA,aAAS,YAAa,KAAK,QAAQF,aAAY;AAC7C,qBAAe,QAAQ,QAAQ;AAC/B,UAAI,IAAI,MAAM,MAAM,UAAa,IAAI,SAASA,WAAU,MAAM,QAAW;AACvE,oBAAY,QAAQ,IAAI,UAAUA,cAAa,EAAE;AAAA,MACnD;AAAA,IACF;AAEA,aAAS,WAAY,OAAO,KAAK,KAAK,KAAK,QAAQA,aAAY;AAC7D,UAAI,QAAQ,OAAO,QAAQ,KAAK;AAC9B,cAAM,IAAI,OAAO,QAAQ,WAAW,MAAM;AAC1C,YAAI;AACJ,YAAIA,cAAa,GAAG;AAClB,cAAI,QAAQ,KAAK,QAAQ,OAAO,CAAC,GAAG;AAClC,oBAAQ,OAAO,CAAC,WAAW,CAAC,QAAQA,cAAa,KAAK,CAAC,GAAG,CAAC;AAAA,UAC7D,OAAO;AACL,oBAAQ,SAAS,CAAC,QAAQA,cAAa,KAAK,IAAI,CAAC,GAAG,CAAC,iBACzCA,cAAa,KAAK,IAAI,CAAC,GAAG,CAAC;AAAA,UACzC;AAAA,QACF,OAAO;AACL,kBAAQ,MAAM,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;AAAA,QACzC;AACA,cAAM,IAAI,OAAO,iBAAiB,SAAS,OAAO,KAAK;AAAA,MACzD;AACA,kBAAY,KAAK,QAAQA,WAAU;AAAA,IACrC;AAEA,aAAS,eAAgB,OAAOE,OAAM;AACpC,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,OAAO,qBAAqBA,OAAM,UAAU,KAAK;AAAA,MAC7D;AAAA,IACF;AAEA,aAAS,YAAa,OAAO,QAAQ,MAAM;AACzC,UAAI,KAAK,MAAM,KAAK,MAAM,OAAO;AAC/B,uBAAe,OAAO,IAAI;AAC1B,cAAM,IAAI,OAAO,iBAAiB,QAAQ,UAAU,cAAc,KAAK;AAAA,MACzE;AAEA,UAAI,SAAS,GAAG;AACd,cAAM,IAAI,OAAO,yBAAyB;AAAA,MAC5C;AAEA,YAAM,IAAI,OAAO;AAAA,QAAiB,QAAQ;AAAA,QACR,MAAM,OAAO,IAAI,CAAC,WAAW,MAAM;AAAA,QACnC;AAAA,MAAK;AAAA,IACzC;AAKA,QAAM,oBAAoB;AAE1B,aAAS,YAAa,KAAK;AAEzB,YAAM,IAAI,MAAM,GAAG,EAAE,CAAC;AAEtB,YAAM,IAAI,KAAK,EAAE,QAAQ,mBAAmB,EAAE;AAE9C,UAAI,IAAI,SAAS,EAAG,QAAO;AAE3B,aAAO,IAAI,SAAS,MAAM,GAAG;AAC3B,cAAM,MAAM;AAAA,MACd;AACA,aAAO;AAAA,IACT;AAEA,aAASJ,aAAa,QAAQ,OAAO;AACnC,cAAQ,SAAS;AACjB,UAAI;AACJ,YAAM,SAAS,OAAO;AACtB,UAAI,gBAAgB;AACpB,YAAM,QAAQ,CAAC;AAEf,eAAS,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC/B,oBAAY,OAAO,WAAW,CAAC;AAG/B,YAAI,YAAY,SAAU,YAAY,OAAQ;AAE5C,cAAI,CAAC,eAAe;AAElB,gBAAI,YAAY,OAAQ;AAEtB,mBAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAM,KAAM,GAAI;AAClD;AAAA,YACF,WAAW,IAAI,MAAM,QAAQ;AAE3B,mBAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAM,KAAM,GAAI;AAClD;AAAA,YACF;AAGA,4BAAgB;AAEhB;AAAA,UACF;AAGA,cAAI,YAAY,OAAQ;AACtB,iBAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAM,KAAM,GAAI;AAClD,4BAAgB;AAChB;AAAA,UACF;AAGA,uBAAa,gBAAgB,SAAU,KAAK,YAAY,SAAU;AAAA,QACpE,WAAW,eAAe;AAExB,eAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAM,KAAM,GAAI;AAAA,QACpD;AAEA,wBAAgB;AAGhB,YAAI,YAAY,KAAM;AACpB,eAAK,SAAS,KAAK,EAAG;AACtB,gBAAM,KAAK,SAAS;AAAA,QACtB,WAAW,YAAY,MAAO;AAC5B,eAAK,SAAS,KAAK,EAAG;AACtB,gBAAM;AAAA,YACJ,aAAa,IAAM;AAAA,YACnB,YAAY,KAAO;AAAA,UACrB;AAAA,QACF,WAAW,YAAY,OAAS;AAC9B,eAAK,SAAS,KAAK,EAAG;AACtB,gBAAM;AAAA,YACJ,aAAa,KAAM;AAAA,YACnB,aAAa,IAAM,KAAO;AAAA,YAC1B,YAAY,KAAO;AAAA,UACrB;AAAA,QACF,WAAW,YAAY,SAAU;AAC/B,eAAK,SAAS,KAAK,EAAG;AACtB,gBAAM;AAAA,YACJ,aAAa,KAAO;AAAA,YACpB,aAAa,KAAM,KAAO;AAAA,YAC1B,aAAa,IAAM,KAAO;AAAA,YAC1B,YAAY,KAAO;AAAA,UACrB;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,oBAAoB;AAAA,QACtC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,aAAc,KAAK;AAC1B,YAAM,YAAY,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AAEnC,kBAAU,KAAK,IAAI,WAAW,CAAC,IAAI,GAAI;AAAA,MACzC;AACA,aAAO;AAAA,IACT;AAEA,aAAS,eAAgB,KAAK,OAAO;AACnC,UAAI,GAAG,IAAI;AACX,YAAM,YAAY,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AACnC,aAAK,SAAS,KAAK,EAAG;AAEtB,YAAI,IAAI,WAAW,CAAC;AACpB,aAAK,KAAK;AACV,aAAK,IAAI;AACT,kBAAU,KAAK,EAAE;AACjB,kBAAU,KAAK,EAAE;AAAA,MACnB;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,cAAe,KAAK;AAC3B,aAAO,OAAO,YAAY,YAAY,GAAG,CAAC;AAAA,IAC5C;AAEA,aAAS,WAAY,KAAK,KAAK,QAAQ,QAAQ;AAC7C,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC3B,YAAK,IAAI,UAAU,IAAI,UAAY,KAAK,IAAI,OAAS;AACrD,YAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAKA,aAAS,WAAY,KAAK,MAAM;AAC9B,aAAO,eAAe,QACnB,OAAO,QAAQ,IAAI,eAAe,QAAQ,IAAI,YAAY,QAAQ,QACjE,IAAI,YAAY,SAAS,KAAK;AAAA,IACpC;AACA,aAAS,YAAa,KAAK;AAEzB,aAAO,QAAQ;AAAA,IACjB;AAIA,QAAM,uBAAuB,WAAY;AACvC,YAAM,WAAW;AACjB,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,eAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,cAAM,MAAM,IAAI;AAChB,iBAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,gBAAM,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC;AAAA,QAC3C;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG;AAGH,aAAS,mBAAoB,IAAI;AAC/B,aAAO,OAAO,WAAW,cAAc,yBAAyB;AAAA,IAClE;AAEA,aAAS,yBAA0B;AACjC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAAA;AAAA;;;ACzjEA,mBAEM,aAIA,oBAEA,cAIO,iBAQA,sBAgBAK;AApCb;AAAA;AAAA;AAAA,oBAAwC;AAExC,IAAM,cAAc;AAIpB,IAAM,qBAAqB,WAAW,UAAU;AAEhD,IAAM,eAAe,CAAC,SAA6B;AACjD,aAAO,cAAAC,OAAc,KAAK,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,IACzE;AAEO,IAAM,kBAAkB,CAAC,UAAqD;AACnF,UAAI,iBAAiB,aAAa;AAChC,eAAO,cAAAA,OAAc,KAAK,KAAK;AAAA,MACjC;AAEA,aAAO,cAAAA,OAAc,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,IAC5E;AAEO,IAAM,uBAAuB,MAAM;AACxC,kBAAY,SAAS,cAAAA;AAErB,oBAAAA,OAAc,UAAU,WAAW,SAAS,SAAS,OAAgB,KAAc;AACjF,eAAO,aAAa,mBAAmB,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,MAC/D;AAEA,oBAAAA,OAAc,UAAU,QAAQ,SAAS,MAAM,OAAgB,KAAc;AAC3E,eAAO,aAAa,mBAAmB,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,MAC/D;AAEA,aAAO,cAAAA;AAAA,IACT;AAEA,yBAAqB;AAEd,IAAMD,UAAS,cAAAC;AAAA;AAAA;;;ACpCtB;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAiBO,SAAS,UAAU,KAAK,QAAQ;AACnC,QAAMC,aAAY,QAAQ,QACtB,OAAO,OAAO,YACd,eAAe,OACf,OAAO,IAAI,aAAa;AAC5B,MAAI,CAACA,YAAW;AACZ,WAAO;AAAA,EACX;AACA,MAAI,WAAW,QAAW;AACtB,WAAO;AAAA,EACX;AACA,SAAO,OAAO,aAAa,IAAI;AACnC;;;AC7BA;;;ACAA;AAkBO,IAAI;AAAA,CACV,SAAUC,aAAY;AAGnB,EAAAA,YAAWA,YAAW,QAAQ,IAAI,CAAC,IAAI;AACvC,EAAAA,YAAWA,YAAW,OAAO,IAAI,CAAC,IAAI;AAGtC,EAAAA,YAAWA,YAAW,OAAO,IAAI,CAAC,IAAI;AACtC,EAAAA,YAAWA,YAAW,QAAQ,IAAI,CAAC,IAAI;AAGvC,EAAAA,YAAWA,YAAW,OAAO,IAAI,CAAC,IAAI;AACtC,EAAAA,YAAWA,YAAW,SAAS,IAAI,CAAC,IAAI;AACxC,EAAAA,YAAWA,YAAW,SAAS,IAAI,CAAC,IAAI;AACxC,EAAAA,YAAWA,YAAW,MAAM,IAAI,CAAC,IAAI;AACrC,EAAAA,YAAWA,YAAW,QAAQ,IAAI,CAAC,IAAI;AAQvC,EAAAA,YAAWA,YAAW,OAAO,IAAI,EAAE,IAAI;AACvC,EAAAA,YAAWA,YAAW,QAAQ,IAAI,EAAE,IAAI;AAExC,EAAAA,YAAWA,YAAW,UAAU,IAAI,EAAE,IAAI;AAC1C,EAAAA,YAAWA,YAAW,UAAU,IAAI,EAAE,IAAI;AAC1C,EAAAA,YAAWA,YAAW,QAAQ,IAAI,EAAE,IAAI;AACxC,EAAAA,YAAWA,YAAW,QAAQ,IAAI,EAAE,IAAI;AAC5C,GAAG,eAAe,aAAa,CAAC,EAAE;;;ACjDlC;;;ACAA;;;ACAA;AA2CO,SAAS,eAAe;AAC3B,MAAI,UAAU;AACd,MAAI,WAAW;AACf,WAAS,QAAQ,GAAG,QAAQ,IAAI,SAAS,GAAG;AACxC,QAAI,IAAI,KAAK,IAAI,KAAK,KAAK;AAC3B,gBAAY,IAAI,QAAS;AACzB,SAAK,IAAI,QAAS,GAAG;AACjB,WAAK,aAAa;AAClB,aAAO,CAAC,SAAS,QAAQ;AAAA,IAC7B;AAAA,EACJ;AACA,MAAI,aAAa,KAAK,IAAI,KAAK,KAAK;AAEpC,cAAY,aAAa,OAAS;AAElC,cAAY,aAAa,QAAS;AAClC,OAAK,aAAa,QAAS,GAAG;AAC1B,SAAK,aAAa;AAClB,WAAO,CAAC,SAAS,QAAQ;AAAA,EAC7B;AACA,WAAS,QAAQ,GAAG,SAAS,IAAI,SAAS,GAAG;AACzC,QAAI,IAAI,KAAK,IAAI,KAAK,KAAK;AAC3B,iBAAa,IAAI,QAAS;AAC1B,SAAK,IAAI,QAAS,GAAG;AACjB,WAAK,aAAa;AAClB,aAAO,CAAC,SAAS,QAAQ;AAAA,IAC7B;AAAA,EACJ;AACA,QAAM,IAAI,MAAM,gBAAgB;AACpC;AAQO,SAAS,cAAc,IAAI,IAAI,OAAO;AACzC,WAAS,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG;AAC/B,UAAM,QAAQ,OAAO;AACrB,UAAM,UAAU,EAAE,UAAU,KAAK,KAAK,MAAM;AAC5C,UAAM,QAAQ,UAAU,QAAQ,MAAO,SAAS;AAChD,UAAM,KAAK,IAAI;AACf,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,YAAc,OAAO,KAAM,MAAU,KAAK,MAAS;AACzD,QAAM,cAAc,EAAE,MAAM,KAAK;AACjC,QAAM,MAAM,cAAc,YAAY,MAAO,aAAa,GAAI;AAC9D,MAAI,CAAC,aAAa;AACd;AAAA,EACJ;AACA,WAAS,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG;AAC/B,UAAM,QAAQ,OAAO;AACrB,UAAM,UAAU,EAAE,UAAU,KAAK;AACjC,UAAM,QAAQ,UAAU,QAAQ,MAAO,SAAS;AAChD,UAAM,KAAK,IAAI;AACf,QAAI,CAAC,SAAS;AACV;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,KAAM,OAAO,KAAM,CAAI;AACjC;AAEA,IAAM,iBAAiB;AAQhB,SAAS,gBAAgB,KAAK;AAEjC,QAAM,QAAQ,IAAI,CAAC,MAAM;AACzB,MAAI,OAAO;AACP,UAAM,IAAI,MAAM,CAAC;AAAA,EACrB;AAIA,QAAM,OAAO;AACb,MAAI,UAAU;AACd,MAAI,WAAW;AACf,WAAS,YAAY,OAAO,KAAK;AAE7B,UAAM,WAAW,OAAO,IAAI,MAAM,OAAO,GAAG,CAAC;AAC7C,gBAAY;AACZ,cAAU,UAAU,OAAO;AAE3B,QAAI,WAAW,gBAAgB;AAC3B,iBAAW,YAAa,UAAU,iBAAkB;AACpD,gBAAU,UAAU;AAAA,IACxB;AAAA,EACJ;AACA,cAAY,KAAK,GAAG;AACpB,cAAY,KAAK,GAAG;AACpB,cAAY,KAAK,EAAE;AACnB,cAAY,EAAE;AACd,SAAO,QAAQ,OAAO,SAAS,QAAQ,IAAI,QAAQ,SAAS,QAAQ;AACxE;AASO,SAAS,cAAc,IAAI,IAAI;AAClC,MAAI,OAAO,QAAQ,IAAI,EAAE;AAGzB,QAAM,WAAW,KAAK,KAAK;AAC3B,MAAI,UAAU;AACV,WAAO,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,EAClC;AACA,QAAM,SAAS,eAAe,KAAK,IAAI,KAAK,EAAE;AAC9C,SAAO,WAAW,MAAM,SAAS;AACrC;AASO,SAAS,eAAe,IAAI,IAAI;AACnC,GAAC,EAAE,IAAI,GAAG,IAAI,WAAW,IAAI,EAAE;AAO/B,MAAI,MAAM,SAAU;AAChB,WAAO,OAAO,iBAAiB,KAAK,EAAE;AAAA,EAC1C;AAUA,QAAM,MAAM,KAAK;AACjB,QAAM,OAAQ,OAAO,KAAO,MAAM,KAAM;AACxC,QAAM,OAAQ,MAAM,KAAM;AAI1B,MAAI,SAAS,MAAM,MAAM,UAAU,OAAO;AAC1C,MAAI,SAAS,MAAM,OAAO;AAC1B,MAAI,SAAS,OAAO;AAEpB,QAAM,OAAO;AACb,MAAI,UAAU,MAAM;AAChB,cAAU,KAAK,MAAM,SAAS,IAAI;AAClC,cAAU;AAAA,EACd;AACA,MAAI,UAAU,MAAM;AAChB,cAAU,KAAK,MAAM,SAAS,IAAI;AAClC,cAAU;AAAA,EACd;AAIA,SAAQ,OAAO,SAAS,IACpB,+BAA+B,MAAM,IACrC,+BAA+B,MAAM;AAC7C;AACA,SAAS,WAAW,IAAI,IAAI;AACxB,SAAO,EAAE,IAAI,OAAO,GAAG,IAAI,OAAO,EAAE;AACxC;AACA,SAAS,QAAQ,IAAI,IAAI;AACrB,SAAO,EAAE,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE;AACpC;AAKA,SAAS,OAAO,SAAS,UAAU;AAC/B,aAAW,CAAC;AACZ,MAAI,SAAS;AACT,cAAU,CAAC,UAAU;AAAA,EACzB,OACK;AAID,gBAAY;AAAA,EAChB;AACA,SAAO,QAAQ,SAAS,QAAQ;AACpC;AAIA,IAAM,iCAAiC,CAAC,aAAa;AACjD,QAAM,UAAU,OAAO,QAAQ;AAC/B,SAAO,UAAU,MAAM,QAAQ,MAAM,IAAI;AAC7C;AAQO,SAAS,cAAc,OAAO,OAAO;AACxC,MAAI,SAAS,GAAG;AAEZ,WAAO,QAAQ,KAAM;AACjB,YAAM,KAAM,QAAQ,MAAQ,GAAI;AAChC,cAAQ,UAAU;AAAA,IACtB;AACA,UAAM,KAAK,KAAK;AAAA,EACpB,OACK;AACD,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,YAAM,KAAM,QAAQ,MAAO,GAAG;AAC9B,cAAQ,SAAS;AAAA,IACrB;AACA,UAAM,KAAK,CAAC;AAAA,EAChB;AACJ;AAMO,SAAS,eAAe;AAC3B,MAAI,IAAI,KAAK,IAAI,KAAK,KAAK;AAC3B,MAAI,SAAS,IAAI;AACjB,OAAK,IAAI,QAAS,GAAG;AACjB,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AACA,MAAI,KAAK,IAAI,KAAK,KAAK;AACvB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AACA,MAAI,KAAK,IAAI,KAAK,KAAK;AACvB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AACA,MAAI,KAAK,IAAI,KAAK,KAAK;AACvB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AAEA,MAAI,KAAK,IAAI,KAAK,KAAK;AACvB,aAAW,IAAI,OAAS;AACxB,WAAS,YAAY,IAAI,IAAI,SAAU,KAAK,YAAY,IAAI;AACxD,QAAI,KAAK,IAAI,KAAK,KAAK;AAC3B,OAAK,IAAI,QAAS;AACd,UAAM,IAAI,MAAM,gBAAgB;AACpC,OAAK,aAAa;AAElB,SAAO,WAAW;AACtB;;;ADvSO,IAAM,aAA2B,iCAAiB;AACzD,SAAS,mBAAmB;AACxB,QAAM,KAAK,IAAI,SAAS,IAAI,YAAY,CAAC,CAAC;AAE1C,QAAMC,MAAK,OAAO,WAAW,cACzB,OAAO,GAAG,gBAAgB,cAC1B,OAAO,GAAG,iBAAiB,cAC3B,OAAO,GAAG,gBAAgB,cAC1B,OAAO,GAAG,iBAAiB,eAC1B,CAAC,CAAC,WAAW,QACV,OAAO,WAAW,YAClB,OAAO,QAAQ,OAAO,YACtB,QAAQ,IAAI,uBAAuB;AAC3C,MAAIA,KAAI;AACJ,UAAM,MAAM,OAAO,sBAAsB;AACzC,UAAM,MAAM,OAAO,qBAAqB;AACxC,UAAM,OAAO,OAAO,GAAG;AACvB,UAAM,OAAO,OAAO,sBAAsB;AAC1C,WAAO;AAAA,MACH,MAAM,OAAO,CAAC;AAAA,MACd,WAAW;AAAA,MACX,MAAM,OAAO;AACT,cAAM,KAAK,OAAO,SAAS,WAAW,QAAQ,OAAO,KAAK;AAC1D,YAAI,KAAK,OAAO,KAAK,KAAK;AACtB,gBAAM,IAAI,MAAM,kBAAkB,KAAK,EAAE;AAAA,QAC7C;AACA,eAAO;AAAA,MACX;AAAA,MACA,OAAO,OAAO;AACV,cAAM,KAAK,OAAO,SAAS,WAAW,QAAQ,OAAO,KAAK;AAC1D,YAAI,KAAK,QAAQ,KAAK,MAAM;AACxB,gBAAM,IAAI,MAAM,mBAAmB,KAAK,EAAE;AAAA,QAC9C;AACA,eAAO;AAAA,MACX;AAAA,MACA,IAAI,OAAO;AACP,WAAG,YAAY,GAAG,KAAK,MAAM,KAAK,GAAG,IAAI;AACzC,eAAO;AAAA,UACH,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA,UACvB,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA,QAC3B;AAAA,MACJ;AAAA,MACA,KAAK,OAAO;AACR,WAAG,YAAY,GAAG,KAAK,OAAO,KAAK,GAAG,IAAI;AAC1C,eAAO;AAAA,UACH,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA,UACvB,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA,QAC3B;AAAA,MACJ;AAAA,MACA,IAAI,IAAI,IAAI;AACR,WAAG,SAAS,GAAG,IAAI,IAAI;AACvB,WAAG,SAAS,GAAG,IAAI,IAAI;AACvB,eAAO,GAAG,YAAY,GAAG,IAAI;AAAA,MACjC;AAAA,MACA,KAAK,IAAI,IAAI;AACT,WAAG,SAAS,GAAG,IAAI,IAAI;AACvB,WAAG,SAAS,GAAG,IAAI,IAAI;AACvB,eAAO,GAAG,aAAa,GAAG,IAAI;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AAAA,IACH,MAAM;AAAA,IACN,WAAW;AAAA,IACX,MAAM,OAAO;AACT,UAAI,OAAO,SAAS,UAAU;AAC1B,gBAAQ,MAAM,SAAS;AAAA,MAC3B;AACA,wBAAkB,KAAK;AACvB,aAAO;AAAA,IACX;AAAA,IACA,OAAO,OAAO;AACV,UAAI,OAAO,SAAS,UAAU;AAC1B,gBAAQ,MAAM,SAAS;AAAA,MAC3B;AACA,yBAAmB,KAAK;AACxB,aAAO;AAAA,IACX;AAAA,IACA,IAAI,OAAO;AACP,UAAI,OAAO,SAAS,UAAU;AAC1B,gBAAQ,MAAM,SAAS;AAAA,MAC3B;AACA,wBAAkB,KAAK;AACvB,aAAO,gBAAgB,KAAK;AAAA,IAChC;AAAA,IACA,KAAK,OAAO;AACR,UAAI,OAAO,SAAS,UAAU;AAC1B,gBAAQ,MAAM,SAAS;AAAA,MAC3B;AACA,yBAAmB,KAAK;AACxB,aAAO,gBAAgB,KAAK;AAAA,IAChC;AAAA,IACA,IAAI,IAAI,IAAI;AACR,aAAO,cAAc,IAAI,EAAE;AAAA,IAC/B;AAAA,IACA,KAAK,IAAI,IAAI;AACT,aAAO,eAAe,IAAI,EAAE;AAAA,IAChC;AAAA,EACJ;AACJ;AACA,SAAS,kBAAkB,OAAO;AAC9B,MAAI,CAAC,aAAa,KAAK,KAAK,GAAG;AAC3B,UAAM,IAAI,MAAM,oBAAoB,KAAK;AAAA,EAC7C;AACJ;AACA,SAAS,mBAAmB,OAAO;AAC/B,MAAI,CAAC,WAAW,KAAK,KAAK,GAAG;AACzB,UAAM,IAAI,MAAM,qBAAqB,KAAK;AAAA,EAC9C;AACJ;;;ADvEO,SAAS,gBAAgB,MAAM,cAAc;AAChD,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAQ,eAAe,MAAM,WAAW;AAAA,IAC5C,KAAK,WAAW;AACZ,aAAO,IAAI,WAAW,CAAC;AAAA,IAC3B;AAGI,aAAO;AAAA,EACf;AACJ;AAQO,SAAS,kBAAkB,MAAM,OAAO;AAC3C,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,aAAO,UAAU;AAAA,IACrB,KAAK,WAAW;AACZ,aAAO,UAAU;AAAA,IACrB,KAAK,WAAW;AACZ,aAAO,iBAAiB,cAAc,CAAC,MAAM;AAAA,IACjD;AACI,aAAO,SAAS;AAAA,EACxB;AACJ;;;AGhGA;;;ACAA;AAeA,IAAM,WAAW;AACV,IAAM,cAAc,uBAAO,IAAI,sBAAsB;AAMrD,SAAS,gBAEhB,QAAQ,OAAO;AACX,QAAM,IAAI,OAAO,MAAM,SAAS,EAAE;AAClC,MAAI,MAAM,QAAW;AACjB,WAAO;AAAA,EACX;AACA,SAAO,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC;AACrD;AAMO,SAAS,YAEhB,QAAQ,OAAO;AACX,QAAMC,QAAO,MAAM;AACnB,MAAI,MAAM,OAAO;AACb,WAAO,OAAO,MAAM,MAAM,SAAS,EAAE,SAASA;AAAA,EAClD;AACA,MAAI,MAAM,YAAY,UAAU;AAG5B,WAAQ,OAAOA,KAAI,MAAM,UACrB,OAAO,UAAU,eAAe,KAAK,QAAQA,KAAI;AAAA,EACzD;AACA,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AACD,aAAO,OAAOA,KAAI,EAAE,SAAS;AAAA,IACjC,KAAK;AACD,aAAO,OAAO,KAAK,OAAOA,KAAI,CAAC,EAAE,SAAS;AAAA,IAC9C,KAAK;AACD,aAAO,CAAC,kBAAkB,MAAM,QAAQ,OAAOA,KAAI,CAAC;AAAA,IACxD,KAAK;AACD,aAAO,OAAOA,KAAI,MAAM,MAAM,KAAK,OAAO,CAAC,EAAE;AAAA,EACrD;AACA,QAAM,IAAI,MAAM,sCAAsC;AAC1D;AAOO,SAAS,oBAAoB,QAAQ,WAAW;AACnD,SAAQ,OAAO,UAAU,eAAe,KAAK,QAAQ,SAAS,KAC1D,OAAO,SAAS,MAAM;AAC9B;AAMO,SAAS,UAAU,QAAQ,OAAO;AACrC,MAAI,MAAM,OAAO;AACb,UAAM,QAAQ,OAAO,MAAM,MAAM,SAAS;AAC1C,QAAI,MAAM,SAAS,MAAM,WAAW;AAChC,aAAO,MAAM;AAAA,IACjB;AACA,WAAO;AAAA,EACX;AACA,SAAO,OAAO,MAAM,SAAS;AACjC;AAMO,SAAS,UAAU,QAAQ,OAAO,OAAO;AAC5C,MAAI,MAAM,OAAO;AACb,WAAO,MAAM,MAAM,SAAS,IAAI;AAAA,MAC5B,MAAM,MAAM;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ,OACK;AACD,WAAO,MAAM,SAAS,IAAI;AAAA,EAC9B;AACJ;AAMO,SAAS,YAEhB,QAAQ,OAAO;AACX,QAAMA,QAAO,MAAM;AACnB,MAAI,MAAM,OAAO;AACb,UAAM,iBAAiB,MAAM,MAAM;AACnC,QAAI,OAAO,cAAc,EAAE,SAASA,OAAM;AACtC,aAAO,cAAc,IAAI,EAAE,MAAM,OAAU;AAAA,IAC/C;AAAA,EACJ,WACS,MAAM,YAAY,UAAU;AAIjC,WAAO,OAAOA,KAAI;AAAA,EACtB,OACK;AACD,YAAQ,MAAM,WAAW;AAAA,MACrB,KAAK;AACD,eAAOA,KAAI,IAAI,CAAC;AAChB;AAAA,MACJ,KAAK;AACD,eAAOA,KAAI,IAAI,CAAC;AAChB;AAAA,MACJ,KAAK;AACD,eAAOA,KAAI,IAAI,MAAM,KAAK,OAAO,CAAC,EAAE;AACpC;AAAA,MACJ,KAAK;AACD,eAAOA,KAAI,IAAI,gBAAgB,MAAM,QAAQ,MAAM,YAAY;AAC/D;AAAA,IACR;AAAA,EACJ;AACJ;;;AD7HO,SAAS,SAAS,KAAK;AAC1B,SAAO,QAAQ,QAAQ,OAAO,OAAO,YAAY,CAAC,MAAM,QAAQ,GAAG;AACvE;AASO,SAAS,cAAc,KAAK,OAAO;AACtC,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,SAAS,GAAG,KACZ,eAAe,OACf,SAAS,OACT,WAAW,OACX,OAAO,IAAI,SAAS,YAAY;AAChC,QAAI,UAAU,QAAW;AACrB,YAAM,IAAI;AACV,YAAM,IAAI,IAAI,MAAM;AACpB,aAAQ,EAAE,YAAY,EAAE,YACpB,EAAE,WAAW,EAAE,YACb,KAAK,EAAE,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,KAAK,EAAE,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,eAChI,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG;AAAA,IACpI;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,SAAS,aAAa,KAAK,OAAO;AACrC,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI,SAAS,GAAG,KACZ,eAAe,OACf,SAAS,OACT,WAAW,OACX,OAAO,IAAI,SAAS,YAAY;AAChC,QAAI,UAAU,QAAW;AACrB,YAAM,IAAI,OAAO,IAAI,IAAI,MAAM;AAC/B,aAAQ,EAAE,WAAW,EAAE,UACnB,EAAE,WAAW,EAAE,WACf,EAAE,WAAW,EAAE,YACb,KAAK,EAAE,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,KAAK,EAAE,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,eAChI,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,KAAK,EAAE,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG;AAAA,IACpI;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,SAAS,iBAAiB,KAAKC,cAAa;AAC/C,SAAQ,SAAS,GAAG,KAChB,eAAe,OACf,UAAU,OACV,SAAS,IAAI,IAAI,KACjB,IAAI,KAAK,SAAS,cACjBA,iBAAgB,UAAa,IAAI,KAAK,YAAYA,aAAY;AACvE;;;AEtEA;AAaO,SAAS,UAAU,KAAK;AAC3B,SAAO,kBAAkB,IAAI,SAAS;AAC1C;AACO,SAAS,cAAcC,cAAa;AACvC,QAAM,IAAIA,aAAY,OAAO,CAAC;AAC9B,SAAQ,kBAAkBA,aAAY,QAAQ,KAC1C,MAAM,UACN,EAAE,aAAa,YACf,EAAE,QAAQ,WACV,EAAE,UAAU;AACpB;AAUO,SAAS,4BAA4B,MAAM;AAC9C,UAAQ,KAAK,UAAU;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,IACX;AACI,aAAO,cAAc,IAAI;AAAA,EACjC;AACJ;AACA,SAAS,kBAAkBC,OAAM;AAC7B,SAAQA,MAAK,WAAW,kBAAkB,KACtC;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,EAAE,SAASA,MAAK,UAAU,EAAE,CAAC;AACrC;;;APxCA,IAAM,iBAAiB;AAEvB,IAAM,iBAAiB;AAEvB,IAAMC,YAAW;AAOV,SAAS,OAAO,QAAQ,MAAM;AACjC,MAAI,UAAU,MAAM,MAAM,GAAG;AACzB,WAAO;AAAA,EACX;AACA,QAAM,UAAU,kBAAkB,MAAM;AACxC,MAAI,SAAS,QAAW;AACpB,gBAAY,QAAQ,SAAS,IAAI;AAAA,EACrC;AACA,SAAO;AACX;AAIA,SAAS,YAAYC,cAAa,SAAS,MAAM;AAC7C,aAAW,UAAUA,aAAY,SAAS;AACtC,QAAI,QAAQ,KAAK,OAAO,SAAS;AACjC,QAAI,SAAS,MAAM;AAEf;AAAA,IACJ;AACA,QAAI;AACJ,QAAI,OAAO,QAAQ,SAAS;AACxB,YAAM,aAAa,gBAAgB,MAAM,MAAM;AAC/C,UAAI,CAAC,YAAY;AACb;AAAA,MACJ;AACA,cAAQ;AACR,cAAQ,UAAU,MAAM,UAAU;AAAA,IACtC,OACK;AACD,cAAQ;AAAA,IACZ;AACA,YAAQ,MAAM,WAAW;AAAA,MACrB,KAAK;AACD,gBAAQ,UAAU,OAAO,KAAK;AAC9B;AAAA,MACJ,KAAK;AACD,gBAAQ,WAAW,OAAO,KAAK;AAC/B;AAAA,MACJ,KAAK;AACD,gBAAQ,SAAS,OAAO,KAAK;AAC7B;AAAA,MACJ,KAAK;AACD,gBAAQ,QAAQ,OAAO,KAAK;AAC5B;AAAA,IACR;AACA,cAAU,SAAS,OAAO,KAAK;AAAA,EACnC;AACA,SAAO;AACX;AACA,SAAS,WAAW,OAAO,OAAO;AAC9B,MAAI,MAAM,UAAU,WAAW,OAAO;AAClC,WAAO,QAAQ,KAAK;AAAA,EACxB;AACA,SAAO;AACX;AACA,SAAS,QAAQ,OAAO,OAAO;AAC3B,MAAI,SAAS,KAAK,GAAG;AACjB,QAAI,MAAM,UAAU,WAAW,OAAO;AAClC,aAAO,oBAAoB,OAAO,OAAO;AAAA,IAC7C;AACA,QAAI,MAAM,WAAW,WAAW;AAC5B,aAAO,oBAAoB,OAAO,CAAC,QAAQ,UAAU,OAAO,GAAG,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,SAAS,OAAO,OAAO;AAC5B,MAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,QAAI,MAAM,UAAU,WAAW,OAAO;AAClC,aAAO,MAAM,IAAI,OAAO;AAAA,IAC5B;AACA,QAAI,MAAM,YAAY,WAAW;AAC7B,aAAO,MAAM,IAAI,CAAC,SAAS,UAAU,OAAO,IAAI,CAAC;AAAA,IACrD;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,UAAU,OAAO,OAAO;AAC7B,MAAI,MAAM,aAAa,aACnB,CAAC,MAAM,SACP,cAAc,MAAM,OAAO,GAAG;AAG9B,WAAO,WAAW,MAAM,QAAQ,OAAO,CAAC,GAAG,KAAK;AAAA,EACpD;AACA,MAAI,SAAS,KAAK,GAAG;AACjB,QAAI,MAAM,QAAQ,YAAY,4BAC1B,MAAM,OAAO,aAAa,yBAAyB;AAGnD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,UAAU,OAAO,MAAM,OAAO,GAAG;AAClC,aAAO,OAAO,MAAM,SAAS,KAAK;AAAA,IACtC;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,QAAQ,OAAO;AACpB,SAAO,MAAM,QAAQ,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI;AAC1D;AACA,SAAS,oBAAoB,KAAK,IAAI;AAClC,QAAM,MAAM,CAAC;AACb,aAAW,SAAS,OAAO,QAAQ,GAAG,GAAG;AACrC,QAAI,MAAM,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAAA,EAC/B;AACA,SAAO;AACX;AACA,IAAM,wBAAwB,uBAAO;AACrC,IAAM,oBAAoB,oBAAI,QAAQ;AAItC,SAAS,kBAAkB,MAAM;AAC7B,MAAI;AACJ,MAAI,CAAC,oBAAoB,IAAI,GAAG;AAC5B,UAAM;AAAA,MACF,WAAW,KAAK;AAAA,IACpB;AACA,eAAW,UAAU,KAAK,SAAS;AAC/B,UAAI,OAAO,QAAQ,WAAW,OAAO,YAAYD,WAAU;AACvD,YAAI,OAAO,SAAS,IAAI,gBAAgB,MAAM;AAAA,MAClD;AAAA,IACJ;AAAA,EACJ,OACK;AAED,UAAM,SAAS,kBAAkB,IAAI,IAAI;AACzC,QAAI;AACJ,QAAI;AACJ,QAAI,QAAQ;AACR,OAAC,EAAE,WAAW,QAAQ,IAAI;AAAA,IAC9B,OACK;AACD,kBAAY,CAAC;AACb,gBAAU,oBAAI,IAAI;AAClB,iBAAW,UAAU,KAAK,SAAS;AAC/B,YAAI,OAAO,QAAQ,SAAS;AAGxB;AAAA,QACJ;AACA,YAAI,OAAO,aAAa,YAAY,OAAO,aAAa,QAAQ;AAG5D;AAAA,QACJ;AACA,YAAI,OAAO,YAAYA,WAAU;AAG7B;AAAA,QACJ;AACA,gBAAQ,IAAI,MAAM;AAClB,kBAAU,OAAO,SAAS,IAAI,gBAAgB,MAAM;AAAA,MACxD;AACA,wBAAkB,IAAI,MAAM,EAAE,WAAW,QAAQ,CAAC;AAAA,IACtD;AACA,UAAM,OAAO,OAAO,SAAS;AAC7B,QAAI,YAAY,KAAK;AACrB,eAAW,UAAU,KAAK,SAAS;AAC/B,UAAI,QAAQ,IAAI,MAAM,GAAG;AACrB;AAAA,MACJ;AACA,UAAI,OAAO,QAAQ,SAAS;AACxB,YAAI,OAAO,aAAa,WAAW;AAC/B;AAAA,QACJ;AACA,YAAI,OAAO,aAAa,YAAY,OAAO,aAAa,QAAQ;AAC5D,cAAI,OAAO,YAAYA,WAAU;AAC7B;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,OAAO,SAAS,IAAI,gBAAgB,MAAM;AAAA,IAClD;AAAA,EACJ;AACA,SAAO;AACX;AAIA,SAAS,oBAAoB,MAAM;AAC/B,UAAQ,KAAK,KAAK,SAAS;AAAA,IACvB,KAAK;AAED,aAAO;AAAA,IACX,KAAK;AAED,aAAO;AAAA,IACX;AAII,aAAO,KAAK,OAAO,KAAK,CAAC,MAAM,EAAE,YAAYA,aAAY,EAAE,aAAa,aAAa,CAAC,EAAE,KAAK;AAAA,EACrG;AACJ;AAKA,SAAS,gBAAgB,OAAO;AAC5B,MAAI,MAAM,QAAQ,SAAS;AACvB,WAAO,EAAE,MAAM,OAAU;AAAA,EAC7B;AACA,MAAI,MAAM,aAAa,QAAQ;AAC3B,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,MAAM,aAAa,OAAO;AAC1B,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,MAAM,aAAa,WAAW;AAC9B,WAAO;AAAA,EACX;AACA,QAAM,eAAe,MAAM,gBAAgB;AAC3C,MAAI,iBAAiB,QAAW;AAC5B,WAAO,MAAM,aAAa,YAAY,MAAM,eACtC,aAAa,SAAS,IACtB;AAAA,EACV;AACA,SAAO,MAAM,aAAa,WACpB,gBAAgB,MAAM,QAAQ,MAAM,YAAY,IAChD,MAAM,KAAK,OAAO,CAAC,EAAE;AAC/B;;;AQ/PA;;;ACAA;;;ACAA;AAaA,IAAM,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,aAAN,cAAyB,MAAM;AAAA,EAClC,YAAY,cAAc,SAASE,QAAO,0BAA0B;AAChE,UAAM,OAAO;AACb,SAAK,OAAOA;AACZ,SAAK,QAAQ,MAAM;AAAA,EACvB;AACJ;AACO,SAAS,aAAa,KAAK;AAC9B,SAAQ,eAAe,SACnB,WAAW,SAAS,IAAI,IAAI,KAC5B,WAAW,OACX,OAAO,IAAI,SAAS;AAC5B;;;AC9BA;;;ACAA;AAaA,IAAM,SAAS,uBAAO,IAAI,kCAAkC;AAarD,SAAS,kBAAkB;AAC9B,MAAI,WAAW,MAAM,KAAK,QAAW;AACjC,UAAM,KAAK,IAAI,WAAW,YAAY;AACtC,UAAM,KAAK,IAAI,WAAW,YAAY;AACtC,QAAI;AACJ,eAAW,MAAM,IAAI;AAAA,MACjB,WAAW,MAAM;AACb,eAAO,GAAG,OAAO,IAAI;AAAA,MACzB;AAAA,MACA,WAAW,OAAO,QAAQ;AACtB,YAAI,QAAQ;AACR,cAAI,aAAa,QAAW;AACxB,uBAAW,IAAI,WAAW,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;AAAA,UAClE;AACA,iBAAO,SAAS,OAAO,KAAK;AAAA,QAChC;AACA,eAAO,GAAG,OAAO,KAAK;AAAA,MAC1B;AAAA,MACA,UAAU,MAAM;AACZ,YAAI;AACA,6BAAmB,IAAI;AACvB,iBAAO;AAAA,QACX,SACO,GAAG;AACN,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,WAAW,MAAM;AAC5B;;;ADhCO,IAAI;AAAA,CACV,SAAUC,WAAU;AAIjB,EAAAA,UAASA,UAAS,QAAQ,IAAI,CAAC,IAAI;AAKnC,EAAAA,UAASA,UAAS,OAAO,IAAI,CAAC,IAAI;AAQlC,EAAAA,UAASA,UAAS,iBAAiB,IAAI,CAAC,IAAI;AAK5C,EAAAA,UAASA,UAAS,YAAY,IAAI,CAAC,IAAI;AAIvC,EAAAA,UAASA,UAAS,UAAU,IAAI,CAAC,IAAI;AAKrC,EAAAA,UAASA,UAAS,OAAO,IAAI,CAAC,IAAI;AACtC,GAAG,aAAa,WAAW,CAAC,EAAE;AAIvB,IAAM,cAAc;AAIpB,IAAM,cAAc;AAIpB,IAAM,aAAa;AAInB,IAAM,YAAY;AAIlB,IAAM,YAAY;AAClB,IAAM,eAAN,MAAmB;AAAA,EACtB,YAAY,aAAa,gBAAgB,EAAE,YAAY;AACnD,SAAK,aAAa;AAIlB,SAAK,QAAQ,CAAC;AACd,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,CAAC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACL,QAAI,KAAK,IAAI,QAAQ;AACjB,WAAK,OAAO,KAAK,IAAI,WAAW,KAAK,GAAG,CAAC;AACzC,WAAK,MAAM,CAAC;AAAA,IAChB;AACA,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ;AACpC,aAAO,KAAK,OAAO,CAAC,EAAE;AAC1B,QAAI,QAAQ,IAAI,WAAW,GAAG;AAC9B,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AACzC,YAAM,IAAI,KAAK,OAAO,CAAC,GAAG,MAAM;AAChC,gBAAU,KAAK,OAAO,CAAC,EAAE;AAAA,IAC7B;AACA,SAAK,SAAS,CAAC;AACf,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO;AACH,SAAK,MAAM,KAAK,EAAE,QAAQ,KAAK,QAAQ,KAAK,KAAK,IAAI,CAAC;AACtD,SAAK,SAAS,CAAC;AACf,SAAK,MAAM,CAAC;AACZ,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AAEH,QAAI,QAAQ,KAAK,OAAO;AAExB,QAAI,OAAO,KAAK,MAAM,IAAI;AAC1B,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,iCAAiC;AACrD,SAAK,SAAS,KAAK;AACnB,SAAK,MAAM,KAAK;AAEhB,SAAK,OAAO,MAAM,UAAU;AAC5B,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,SAAS,MAAM;AACf,WAAO,KAAK,QAAS,WAAW,IAAK,UAAU,CAAC;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACP,QAAI,KAAK,IAAI,QAAQ;AACjB,WAAK,OAAO,KAAK,IAAI,WAAW,KAAK,GAAG,CAAC;AACzC,WAAK,MAAM,CAAC;AAAA,IAChB;AACA,SAAK,OAAO,KAAK,KAAK;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,iBAAa,KAAK;AAElB,WAAO,QAAQ,KAAM;AACjB,WAAK,IAAI,KAAM,QAAQ,MAAQ,GAAI;AACnC,cAAQ,UAAU;AAAA,IACtB;AACA,SAAK,IAAI,KAAK,KAAK;AACnB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AACT,gBAAY,KAAK;AACjB,kBAAc,OAAO,KAAK,GAAG;AAC7B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,OAAO;AACR,SAAK,IAAI,KAAK,QAAQ,IAAI,CAAC;AAC3B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AACT,SAAK,OAAO,MAAM,UAAU;AAC5B,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,QAAI,QAAQ,KAAK,WAAW,KAAK;AACjC,SAAK,OAAO,MAAM,UAAU;AAC5B,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AACT,kBAAc,KAAK;AACnB,QAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,QAAI,SAAS,MAAM,MAAM,EAAE,WAAW,GAAG,OAAO,IAAI;AACpD,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,QAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,QAAI,SAAS,MAAM,MAAM,EAAE,WAAW,GAAG,OAAO,IAAI;AACpD,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,OAAO;AACX,iBAAa,KAAK;AAClB,QAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,QAAI,SAAS,MAAM,MAAM,EAAE,UAAU,GAAG,OAAO,IAAI;AACnD,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,OAAO;AACZ,gBAAY,KAAK;AACjB,QAAI,QAAQ,IAAI,WAAW,CAAC;AAC5B,QAAI,SAAS,MAAM,MAAM,EAAE,SAAS,GAAG,OAAO,IAAI;AAClD,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,gBAAY,KAAK;AAEjB,aAAU,SAAS,IAAM,SAAS,QAAS;AAC3C,kBAAc,OAAO,KAAK,GAAG;AAC7B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,OAAO;AACZ,QAAI,QAAQ,IAAI,WAAW,CAAC,GAAG,OAAO,IAAI,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,IAAI,KAAK;AAC3F,SAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,SAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,OAAO;AACX,QAAI,QAAQ,IAAI,WAAW,CAAC,GAAG,OAAO,IAAI,SAAS,MAAM,MAAM,GAAG,KAAK,WAAW,KAAK,KAAK;AAC5F,SAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,SAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,WAAO,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,OAAO;AACT,QAAI,KAAK,WAAW,IAAI,KAAK;AAC7B,kBAAc,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG;AACpC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,UAAM,KAAK,WAAW,IAAI,KAAK,GAE/B,OAAO,GAAG,MAAM,IAAI,KAAM,GAAG,MAAM,IAAK,MAAM,MAAO,GAAG,MAAM,IAAM,GAAG,OAAO,MAAO;AACrF,kBAAc,IAAI,IAAI,KAAK,GAAG;AAC9B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAO;AACV,UAAM,KAAK,WAAW,KAAK,KAAK;AAChC,kBAAc,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG;AACpC,WAAO;AAAA,EACX;AACJ;AACO,IAAM,eAAN,MAAmB;AAAA,EACtB,YAAY,KAAK,aAAa,gBAAgB,EAAE,YAAY;AACxD,SAAK,aAAa;AAClB,SAAK,WAAW;AAIhB,SAAK,SAAS;AACd,SAAK,MAAM;AACX,SAAK,MAAM,IAAI;AACf,SAAK,MAAM;AACX,SAAK,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AACF,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,KAAK,OAAO;AACxB,UAAM,YAAY,KAAK,MAAM;AAC7B,QAAI,YAAY,KAAM,aAAa,KAAK,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,IAAO;AACpE,YAAM,IAAI,MAAM,sCAAsC;AAAA,IAC1D;AACA,UAAM,UAAU,QAAQ;AACxB,UAAM,WAAW,MAAM;AACvB,QAAI,WAAW,KAAK,WAAW,GAAG;AAC9B,YAAM,IAAI,MAAM,2BAA2B,UAAU,gBAAgB,QAAQ;AAAA,IACjF;AACA,WAAO,CAAC,SAAS,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAK,UAAU,SAAS;AACpB,QAAI,QAAQ,KAAK;AACjB,YAAQ,UAAU;AAAA,MACd,KAAK,SAAS;AACV,eAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAM;AAAA,QAEpC;AACA;AAAA;AAAA,MAEJ,KAAK,SAAS;AACV,aAAK,OAAO;AAAA,MAChB,KAAK,SAAS;AACV,aAAK,OAAO;AACZ;AAAA,MACJ,KAAK,SAAS;AACV,YAAI,MAAM,KAAK,OAAO;AACtB,aAAK,OAAO;AACZ;AAAA,MACJ,KAAK,SAAS;AACV,mBAAS;AACL,gBAAM,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;AAC1B,cAAI,OAAO,SAAS,UAAU;AAC1B,gBAAI,YAAY,UAAa,OAAO,SAAS;AACzC,oBAAM,IAAI,MAAM,uBAAuB;AAAA,YAC3C;AACA;AAAA,UACJ;AACA,eAAK,KAAK,IAAI,EAAE;AAAA,QACpB;AACA;AAAA,MACJ;AACI,cAAM,IAAI,MAAM,yBAAyB,QAAQ;AAAA,IACzD;AACA,SAAK,aAAa;AAClB,WAAO,KAAK,IAAI,SAAS,OAAO,KAAK,GAAG;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAIA,eAAe;AACX,QAAI,KAAK,MAAM,KAAK;AAChB,YAAM,IAAI,WAAW,eAAe;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACJ,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACL,QAAI,MAAM,KAAK,OAAO;AAEtB,WAAQ,QAAQ,IAAK,EAAE,MAAM;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACJ,WAAO,WAAW,IAAI,GAAG,KAAK,SAAS,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACL,WAAO,WAAW,KAAK,GAAG,KAAK,SAAS,CAAC;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACL,QAAI,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;AAE7B,QAAI,IAAI,EAAE,KAAK;AACf,UAAO,OAAO,KAAO,KAAK,MAAM,MAAO;AACvC,SAAM,OAAO,IAAK;AAClB,WAAO,WAAW,IAAI,IAAI,EAAE;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO;AACH,QAAI,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS;AAC7B,WAAO,OAAO,KAAK,OAAO;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AAEN,WAAO,KAAK,KAAK,WAAW,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AAEP,WAAO,KAAK,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA,EAIA,UAAU;AACN,WAAO,WAAW,KAAK,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACP,WAAO,WAAW,IAAI,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AAEJ,WAAO,KAAK,KAAK,YAAY,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AAEL,WAAO,KAAK,KAAK,YAAY,KAAK,OAAO,KAAK,GAAG,IAAI;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACJ,QAAI,MAAM,KAAK,OAAO,GAAG,QAAQ,KAAK;AACtC,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,WAAO,KAAK,IAAI,SAAS,OAAO,QAAQ,GAAG;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAQ;AACX,WAAO,KAAK,WAAW,KAAK,MAAM,GAAG,MAAM;AAAA,EAC/C;AACJ;AAIA,SAAS,YAAY,KAAK;AACtB,MAAI,OAAO,OAAO,UAAU;AACxB,UAAM,OAAO,GAAG;AAAA,EACpB,WACS,OAAO,OAAO,UAAU;AAC7B,UAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG;AAAA,EAClD;AACA,MAAI,CAAC,OAAO,UAAU,GAAG,KACrB,MAAM,aACN,MAAM;AACN,UAAM,IAAI,MAAM,oBAAoB,GAAG;AAC/C;AAIA,SAAS,aAAa,KAAK;AACvB,MAAI,OAAO,OAAO,UAAU;AACxB,UAAM,OAAO,GAAG;AAAA,EACpB,WACS,OAAO,OAAO,UAAU;AAC7B,UAAM,IAAI,MAAM,qBAAqB,OAAO,GAAG;AAAA,EACnD;AACA,MAAI,CAAC,OAAO,UAAU,GAAG,KACrB,MAAM,cACN,MAAM;AACN,UAAM,IAAI,MAAM,qBAAqB,GAAG;AAChD;AAIA,SAAS,cAAc,KAAK;AACxB,MAAI,OAAO,OAAO,UAAU;AACxB,UAAM,IAAI;AACV,UAAM,OAAO,GAAG;AAChB,QAAI,OAAO,MAAM,GAAG,KAAK,MAAM,OAAO;AAClC,YAAM,IAAI,MAAM,sBAAsB,CAAC;AAAA,IAC3C;AAAA,EACJ,WACS,OAAO,OAAO,UAAU;AAC7B,UAAM,IAAI,MAAM,sBAAsB,OAAO,GAAG;AAAA,EACpD;AACA,MAAI,OAAO,SAAS,GAAG,MAClB,MAAM,eAAe,MAAM;AAC5B,UAAM,IAAI,MAAM,sBAAsB,GAAG;AACjD;;;AFhfO,SAAS,WAAW,OAAO,OAAO;AACrC,QAAM,QAAQ,MAAM,aAAa,SAC3B,cAAc,OAAO,KAAK,IAC1B,MAAM,aAAa,QACf,aAAa,OAAO,KAAK,IACzB,cAAc,OAAO,KAAK;AACpC,MAAI,UAAU,MAAM;AAChB,WAAO;AAAA,EACX;AACA,MAAI;AACJ,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AACD,eAAS,YAAY,kBAAkB,KAAK,CAAC,SAAS,UAAU,KAAK,CAAC;AACtE;AAAA,IACJ,KAAK;AACD,eAAS,YAAY,iBAAiB,KAAK,CAAC,SAAS,UAAU,KAAK,CAAC;AACrE;AAAA,IACJ,SAAS;AACL,eAAS,eAAe,OAAO,OAAO,KAAK;AAAA,IAC/C;AAAA,EACJ;AACA,SAAO,IAAI,WAAW,OAAO,MAAM;AACvC;AAIO,SAAS,cAAc,OAAO,OAAO,OAAO;AAC/C,QAAM,QAAQ,cAAc,OAAO,KAAK;AACxC,MAAI,UAAU,MAAM;AAChB,WAAO,IAAI,WAAW,OAAO,cAAc,QAAQ,CAAC,KAAK,eAAe,OAAO,OAAO,KAAK,CAAC,EAAE;AAAA,EAClG;AACA,SAAO;AACX;AAIO,SAAS,cAAc,OAAO,KAAK,OAAO;AAC7C,QAAM,WAAW,iBAAiB,KAAK,MAAM,MAAM;AACnD,MAAI,aAAa,MAAM;AACnB,WAAO,IAAI,WAAW,OAAO,oBAAoB,eAAe,EAAE,QAAQ,MAAM,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE;AAAA,EAC9G;AACA,QAAM,WAAW,cAAc,OAAO,KAAK;AAC3C,MAAI,aAAa,MAAM;AACnB,WAAO,IAAI,WAAW,OAAO,aAAa,UAAU,GAAG,CAAC,KAAK,eAAe,OAAO,OAAO,QAAQ,CAAC,EAAE;AAAA,EACzG;AACA,SAAO;AACX;AACA,SAAS,cAAc,OAAO,OAAO;AACjC,MAAI,MAAM,WAAW,QAAW;AAC5B,WAAO,iBAAiB,OAAO,MAAM,MAAM;AAAA,EAC/C;AACA,MAAI,MAAM,SAAS,QAAW;AAC1B,QAAI,MAAM,KAAK,MAAM;AACjB,aAAO,OAAO,UAAU,KAAK;AAAA,IACjC;AACA,WAAO,MAAM,KAAK,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,KAAK;AAAA,EAC3D;AACA,SAAO,iBAAiB,OAAO,MAAM,OAAO;AAChD;AACA,SAAS,iBAAiB,OAAO,QAAQ;AACrC,UAAQ,QAAQ;AAAA,IACZ,KAAK,WAAW;AACZ,aAAO,OAAO,SAAS;AAAA,IAC3B,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,UAAU;AAC1B,eAAO;AAAA,MACX;AACA,UAAI,OAAO,MAAM,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG;AAChD,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,eAAe,QAAQ,aAAa;AAC5C,eAAO,GAAG,MAAM,QAAQ,CAAC;AAAA,MAC7B;AACA,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAEZ,UAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,GAAG;AACvD,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,aAAa,QAAQ,WAAW;AACxC,eAAO,GAAG,MAAM,QAAQ,CAAC;AAAA,MAC7B;AACA,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAEZ,UAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,GAAG;AACvD,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,cAAc,QAAQ,GAAG;AACjC,eAAO,GAAG,MAAM,QAAQ,CAAC;AAAA,MAC7B;AACA,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO,OAAO,SAAS;AAAA,IAC3B,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,UAAU;AAC1B,eAAO;AAAA,MACX;AACA,aAAO,gBAAgB,EAAE,UAAU,KAAK,KAAK;AAAA,IACjD,KAAK,WAAW;AACZ,aAAO,iBAAiB;AAAA,IAC5B,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAEZ,UAAI,OAAO,SAAS,YAChB,OAAO,SAAS,YACf,OAAO,SAAS,YAAY,MAAM,SAAS,GAAI;AAChD,YAAI;AACA,qBAAW,MAAM,KAAK;AACtB,iBAAO;AAAA,QACX,SACO,GAAG;AACN,iBAAO,GAAG,KAAK;AAAA,QACnB;AAAA,MACJ;AACA,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAEZ,UAAI,OAAO,SAAS,YAChB,OAAO,SAAS,YACf,OAAO,SAAS,YAAY,MAAM,SAAS,GAAI;AAChD,YAAI;AACA,qBAAW,OAAO,KAAK;AACvB,iBAAO;AAAA,QACX,SACO,GAAG;AACN,iBAAO,GAAG,KAAK;AAAA,QACnB;AAAA,MACJ;AACA,aAAO;AAAA,EACf;AACJ;AACA,SAAS,eAAe,OAAO,KAAK,SAAS;AACzC,YACI,OAAO,WAAW,WAAW,KAAK,OAAO,KAAK,SAAS,UAAU,GAAG,CAAC;AACzE,MAAI,MAAM,WAAW,QAAW;AAC5B,WAAO,YAAY,sBAAsB,MAAM,MAAM,CAAC,KAAK;AAAA,EAC/D;AACA,MAAI,MAAM,SAAS,QAAW;AAC1B,WAAO,YAAY,MAAM,KAAK,SAAS,CAAC,KAAK;AAAA,EACjD;AACA,SAAO,YAAY,qBAAqB,MAAM,OAAO,CAAC,KAAK;AAC/D;AACO,SAAS,UAAU,KAAK;AAC3B,UAAQ,OAAO,KAAK;AAAA,IAChB,KAAK;AACD,UAAI,QAAQ,MAAM;AACd,eAAO;AAAA,MACX;AACA,UAAI,eAAe,YAAY;AAC3B,eAAO,cAAc,IAAI,MAAM;AAAA,MACnC;AACA,UAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,eAAO,SAAS,IAAI,MAAM;AAAA,MAC9B;AACA,UAAI,cAAc,GAAG,GAAG;AACpB,eAAO,kBAAkB,IAAI,MAAM,CAAC;AAAA,MACxC;AACA,UAAI,aAAa,GAAG,GAAG;AACnB,eAAO,iBAAiB,IAAI,MAAM,CAAC;AAAA,MACvC;AACA,UAAI,iBAAiB,GAAG,GAAG;AACvB,eAAO,qBAAqB,IAAI,IAAI;AAAA,MACxC;AACA,UAAI,UAAU,GAAG,GAAG;AAChB,eAAO,WAAW,IAAI,SAAS;AAAA,MACnC;AACA,aAAO;AAAA,IACX,KAAK;AACD,aAAO,IAAI,SAAS,KAAK,WAAW,IAAI,IAAI,MAAM,GAAG,EAAE,KAAK,KAAK,CAAC;AAAA,IACtE,KAAK;AACD,aAAO,OAAO,GAAG;AAAA,IACrB,KAAK;AACD,aAAO,OAAO,GAAG;AAAA,IACrB,KAAK;AACD,aAAO,OAAO,GAAG,IAAI;AAAA,IACzB;AAEI,aAAO,OAAO;AAAA,EACtB;AACJ;AACA,SAAS,qBAAqB,MAAM;AAChC,SAAO,mBAAmB,KAAK,QAAQ;AAC3C;AACA,SAAS,kBAAkB,OAAO;AAC9B,UAAQ,MAAM,UAAU;AAAA,IACpB,KAAK;AACD,aAAO,gBAAgB,MAAM,QAAQ,SAAS,CAAC;AAAA,IACnD,KAAK;AACD,aAAO,gBAAgB,MAAM,KAAK,SAAS,CAAC;AAAA,IAChD,KAAK;AACD,aAAO,gBAAgB,WAAW,MAAM,MAAM,CAAC;AAAA,EACvD;AACJ;AACA,SAAS,iBAAiB,OAAO;AAC7B,UAAQ,MAAM,SAAS;AAAA,IACnB,KAAK;AACD,aAAO,eAAe,WAAW,MAAM,MAAM,CAAC,KAAK,MAAM,QAAQ,SAAS,CAAC;AAAA,IAC/E,KAAK;AACD,aAAO,eAAe,WAAW,MAAM,MAAM,CAAC,KAAK,MAAM,KAAK,SAAS,CAAC;AAAA,IAC5E,KAAK;AACD,aAAO,eAAe,WAAW,MAAM,MAAM,CAAC,KAAK,WAAW,MAAM,MAAM,CAAC;AAAA,EACnF;AACJ;AACA,SAAS,sBAAsB,QAAQ;AACnC,UAAQ,QAAQ;AAAA,IACZ,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO;AAAA,EACf;AACJ;;;AD1OO,SAAS,QAAQC,cAAa,SAQrC,QAAQ,MAAM;AACV,SAAO,IAAI,mBAAmBA,cAAa,SAAS,KAAK;AAC7D;AACA,IAAM,sBAAsB,oBAAI,QAAQ;AACxC,IAAM,qBAAN,MAAyB;AAAA,EACrB,IAAI,eAAe;AACf,UAAM,SAAS,oBAAoB,IAAI,KAAK,IAAI;AAChD,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AACA,UAAM,eAAe,KAAK,KAAK,OAC1B,OAAO,EACP,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM;AACvC,wBAAoB,IAAI,KAAK,MAAM,YAAY;AAC/C,WAAO;AAAA,EACX;AAAA,EACA,YAAYA,cAAa,SAAS,QAAQ,MAAM;AAC5C,SAAK,QAAQ,oBAAI,IAAI;AACrB,SAAK,OAAO,oBAAI,IAAI;AACpB,SAAK,QAAQ;AACb,SAAK,OAAOA;AACZ,SAAK,UAAU,KAAK,WAAW,IAAI,YAAY,QAAQ,YAAY,SAAS,UAAU,OAAOA,YAAW;AACxG,SAAK,SAASA,aAAY;AAC1B,SAAK,SAASA,aAAY;AAC1B,SAAK,UAAUA,aAAY;AAAA,EAC/B;AAAA,EACA,WAAW,QAAQ;AACf,QAAI,CAAC,KAAK,iBAAiB;AACvB,WAAK,kBAAkB,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAAA,IAC7E;AACA,WAAO,KAAK,gBAAgB,IAAI,MAAM;AAAA,EAC1C;AAAA,EACA,UAAU,OAAO;AACb,cAAU,KAAK,SAAS,KAAK;AAC7B,WAAO,gBAAgB,KAAK,SAAS,KAAK;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO;AACT,cAAU,KAAK,SAAS,KAAK;AAC7B,WAAO,YAAY,KAAK,SAAS,KAAK;AAAA,EAC1C;AAAA,EACA,MAAM,OAAO;AACT,cAAU,KAAK,SAAS,KAAK;AAC7B,gBAAY,KAAK,SAAS,KAAK;AAAA,EACnC;AAAA,EACA,IAAI,OAAO;AACP,cAAU,KAAK,SAAS,KAAK;AAC7B,UAAM,QAAQ,UAAU,KAAK,SAAS,KAAK;AAC3C,YAAQ,MAAM,WAAW;AAAA,MACrB,KAAK;AAED,YAAI,OAAO,KAAK,MAAM,IAAI,KAAK;AAC/B,YAAI,CAAC,QAAQ,KAAK,WAAW,MAAM,OAAO;AACtC,eAAK,MAAM;AAAA,YAAI;AAAA;AAAA,YAEd,OAAO,IAAI,gBAAgB,OAAO,OAAO,KAAK,KAAK;AAAA,UAAE;AAAA,QAC1D;AACA,eAAO;AAAA,MACX,KAAK;AACD,YAAI,MAAM,KAAK,KAAK,IAAI,KAAK;AAC7B,YAAI,CAAC,OAAO,IAAI,WAAW,MAAM,OAAO;AACpC,eAAK,KAAK;AAAA,YAAI;AAAA;AAAA,YAEb,MAAM,IAAI,eAAe,OAAO,OAAO,KAAK,KAAK;AAAA,UAAE;AAAA,QACxD;AACA,eAAO;AAAA,MACX,KAAK;AACD,eAAO,iBAAiB,OAAO,OAAO,KAAK,KAAK;AAAA,MACpD,KAAK;AACD,eAAQ,UAAU,SACZ,gBAAgB,MAAM,QAAQ,KAAK,IACnC,cAAc,OAAO,KAAK;AAAA,MACpC,KAAK;AACD,eAAQ,UAAU,QAAQ,UAAU,SAAS,QAAQ,MAAM,KAAK,OAAO,CAAC,EAAE;AAAA,IAClF;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,OAAO;AACd,cAAU,KAAK,SAAS,KAAK;AAC7B,QAAI,KAAK,OAAO;AACZ,YAAMC,OAAM,WAAW,OAAO,KAAK;AACnC,UAAIA,MAAK;AACL,cAAMA;AAAA,MACV;AAAA,IACJ;AACA,QAAI;AACJ,QAAI,MAAM,aAAa,WAAW;AAC9B,cAAQ,eAAe,OAAO,KAAK;AAAA,IACvC,WACS,aAAa,KAAK,KAAK,cAAc,KAAK,GAAG;AAClD,cAAQ,MAAM,WAAW;AAAA,IAC7B,OACK;AACD,cAAQ,YAAY,OAAO,KAAK;AAAA,IACpC;AACA,cAAU,KAAK,SAAS,OAAO,KAAK;AAAA,EACxC;AAAA,EACA,aAAa;AACT,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACA,WAAW,OAAO;AACd,SAAK,QAAQ,WAAW;AAAA,EAC5B;AACJ;AACA,SAAS,UAAU,OAAO,QAAQ;AAC9B,MAAI,OAAO,OAAO,aAAa,MAAM,WAAW;AAC5C,UAAM,IAAI,WAAW,QAAQ,cAAc,OAAO,SAAS,CAAC,iBAAiB,MAAM,SAAS,IAAI,mBAAmB;AAAA,EACvH;AACJ;AAeA,IAAM,kBAAN,MAAsB;AAAA,EAClB,QAAQ;AACJ,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,IAAI,OAAO;AACP,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,YAAY,OAAO,aAAa,OAAO;AACnC,SAAK,SAAS;AACd,SAAK,OAAO,KAAK,WAAW,IAAI;AAChC,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO;AACP,UAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,WAAO,SAAS,SACV,SACA,kBAAkB,KAAK,QAAQ,MAAM,KAAK,KAAK;AAAA,EACzD;AAAA,EACA,IAAI,OAAO,MAAM;AACb,QAAI,QAAQ,KAAK,SAAS,KAAK,KAAK,QAAQ;AACxC,YAAM,IAAI,WAAW,KAAK,QAAQ,cAAc,QAAQ,CAAC,gBAAgB;AAAA,IAC7E;AACA,QAAI,KAAK,OAAO;AACZ,YAAMC,OAAM,cAAc,KAAK,QAAQ,OAAO,IAAI;AAClD,UAAIA,MAAK;AACL,cAAMA;AAAA,MACV;AAAA,IACJ;AACA,SAAK,KAAK,KAAK,IAAI,gBAAgB,KAAK,QAAQ,IAAI;AAAA,EACxD;AAAA,EACA,IAAI,MAAM;AACN,QAAI,KAAK,OAAO;AACZ,YAAMA,OAAM,cAAc,KAAK,QAAQ,KAAK,KAAK,QAAQ,IAAI;AAC7D,UAAIA,MAAK;AACL,cAAMA;AAAA,MACV;AAAA,IACJ;AACA,SAAK,KAAK,KAAK,gBAAgB,KAAK,QAAQ,IAAI,CAAC;AACjD,WAAO;AAAA,EACX;AAAA,EACA,QAAQ;AACJ,SAAK,KAAK,OAAO,GAAG,KAAK,KAAK,MAAM;AAAA,EACxC;AAAA,EACA,CAAC,OAAO,QAAQ,IAAI;AAChB,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EACA,OAAO;AACH,WAAO,KAAK,KAAK,KAAK;AAAA,EAC1B;AAAA,EACA,CAAC,SAAS;AACN,eAAW,QAAQ,KAAK,MAAM;AAC1B,YAAM,kBAAkB,KAAK,QAAQ,MAAM,KAAK,KAAK;AAAA,IACzD;AAAA,EACJ;AAAA,EACA,CAAC,UAAU;AACP,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,KAAK;AACvC,YAAM,CAAC,GAAG,kBAAkB,KAAK,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC;AAAA,IACtE;AAAA,EACJ;AACJ;AAeA,IAAM,iBAAN,MAAqB;AAAA,EACjB,YAAY,OAAO,aAAa,QAAQ,MAAM;AAC1C,SAAK,MAAM,KAAK,WAAW,IAAI,gBAAgB,QAAQ,gBAAgB,SAAS,cAAc,CAAC;AAC/F,SAAK,QAAQ;AACb,SAAK,SAAS;AAAA,EAClB;AAAA,EACA,QAAQ;AACJ,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,IAAI,KAAK,OAAO;AACZ,QAAI,KAAK,OAAO;AACZ,YAAMC,OAAM,cAAc,KAAK,QAAQ,KAAK,KAAK;AACjD,UAAIA,MAAK;AACL,cAAMA;AAAA,MACV;AAAA,IACJ;AACA,SAAK,IAAI,cAAc,GAAG,CAAC,IAAI,gBAAgB,KAAK,QAAQ,KAAK;AACjE,WAAO;AAAA,EACX;AAAA,EACA,OAAO,KAAK;AACR,UAAM,IAAI,cAAc,GAAG;AAC3B,UAAM,MAAM,OAAO,UAAU,eAAe,KAAK,KAAK,KAAK,CAAC;AAC5D,QAAI,KAAK;AACL,aAAO,KAAK,IAAI,CAAC;AAAA,IACrB;AACA,WAAO;AAAA,EACX;AAAA,EACA,QAAQ;AACJ,eAAW,OAAO,OAAO,KAAK,KAAK,GAAG,GAAG;AACrC,aAAO,KAAK,IAAI,GAAG;AAAA,IACvB;AAAA,EACJ;AAAA,EACA,IAAI,KAAK;AACL,QAAI,MAAM,KAAK,IAAI,cAAc,GAAG,CAAC;AACrC,QAAI,QAAQ,QAAW;AACnB,YAAM,kBAAkB,KAAK,QAAQ,KAAK,KAAK,KAAK;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,KAAK;AACL,WAAO,OAAO,UAAU,eAAe,KAAK,KAAK,KAAK,cAAc,GAAG,CAAC;AAAA,EAC5E;AAAA,EACA,CAAC,OAAO;AACJ,eAAW,UAAU,OAAO,KAAK,KAAK,GAAG,GAAG;AACxC,YAAM,gBAAgB,QAAQ,KAAK,OAAO,MAAM;AAAA,IACpD;AAAA,EACJ;AAAA,EACA,CAAC,UAAU;AACP,eAAW,YAAY,OAAO,QAAQ,KAAK,GAAG,GAAG;AAC7C,YAAM;AAAA,QACF,gBAAgB,SAAS,CAAC,GAAG,KAAK,OAAO,MAAM;AAAA,QAC/C,kBAAkB,KAAK,QAAQ,SAAS,CAAC,GAAG,KAAK,KAAK;AAAA,MAC1D;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,CAAC,OAAO,QAAQ,IAAI;AAChB,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACP,WAAO,OAAO,KAAK,KAAK,GAAG,EAAE;AAAA,EACjC;AAAA,EACA,CAAC,SAAS;AACN,eAAW,OAAO,OAAO,OAAO,KAAK,GAAG,GAAG;AACvC,YAAM,kBAAkB,KAAK,QAAQ,KAAK,KAAK,KAAK;AAAA,IACxD;AAAA,EACJ;AAAA,EACA,QAAQ,YAAY,SAAS;AACzB,eAAW,YAAY,KAAK,QAAQ,GAAG;AACnC,iBAAW,KAAK,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI;AAAA,IAC3D;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,OAAO,OAAO;AAClC,MAAI,CAAC,iBAAiB,KAAK,GAAG;AAC1B,WAAO;AAAA,EACX;AACA,MAAI,UAAU,MAAM,OAAO,KACvB,CAAC,MAAM,SACP,MAAM,aAAa,WAAW;AAG9B,WAAO,MAAM,QAAQ;AAAA,EACzB;AACA,MAAI,MAAM,KAAK,YAAY,4BACvB,MAAM,OAAO,YAAY,yBAAyB;AAGlD,WAAO,iBAAiB,MAAM,OAAO;AAAA,EACzC;AACA,SAAO,MAAM;AACjB;AACA,SAAS,iBAAiB,OAAO,OAAO,OAAO;AAC3C,MAAI,UAAU,QAAW;AACrB,QAAI,cAAc,MAAM,OAAO,KAC3B,CAAC,MAAM,SACP,MAAM,aAAa,WAAW;AAG9B,cAAQ;AAAA,QACJ,WAAW,MAAM,QAAQ;AAAA,QACzB,OAAO,cAAc,MAAM,QAAQ,OAAO,CAAC,GAAG,KAAK;AAAA,MACvD;AAAA,IACJ,WACS,MAAM,QAAQ,YAAY,4BAC/B,MAAM,OAAO,YAAY,2BACzB,SAAS,KAAK,GAAG;AAGjB,cAAQ,mBAAmB,KAAK;AAAA,IACpC;AAAA,EACJ;AACA,SAAO,IAAI,mBAAmB,MAAM,SAAS,OAAO,KAAK;AAC7D;AACA,SAAS,gBAAgB,OAAO,OAAO;AACnC,MAAI,MAAM,YAAY,WAAW;AAC7B,WAAO,eAAe,OAAO,KAAK;AAAA,EACtC;AACA,SAAO,YAAY,OAAO,KAAK;AACnC;AACA,SAAS,kBAAkB,OAAO,OAAO,OAAO;AAC5C,MAAI,MAAM,YAAY,WAAW;AAC7B,WAAO,iBAAiB,OAAO,OAAO,KAAK;AAAA,EAC/C;AACA,SAAO,cAAc,OAAO,KAAK;AACrC;AACA,SAAS,gBAAgB,OAAO,OAAO;AACnC,MAAI,MAAM,WAAW,WAAW;AAC5B,WAAO,eAAe,OAAO,KAAK;AAAA,EACtC;AACA,SAAO,YAAY,OAAO,KAAK;AACnC;AACA,SAAS,kBAAkB,OAAO,OAAO,OAAO;AAC5C,MAAI,MAAM,WAAW,WAAW;AAC5B,WAAO,iBAAiB,OAAO,OAAO,KAAK;AAAA,EAC/C;AACA,SAAO;AACX;AACA,SAAS,cAAc,KAAK;AACxB,SAAO,OAAO,OAAO,YAAY,OAAO,OAAO,WAAW,MAAM,OAAO,GAAG;AAC9E;AAMA,SAAS,gBAAgB,KAAK,MAAM;AAChC,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW,QAAQ;AACpB,YAAM,IAAI,OAAO,SAAS,GAAG;AAC7B,UAAI,OAAO,SAAS,CAAC,GAAG;AACpB,eAAO;AAAA,MACX;AACA;AAAA,IACJ;AAAA,IACA,KAAK,WAAW;AACZ,cAAQ,KAAK;AAAA,QACT,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,MACf;AACA;AAAA,IACJ,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI;AACA,eAAO,WAAW,OAAO,GAAG;AAAA,MAChC,SACO,IAAI;AAAA,MAEX;AACA;AAAA,IACJ;AAEI,UAAI;AACA,eAAO,WAAW,MAAM,GAAG;AAAA,MAC/B,SACO,IAAI;AAAA,MAEX;AACA;AAAA,EACR;AACA,SAAO;AACX;AACA,SAAS,cAAc,OAAO,OAAO;AACjC,UAAQ,MAAM,QAAQ;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,kBAAkB,SAClB,MAAM,gBACN,OAAO,SAAS,UAAU;AAC1B,gBAAQ,WAAW,MAAM,KAAK;AAAA,MAClC;AACA;AAAA,IACJ,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,kBAAkB,SAClB,MAAM,gBACN,OAAO,SAAS,UAAU;AAC1B,gBAAQ,WAAW,OAAO,KAAK;AAAA,MACnC;AACA;AAAA,EACR;AACA,SAAO;AACX;AACA,SAAS,YAAY,OAAO,OAAO;AAC/B,UAAQ,MAAM,QAAQ;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,kBAAkB,SAAS,MAAM,cAAc;AAC/C,gBAAQ,OAAO,KAAK;AAAA,MACxB,WACS,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AAC3D,gBAAQ,WAAW,MAAM,KAAK;AAAA,MAClC;AACA;AAAA,IACJ,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,kBAAkB,SAAS,MAAM,cAAc;AAC/C,gBAAQ,OAAO,KAAK;AAAA,MACxB,WACS,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AAC3D,gBAAQ,WAAW,OAAO,KAAK;AAAA,MACnC;AACA;AAAA,EACR;AACA,SAAO;AACX;AACA,SAAS,mBAAmB,MAAM;AAC9B,QAAM,SAAS;AAAA,IACX,WAAW;AAAA,IACX,QAAQ,CAAC;AAAA,EACb;AACA,MAAI,SAAS,IAAI,GAAG;AAChB,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACvC,aAAO,OAAO,CAAC,IAAI,kBAAkB,CAAC;AAAA,IAC1C;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,iBAAiB,KAAK;AAC3B,QAAM,OAAO,CAAC;AACd,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,MAAM,GAAG;AAC7C,SAAK,CAAC,IAAI,gBAAgB,CAAC;AAAA,EAC/B;AACA,SAAO;AACX;AACA,SAAS,gBAAgB,KAAK;AAC1B,UAAQ,IAAI,KAAK,MAAM;AAAA,IACnB,KAAK;AACD,aAAO,iBAAiB,IAAI,KAAK,KAAK;AAAA,IAC1C,KAAK;AACD,aAAO,IAAI,KAAK,MAAM,OAAO,IAAI,eAAe;AAAA,IACpD,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,IACX;AACI,aAAO,IAAI,KAAK;AAAA,EACxB;AACJ;AACA,SAAS,kBAAkB,MAAM;AAC7B,QAAM,QAAQ;AAAA,IACV,WAAW;AAAA,IACX,MAAM,EAAE,MAAM,OAAU;AAAA,EAC5B;AACA,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,eAAe,OAAO,KAAK;AAChD;AAAA,IACJ,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,eAAe,OAAO,KAAK;AAChD;AAAA,IACJ,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,aAAa,OAAO,KAAK;AAC9C;AAAA,IACJ,KAAK;AACD,UAAI,SAAS,MAAM;AACf,cAAM,YAAY;AAClB,cAAM,OAAO,EAAE,MAAM,aAAa,OAAO,UAAU;AAAA,MACvD,WACS,MAAM,QAAQ,IAAI,GAAG;AAC1B,cAAM,YAAY;AAAA,UACd,WAAW;AAAA,UACX,QAAQ,CAAC;AAAA,QACb;AACA,YAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,qBAAW,KAAK,MAAM;AAClB,sBAAU,OAAO,KAAK,kBAAkB,CAAC,CAAC;AAAA,UAC9C;AAAA,QACJ;AACA,cAAM,OAAO;AAAA,UACT,MAAM;AAAA,UACN,OAAO;AAAA,QACX;AAAA,MACJ,OACK;AACD,cAAM,OAAO;AAAA,UACT,MAAM;AAAA,UACN,OAAO,mBAAmB,IAAI;AAAA,QAClC;AAAA,MACJ;AACA;AAAA,EACR;AACA,SAAO;AACX;;;AK3hBA;;;ACAA;AAwBO,SAAS,aAAa,WAAW;AACpC,QAAM,QAAQ,eAAe;AAE7B,MAAI,KAAM,UAAU,SAAS,IAAK;AAClC,MAAI,UAAU,UAAU,SAAS,CAAC,KAAK;AACnC,UAAM;AAAA,WACD,UAAU,UAAU,SAAS,CAAC,KAAK;AACxC,UAAM;AACV,MAAI,QAAQ,IAAI,WAAW,EAAE,GAAG,UAAU,GAC1C,WAAW,GACX,GACA,IAAI;AACJ,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACvC,QAAI,MAAM,UAAU,WAAW,CAAC,CAAC;AACjC,QAAI,MAAM,QAAW;AACjB,cAAQ,UAAU,CAAC,GAAG;AAAA;AAAA,QAElB,KAAK;AACD,qBAAW;AAAA;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD;AAAA;AAAA,QACJ;AACI,gBAAM,MAAM,uBAAuB;AAAA,MAC3C;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA,MACd,KAAK;AACD,YAAI;AACJ,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,cAAM,SAAS,IAAK,KAAK,KAAO,IAAI,OAAO;AAC3C,YAAI;AACJ,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,cAAM,SAAS,KAAM,IAAI,OAAO,KAAO,IAAI,OAAO;AAClD,YAAI;AACJ,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,cAAM,SAAS,KAAM,IAAI,MAAM,IAAK;AACpC,mBAAW;AACX;AAAA,IACR;AAAA,EACJ;AACA,MAAI,YAAY;AACZ,UAAM,MAAM,uBAAuB;AACvC,SAAO,MAAM,SAAS,GAAG,OAAO;AACpC;AAWO,SAAS,aAAa,OAAO,WAAW,OAAO;AAClD,QAAM,QAAQ,eAAe,QAAQ;AACrC,QAAM,MAAM,YAAY;AACxB,MAAI,SAAS,IAAI,WAAW,GAC5B,GACA,IAAI;AACJ,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,QAAI,MAAM,CAAC;AACX,YAAQ,UAAU;AAAA,MACd,KAAK;AACD,kBAAU,MAAM,KAAK,CAAC;AACtB,aAAK,IAAI,MAAM;AACf,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,kBAAU,MAAM,IAAK,KAAK,CAAE;AAC5B,aAAK,IAAI,OAAO;AAChB,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,kBAAU,MAAM,IAAK,KAAK,CAAE;AAC5B,kBAAU,MAAM,IAAI,EAAE;AACtB,mBAAW;AACX;AAAA,IACR;AAAA,EACJ;AAEA,MAAI,UAAU;AACV,cAAU,MAAM,CAAC;AACjB,QAAI,KAAK;AACL,gBAAU;AACV,UAAI,YAAY;AACZ,kBAAU;AAAA,IAClB;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI;AACJ,IAAI;AAEJ,IAAI;AACJ,SAAS,eAAe,UAAU;AAC9B,MAAI,CAAC,gBAAgB;AACjB,qBACI,mEAAmE,MAAM,EAAE;AAC/E,qBAAiB,eAAe,MAAM,GAAG,EAAE,EAAE,OAAO,KAAK,GAAG;AAAA,EAChE;AACA,SAAO,YAAY;AAAA;AAAA,IAEX;AAAA,MACF;AACV;AACA,SAAS,iBAAiB;AACtB,MAAI,CAAC,aAAa;AACd,kBAAc,CAAC;AACf,UAAM,cAAc,eAAe,KAAK;AACxC,aAAS,IAAI,GAAG,IAAI,YAAY,QAAQ;AACpC,kBAAY,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI;AAEhD,gBAAY,IAAI,WAAW,CAAC,CAAC,IAAI,YAAY,QAAQ,GAAG;AACxD,gBAAY,IAAI,WAAW,CAAC,CAAC,IAAI,YAAY,QAAQ,GAAG;AAAA,EAC5D;AACA,SAAO;AACX;;;ACvJA;;;ACAA;;;ACAA;;;ACAA;AAgDO,SAAS,eAAe,WAAW;AACtC,MAAI,UAAU;AACd,QAAM,IAAI,CAAC;AACX,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACvC,QAAI,IAAI,UAAU,OAAO,CAAC;AAC1B,YAAQ,GAAG;AAAA,MACP,KAAK;AACD,kBAAU;AACV;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,UAAE,KAAK,CAAC;AACR,kBAAU;AACV;AAAA,MACJ;AACI,YAAI,SAAS;AACT,oBAAU;AACV,cAAI,EAAE,YAAY;AAAA,QACtB;AACA,UAAE,KAAK,CAAC;AACR;AAAA,IACR;AAAA,EACJ;AACA,SAAO,EAAE,KAAK,EAAE;AACpB;AAOO,SAAS,eAAe,gBAAgB;AAC3C,SAAO,eAAe,QAAQ,UAAU,CAAC,WAAW,MAAM,OAAO,YAAY,CAAC;AAClF;AAKA,IAAM,2BAA2B,oBAAI,IAAI;AAAA;AAAA,EAErC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAMM,SAAS,mBAAmBC,OAAM;AACrC,SAAO,yBAAyB,IAAIA,KAAI,IAAIA,QAAO,MAAMA;AAC7D;;;AD1FO,SAAS,iBAAiB,SAAS;AACtC,aAAW,KAAK,QAAQ,OAAO;AAC3B,QAAI,CAAC,oBAAoB,GAAG,UAAU,GAAG;AACrC,QAAE,WAAW,eAAe,EAAE,IAAI;AAAA,IACtC;AAAA,EACJ;AACA,UAAQ,WAAW,QAAQ,gBAAgB;AAC/C;;;AEzBA;;;ACAA;AAoBO,SAAS,yBAAyB,UAAU,OAAO;AACtD,QAAM,YAAY,SAAS,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK;AAC9D,MAAI,CAAC,WAAW;AACZ,UAAM,IAAI,MAAM,gBAAgB,QAAQ,mBAAmB,KAAK,EAAE;AAAA,EACtE;AACA,SAAO,UAAU;AACrB;AAMO,SAAS,2BAA2B,MAAM,OAAO;AACpD,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,aAAO;AAAA,IACX,KAAK,WAAW,OAAO;AACnB,YAAM,IAAI,0BAA0B,KAAK;AACzC,UAAI,MAAM,OAAO;AACb,cAAM,IAAI,MAAM,gBAAgB,WAAW,IAAI,CAAC,mBAAmB,KAAK,EAAE;AAAA,MAC9E;AACA,aAAO;AAAA,IACX;AAAA,IACA,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,WAAW,MAAM,KAAK;AAAA,IACjC,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,WAAW,OAAO,KAAK;AAAA,IAClC,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,cAAQ,OAAO;AAAA,QACX,KAAK;AACD,iBAAO,OAAO;AAAA,QAClB,KAAK;AACD,iBAAO,OAAO;AAAA,QAClB,KAAK;AACD,iBAAO,OAAO;AAAA,QAClB;AACI,iBAAO,WAAW,KAAK;AAAA,MAC/B;AAAA,IACJ,KAAK,WAAW;AACZ,aAAO,UAAU;AAAA,IACrB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,SAAS,OAAO,EAAE;AAAA,EACjC;AACJ;AAIA,SAAS,0BAA0B,KAAK;AACpC,QAAM,IAAI,CAAC;AACX,QAAM,QAAQ;AAAA,IACV,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AACH,UAAI,KAAK,KAAK,UAAU,GAAG;AACvB,eAAO;AAAA,MACX;AACA,WAAK,IAAI,KAAK,KAAK,CAAC;AACpB,WAAK,OAAO,KAAK,KAAK,UAAU,CAAC;AACjC,aAAO;AAAA,IACX;AAAA,IACA,KAAK,GAAG;AACJ,UAAI,KAAK,KAAK,UAAU,GAAG;AACvB,cAAM,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC;AAClC,aAAK,OAAO,KAAK,KAAK,UAAU,CAAC;AACjC,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,MAAM,KAAK,GAAG;AACjB,YAAQ,MAAM,GAAG;AAAA,MACb,KAAK;AACD,YAAI,MAAM,KAAK,GAAG;AACd,kBAAQ,MAAM,GAAG;AAAA,YACb,KAAK;AACD,gBAAE,KAAK,MAAM,EAAE,WAAW,CAAC,CAAC;AAC5B;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,CAAI;AACX;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,EAAI;AACX;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,EAAI;AACX;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,EAAI;AACX;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,CAAI;AACX;AAAA,YACJ,KAAK;AACD,gBAAE,KAAK,EAAI;AACX;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK,KAAK;AACN,oBAAM,IAAI,MAAM;AAChB,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,kBAAI,MAAM,OAAO;AACb,uBAAO;AAAA,cACX;AACA,oBAAM,IAAI,SAAS,IAAI,GAAG,CAAC;AAC3B,kBAAI,OAAO,MAAM,CAAC,GAAG;AACjB,uBAAO;AAAA,cACX;AACA,gBAAE,KAAK,CAAC;AACR;AAAA,YACJ;AAAA,YACA,KAAK,KAAK;AACN,oBAAM,IAAI,MAAM;AAChB,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,kBAAI,MAAM,OAAO;AACb,uBAAO;AAAA,cACX;AACA,oBAAM,IAAI,SAAS,IAAI,GAAG,EAAE;AAC5B,kBAAI,OAAO,MAAM,CAAC,GAAG;AACjB,uBAAO;AAAA,cACX;AACA,gBAAE,KAAK,CAAC;AACR;AAAA,YACJ;AAAA,YACA,KAAK,KAAK;AACN,oBAAM,IAAI,MAAM;AAChB,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,kBAAI,MAAM,OAAO;AACb,uBAAO;AAAA,cACX;AACA,oBAAM,IAAI,SAAS,IAAI,GAAG,EAAE;AAC5B,kBAAI,OAAO,MAAM,CAAC,GAAG;AACjB,uBAAO;AAAA,cACX;AACA,oBAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,oBAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,mBAAK,SAAS,GAAG,GAAG,IAAI;AACxB,gBAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7C;AAAA,YACJ;AAAA,YACA,KAAK,KAAK;AACN,oBAAM,IAAI,MAAM;AAChB,oBAAM,IAAI,MAAM,KAAK,CAAC;AACtB,kBAAI,MAAM,OAAO;AACb,uBAAO;AAAA,cACX;AACA,oBAAM,KAAK,WAAW,KAAK,IAAI,CAAC;AAChC,oBAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,oBAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,mBAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,mBAAK,SAAS,GAAG,GAAG,IAAI,IAAI;AAC5B,gBAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AACrF;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA;AAAA,MACJ;AACI,UAAE,KAAK,MAAM,EAAE,WAAW,CAAC,CAAC;AAAA,IACpC;AAAA,EACJ;AACA,SAAO,IAAI,WAAW,CAAC;AAC3B;;;AClMA;AAiBO,UAAU,YAAY,MAAM;AAC/B,UAAQ,KAAK,MAAM;AAAA,IACf,KAAK;AACD,iBAAW,WAAW,KAAK,UAAU;AACjC,cAAM;AACN,eAAO,YAAY,OAAO;AAAA,MAC9B;AACA,aAAO,KAAK;AACZ,aAAO,KAAK;AACZ,aAAO,KAAK;AACZ;AAAA,IACJ,KAAK;AACD,iBAAW,WAAW,KAAK,gBAAgB;AACvC,cAAM;AACN,eAAO,YAAY,OAAO;AAAA,MAC9B;AACA,aAAO,KAAK;AACZ,aAAO,KAAK;AACZ;AAAA,EACR;AACJ;;;AFQO,SAAS,sBAAsB,MAAM;AACxC,QAAM,WAAW,mBAAmB;AACpC,MAAI,CAAC,KAAK,QAAQ;AACd,WAAO;AAAA,EACX;AACA,MAAI,eAAe,KAAK,CAAC,KACrB,KAAK,CAAC,EAAE,aAAa,qCAAqC;AAC1D,eAAW,QAAQ,KAAK,CAAC,EAAE,MAAM;AAC7B,cAAQ,MAAM,QAAQ;AAAA,IAC1B;AACA,WAAO;AAAA,EACX;AACA,MAAI,eAAe,KAAK,CAAC,GAAG;AAIxB,QAASC,eAAT,SAAqB,MAAM;AACvB,YAAM,OAAO,CAAC;AACd,iBAAW,iBAAiB,KAAK,YAAY;AACzC,YAAI,SAAS,QAAQ,aAAa,KAAK,QAAW;AAC9C;AAAA,QACJ;AACA,YAAI,KAAK,IAAI,aAAa,GAAG;AACzB;AAAA,QACJ;AACA,cAAM,MAAM,QAAQ,aAAa;AACjC,YAAI,CAAC,KAAK;AACN,gBAAM,IAAI,MAAM,qBAAqB,aAAa,iBAAiB,KAAK,IAAI,EAAE;AAAA,QAClF;AACA,YAAI,UAAU,KAAK;AACf,mBAAS,QAAQ,KAAK,OAAO,IAAI;AAAA,QACrC,OACK;AACD,eAAK,IAAI,IAAI,IAAI;AACjB,eAAK,KAAK,GAAG;AAAA,QACjB;AAAA,MACJ;AACA,aAAO,KAAK,OAAO,GAAG,KAAK,IAAIA,YAAW,CAAC;AAAA,IAC/C;AAtBS,sBAAAA;AAHT,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,UAAU,KAAK,CAAC;AACtB,UAAM,OAAO,oBAAI,IAAI;AAwBrB,eAAW,QAAQ,CAAC,OAAO,GAAGA,aAAY,KAAK,CAAC,EAAE,QAAQ,GAAG;AACzD,cAAQ,MAAM,QAAQ;AAAA,IAC1B;AAAA,EACJ,OACK;AACD,eAAW,WAAW,MAAM;AACxB,iBAAW,QAAQ,QAAQ,OAAO;AAC9B,iBAAS,QAAQ,IAAI;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAIA,SAAS,qBAAqB;AAC1B,QAAM,QAAQ,oBAAI,IAAI;AACtB,QAAM,YAAY,oBAAI,IAAI;AAC1B,QAAM,QAAQ,oBAAI,IAAI;AACtB,SAAO;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,OAAO,QAAQ,IAAI;AAChB,aAAO,MAAM,OAAO;AAAA,IACxB;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,MAAM,OAAO;AAAA,IACxB;AAAA,IACA,QAAQ,MAAM,WAAW,UAAU;AAC/B,YAAM,IAAI,KAAK,MAAM,MAAM,IAAI;AAC/B,UAAI,CAAC,WAAW;AACZ,mBAAW,QAAQ,YAAY,IAAI,GAAG;AAClC,eAAK,IAAI,IAAI;AAAA,QACjB;AAAA,MACJ;AACA,UAAI,UAAU;AACV,mBAAW,KAAK,KAAK,cAAc;AAC/B,eAAK,QAAQ,GAAG,WAAW,QAAQ;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,MAAM;AACN,UAAI,KAAK,QAAQ,aAAa;AAC1B,YAAI,cAAc,UAAU,IAAI,KAAK,SAAS,QAAQ;AACtD,YAAI,CAAC,aAAa;AACd,oBAAU;AAAA,YAAI,KAAK,SAAS;AAAA;AAAA,YAE3B,cAAc,oBAAI,IAAI;AAAA,UAAE;AAAA,QAC7B;AACA,oBAAY,IAAI,KAAK,QAAQ,IAAI;AAAA,MACrC;AACA,YAAM,IAAI,KAAK,UAAU,IAAI;AAAA,IACjC;AAAA,IACA,IAAI,UAAU;AACV,aAAO,MAAM,IAAI,QAAQ;AAAA,IAC7B;AAAA,IACA,QAAQ,UAAU;AACd,aAAO,MAAM,IAAI,QAAQ;AAAA,IAC7B;AAAA,IACA,WAAW,UAAU;AACjB,YAAM,IAAI,MAAM,IAAI,QAAQ;AAC5B,cAAQ,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,SAAS,YAAY,IAAI;AAAA,IAC7E;AAAA,IACA,QAAQ,UAAU;AACd,YAAM,IAAI,MAAM,IAAI,QAAQ;AAC5B,cAAQ,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,SAAS,SAAS,IAAI;AAAA,IAC1E;AAAA,IACA,aAAa,UAAU;AACnB,YAAM,IAAI,MAAM,IAAI,QAAQ;AAC5B,cAAQ,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,SAAS,cAAc,IAAI;AAAA,IAC/E;AAAA,IACA,gBAAgB,UAAU,IAAI;AAC1B,UAAI;AACJ,cAAQ,KAAK,UAAU,IAAI,SAAS,QAAQ,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,EAAE;AAAA,IACjG;AAAA,IACA,WAAW,UAAU;AACjB,YAAM,IAAI,MAAM,IAAI,QAAQ;AAC5B,cAAQ,MAAM,QAAQ,MAAM,SAAS,SAAS,EAAE,SAAS,YAAY,IAAI;AAAA,IAC7E;AAAA,EACJ;AACJ;AAwBA,IAAMC,kBAAiB;AAEvB,IAAMC,kBAAiB;AAEvB,IAAM,mBAAmB;AAEzB,IAAM,cAAc;AAEpB,IAAM,aAAa;AAEnB,IAAM,eAAe;AAErB,IAAM,aAAa;AAEnB,IAAM,YAAY;AAElB,IAAM,iBAAiB;AAEvB,IAAM,iBAAiB;AAEvB,IAAM,YAAY;AAElB,IAAM,sBAAsB;AAE5B,IAAM,WAAW;AAEjB,IAAMC,YAAW;AAEjB,IAAM,kBAAkB;AAExB,IAAM,SAAS;AAEf,IAAM,YAAY;AAElB,IAAM,OAAO;AAEb,IAAM,SAAS;AAIR,IAA4B,iBAAiB;AACpD,IAAM,kBAAkB;AAAA;AAAA,EAEpB,KAAK;AAAA,IACD,eAAe;AAAA;AAAA,IACf,UAAU;AAAA;AAAA,IACV,uBAAuB;AAAA;AAAA,IACvB,gBAAgB;AAAA;AAAA,IAChB,iBAAiB;AAAA;AAAA,IACjB,YAAY;AAAA;AAAA,IACZ,oBAAoB;AAAA;AAAA,IACpB,yBAAyB;AAAA;AAAA,EAC7B;AAAA;AAAA,EAEA,KAAK;AAAA,IACD,eAAe;AAAA;AAAA,IACf,UAAU;AAAA;AAAA,IACV,uBAAuB;AAAA;AAAA,IACvB,gBAAgB;AAAA;AAAA,IAChB,iBAAiB;AAAA;AAAA,IACjB,YAAY;AAAA;AAAA,IACZ,oBAAoB;AAAA;AAAA,IACpB,yBAAyB;AAAA;AAAA,EAC7B;AAAA;AAAA,EAEA,KAAM;AAAA,IACF,eAAe;AAAA;AAAA,IACf,UAAU;AAAA;AAAA,IACV,uBAAuB;AAAA;AAAA,IACvB,gBAAgB;AAAA;AAAA,IAChB,iBAAiB;AAAA;AAAA,IACjB,YAAY;AAAA;AAAA,IACZ,oBAAoB;AAAA;AAAA,IACpB,yBAAyB;AAAA;AAAA,EAC7B;AAAA;AAAA,EAEA,MAAM;AAAA,IACF,eAAe;AAAA;AAAA,IACf,UAAU;AAAA;AAAA,IACV,uBAAuB;AAAA;AAAA,IACvB,gBAAgB;AAAA;AAAA,IAChB,iBAAiB;AAAA;AAAA,IACjB,YAAY;AAAA;AAAA,IACZ,oBAAoB;AAAA;AAAA,IACpB,yBAAyB;AAAA;AAAA,EAC7B;AACJ;AAIA,SAAS,QAAQ,OAAO,KAAK;AACzB,MAAI,IAAI;AACR,QAAM,OAAO;AAAA,IACT,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H,SAAS,eAAe,KAAK;AAAA,IAC7B,MAAM,MAAM,KAAK,QAAQ,YAAY,EAAE;AAAA,IACvC,cAAc,qBAAqB,OAAO,GAAG;AAAA,IAC7C,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,IACX,YAAY,CAAC;AAAA,IACb,UAAU,CAAC;AAAA,IACX,WAAW;AAEP,aAAO,QAAQ,MAAM,IAAI;AAAA,IAC7B;AAAA,EACJ;AACA,QAAM,kBAAkB,oBAAI,IAAI;AAChC,QAAM,aAAa;AAAA,IACf,IAAI,UAAU;AACV,aAAO,gBAAgB,IAAI,QAAQ;AAAA,IACvC;AAAA,IACA,IAAI,MAAM;AACN,UAAIC;AACJ,eAASA,MAAK,KAAK,MAAM,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,cAAc,IAAI;AAC5F,sBAAgB,IAAI,KAAK,UAAU,IAAI;AAAA,IAC3C;AAAA,EACJ;AACA,aAAW,aAAa,MAAM,UAAU;AACpC,YAAQ,WAAW,MAAM,QAAW,GAAG;AAAA,EAC3C;AACA,aAAW,gBAAgB,MAAM,aAAa;AAC1C,eAAW,cAAc,MAAM,QAAW,KAAK,UAAU;AAAA,EAC7D;AACA,aAAW,gBAAgB,MAAM,SAAS;AACtC,eAAW,cAAc,MAAM,GAAG;AAAA,EACtC;AACA,gBAAc,MAAM,GAAG;AACvB,aAAW,YAAY,gBAAgB,OAAO,GAAG;AAE7C,cAAU,UAAU,KAAK,UAAU;AAAA,EACvC;AACA,aAAW,WAAW,KAAK,UAAU;AACjC,cAAU,SAAS,KAAK,UAAU;AAClC,kBAAc,SAAS,GAAG;AAAA,EAC9B;AACA,MAAI,QAAQ,MAAM,IAAI;AAC1B;AAMA,SAAS,cAAc,MAAM,KAAK;AAC9B,UAAQ,KAAK,MAAM;AAAA,IACf,KAAK;AACD,iBAAW,SAAS,KAAK,MAAM,WAAW;AACtC,cAAM,MAAM,SAAS,OAAO,MAAM,GAAG;AACrC,aAAK,WAAW,KAAK,GAAG;AACxB,YAAI,IAAI,GAAG;AAAA,MACf;AACA;AAAA,IACJ,KAAK;AACD,iBAAW,SAAS,KAAK,MAAM,WAAW;AACtC,cAAM,MAAM,SAAS,OAAO,MAAM,GAAG;AACrC,aAAK,iBAAiB,KAAK,GAAG;AAC9B,YAAI,IAAI,GAAG;AAAA,MACf;AACA,iBAAW,WAAW,KAAK,gBAAgB;AACvC,sBAAc,SAAS,GAAG;AAAA,MAC9B;AACA;AAAA,EACR;AACJ;AAKA,SAAS,UAAU,SAAS,KAAK,YAAY;AACzC,QAAM,YAAY,QAAQ,MAAM,UAAU,IAAI,CAAC,UAAU,SAAS,OAAO,OAAO,CAAC;AACjF,QAAM,aAAa,oBAAI,IAAI;AAC3B,aAAW,SAAS,QAAQ,MAAM,OAAO;AACrC,UAAM,QAAQ,UAAU,OAAO,SAAS;AACxC,UAAM,QAAQ,SAAS,OAAO,SAAS,KAAK,OAAO,UAAU;AAC7D,YAAQ,OAAO,KAAK,KAAK;AACzB,YAAQ,MAAM,MAAM,SAAS,IAAI;AACjC,QAAI,UAAU,QAAW;AACrB,cAAQ,QAAQ,KAAK,KAAK;AAAA,IAC9B,OACK;AACD,YAAM,OAAO,KAAK,KAAK;AACvB,UAAI,CAAC,WAAW,IAAI,KAAK,GAAG;AACxB,mBAAW,IAAI,KAAK;AACpB,gBAAQ,QAAQ,KAAK,KAAK;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AACA,aAAW,SAAS,UAAU,OAAO,CAAC,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG;AAC5D,YAAQ,OAAO,KAAK,KAAK;AAAA,EAC7B;AACA,aAAW,SAAS,QAAQ,gBAAgB;AACxC,cAAU,OAAO,KAAK,UAAU;AAAA,EACpC;AACJ;AAKA,SAAS,QAAQ,OAAO,MAAM,QAAQ,KAAK;AACvC,MAAI,IAAI,IAAI,IAAI,IAAI;AACpB,QAAM,eAAe,qBAAqB,MAAM,MAAM,MAAM,KAAK;AACjE,QAAM,OAAO;AAAA,IACT,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,UAAU,aAAa,OAAO,QAAQ,IAAI;AAAA,IAC1C,OAAO,CAAC;AAAA,IACR,QAAQ,CAAC;AAAA,IACT;AAAA,IACA,WAAW;AACP,aAAO,QAAQ,KAAK,QAAQ;AAAA,IAChC;AAAA,EACJ;AACA,OAAK,OAAO,WAAW,IAAI;AAC3B,MAAI,IAAI,IAAI;AACZ,aAAW,KAAK,MAAM,OAAO;AACzB,UAAMC,QAAO,EAAE;AACf,SAAK,OAAO;AAAA;AAAA,MAEX,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,QACpB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa,MAAM,KAAK,EAAE,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,QACxH,QAAQ;AAAA,QACR,MAAAA;AAAA,QACA,WAAW,mBAAmB,gBAAgB,SACxCA,QACAA,MAAK,UAAU,aAAa,MAAM,CAAC;AAAA,QACzC,QAAQ,EAAE;AAAA,QACV,WAAW;AACP,iBAAO,cAAc,KAAK,QAAQ,IAAIA,KAAI;AAAA,QAC9C;AAAA,MACJ;AAAA,IAAE;AAAA,EACN;AACA,IAAE,KAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,iBAAiB,QAAQ,OAAO,SAAS,KAAK,KAAK,OAAO,KAAK,IAAI;AACrI;AAKA,SAAS,WAAW,OAAO,MAAM,QAAQ,KAAK,YAAY;AACtD,MAAI,IAAI,IAAI,IAAI;AAChB,QAAM,OAAO;AAAA,IACT,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H;AAAA,IACA;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,UAAU,aAAa,OAAO,QAAQ,IAAI;AAAA,IAC1C,QAAQ,CAAC;AAAA,IACT,OAAO,CAAC;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,IACV,aAAa,CAAC;AAAA,IACd,gBAAgB,CAAC;AAAA,IACjB,kBAAkB,CAAC;AAAA,IACnB,WAAW;AACP,aAAO,WAAW,KAAK,QAAQ;AAAA,IACnC;AAAA,EACJ;AACA,QAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,cAAc,MAAM;AAClF,eAAW,IAAI,IAAI;AAAA,EACvB,OACK;AACD,MAAE,KAAK,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,oBAAoB,QAAQ,OAAO,SAAS,KAAK,KAAK,UAAU,KAAK,IAAI;AACvI,QAAI,IAAI,IAAI;AAAA,EAChB;AACA,aAAW,aAAa,MAAM,UAAU;AACpC,YAAQ,WAAW,MAAM,MAAM,GAAG;AAAA,EACtC;AACA,aAAW,gBAAgB,MAAM,YAAY;AACzC,eAAW,cAAc,MAAM,MAAM,KAAK,UAAU;AAAA,EACxD;AACJ;AAKA,SAAS,WAAW,OAAO,MAAM,KAAK;AAClC,MAAI,IAAI;AACR,QAAM,OAAO;AAAA,IACT,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,UAAU,aAAa,OAAO,QAAW,IAAI;AAAA,IAC7C,SAAS,CAAC;AAAA,IACV,QAAQ,CAAC;AAAA,IACT,WAAW;AACP,aAAO,WAAW,KAAK,QAAQ;AAAA,IACnC;AAAA,EACJ;AACA,OAAK,SAAS,KAAK,IAAI;AACvB,MAAI,IAAI,IAAI;AACZ,aAAW,eAAe,MAAM,QAAQ;AACpC,UAAM,SAAS,UAAU,aAAa,MAAM,GAAG;AAC/C,SAAK,QAAQ,KAAK,MAAM;AACxB,SAAK,OAAO,OAAO,SAAS,IAAI;AAAA,EACpC;AACJ;AAIA,SAAS,UAAU,OAAO,QAAQ,KAAK;AACnC,MAAI,IAAI,IAAI,IAAI;AAChB,MAAI;AACJ,MAAI,MAAM,mBAAmB,MAAM,iBAAiB;AAChD,iBAAa;AAAA,EACjB,WACS,MAAM,iBAAiB;AAC5B,iBAAa;AAAA,EACjB,WACS,MAAM,iBAAiB;AAC5B,iBAAa;AAAA,EACjB,OACK;AACD,iBAAa;AAAA,EACjB;AACA,QAAM,QAAQ,IAAI,WAAW,eAAe,MAAM,SAAS,CAAC;AAC5D,QAAM,SAAS,IAAI,WAAW,eAAe,MAAM,UAAU,CAAC;AAC9D,SAAO,OAAO,6CAA6C,MAAM,SAAS,YAAY;AACtF,SAAO,QAAQ,8CAA8C,MAAM,SAAS,YAAY;AACxF,QAAMA,QAAO,MAAM;AACnB,SAAO;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H;AAAA,IACA,MAAAA;AAAA,IACA,WAAW,mBAAmBA,MAAK,SAC7B,mBAAmBA,MAAK,CAAC,EAAE,YAAY,IAAIA,MAAK,UAAU,CAAC,CAAC,IAC5DA,KAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,sBAAsB,QAAQ,OAAO,SAAS,KAAK;AAAA,IACnI,WAAW;AACP,aAAO,OAAO,OAAO,QAAQ,IAAIA,KAAI;AAAA,IACzC;AAAA,EACJ;AACJ;AAIA,SAAS,SAAS,OAAO,QAAQ;AAC7B,SAAO;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,MAAM,MAAM;AAAA,IACZ,WAAW,mBAAmB,eAAe,MAAM,IAAI,CAAC;AAAA,IACxD,WAAW;AACP,aAAO,SAAS,OAAO,QAAQ,IAAI,KAAK,IAAI;AAAA,IAChD;AAAA,EACJ;AACJ;AACA,SAAS,SAAS,OAAO,cAAc,KAAK,OAAO,YAAY;AAC3D,MAAI,IAAI,IAAI;AACZ,QAAM,cAAc,eAAe;AACnC,QAAM,QAAQ;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA,aAAa,MAAM,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,gBAAgB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC5H,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,IACd,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU,iBAAiB,OAAO,OAAO,aAAa,YAAY;AAAA,IAClE,gBAAgB,gBAAgB,OAAO,YAAY;AAAA,IACnD,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,iBAAiB;AAAA,EACrB;AACA,MAAI,aAAa;AAEb,UAAM,OAAO,aAAa,QAAQ,SAAS,eAAe,aAAa;AACvE,UAAM,SAAS,aAAa,QAAQ,SAAS,SAAY;AACzD,UAAM,WAAW,aAAa,OAAO,QAAQ,IAAI;AACjD,UAAM,OAAO;AACb,UAAM,OAAO;AACb,UAAM,SAAS;AACf,UAAM,QAAQ;AACd,UAAM,WAAW;AACjB,UAAM,WAAW,IAAI,QAAQ;AAC7B,UAAM,WAAW,MAAM,aAAa,QAAQ;AAC5C,UAAM,WAAW,IAAI,WAAW,eAAe,MAAM,QAAQ,CAAC;AAC9D,WAAO,UAAU,0CAA0C,MAAM,QAAQ,YAAY;AACrF,UAAM,WAAW;AAAA,EACrB,OACK;AAED,UAAM,SAAS;AACf,WAAO,OAAO,QAAQ,SAAS;AAC/B,UAAM,SAAS;AACf,UAAM,QAAQ;AACd,UAAM,YAAY,QACZ,eAAe,MAAM,IAAI,IACzB,mBAAmB,eAAe,MAAM,IAAI,CAAC;AACnD,UAAM,WAAW,MAAM;AACvB,UAAM,WAAW,MAAM,SAAS,OAAO,QAAQ,IAAI,MAAM,IAAI;AAAA,EACjE;AACA,QAAM,QAAQ,MAAM;AACpB,QAAM,OAAO,MAAM;AACnB,QAAM,UAAU,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG;AAC5E,MAAI,UAAU,gBAAgB;AAE1B,UAAM,WAAW,QAAQ,eACnB,eAAe,QAAQ,eAAe,SAAS,SAAS,WAAW,IAAI,eAAe,MAAM,QAAQ,CAAC,IACrG;AACN,QAAI,UAAU;AAEV,YAAM,YAAY;AAClB,YAAM,EAAE,KAAK,MAAM,IAAI,mBAAmB,QAAQ;AAClD,YAAM,SAAS,IAAI;AACnB,YAAM,UAAU,MAAM;AACtB,YAAM,UAAU,MAAM;AACtB,YAAM,oBAAoB;AAC1B,YAAM,OAAO,MAAM;AACnB,YAAM,SAAS,MAAM;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,YAAY;AAClB,YAAQ,MAAM;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AACD,cAAM,WAAW;AACjB,cAAM,UAAU,IAAI,WAAW,eAAe,MAAM,QAAQ,CAAC;AAC7D,eAAO,MAAM,OAAO;AACpB,cAAM,oBAAoB,oBAAoB,OAAO,YAAY;AACjE;AAAA,MACJ,KAAK;AACD,cAAM,WAAW;AACjB,cAAM,OAAO,IAAI,QAAQ,eAAe,MAAM,QAAQ,CAAC;AACvD,eAAO,MAAM,IAAI;AACjB;AAAA,MACJ;AACI,cAAM,WAAW;AACjB,cAAM,SAAS;AACf,cAAM,eAAe,UAAU;AAC/B;AAAA,IACR;AACA,UAAM,SAAS,cAAc,OAAO,YAAY;AAChD,WAAO;AAAA,EACX;AAEA,UAAQ,MAAM;AAAA,IACV,KAAK;AAAA,IACL,KAAK;AACD,YAAM,YAAY;AAClB,YAAM,UAAU,IAAI,WAAW,eAAe,MAAM,QAAQ,CAAC;AAC7D,aAAO,MAAM,SAAS,2CAA2C,MAAM,QAAQ,YAAY;AAC3F,YAAM,oBAAoB,oBAAoB,OAAO,YAAY;AACjE,YAAM,kBAAkB,MAAM;AAC9B;AAAA,IACJ,KAAK,WAAW;AACZ,YAAM,cAAc,IAAI,QAAQ,eAAe,MAAM,QAAQ,CAAC;AAC9D,aAAO,gBAAgB,QAAW,2CAA2C,MAAM,QAAQ,YAAY;AACvG,YAAM,YAAY;AAClB,YAAM,OAAO,IAAI,QAAQ,eAAe,MAAM,QAAQ,CAAC;AACvD,YAAM,kBAAkB,MAAM;AAC1B,eAAO,oBAAoB,OAAO,cAAc,IAC1C,yBAAyB,aAAa,MAAM,YAAY,IACxD;AAAA,MACV;AACA;AAAA,IACJ;AAAA,IACA,SAAS;AACL,YAAM,YAAY;AAClB,YAAM,SAAS;AACf,YAAM,eAAe,UAAU;AAC/B,YAAM,kBAAkB,MAAM;AAC1B,eAAO,oBAAoB,OAAO,cAAc,IAC1C,2BAA2B,MAAM,MAAM,YAAY,IACnD;AAAA,MACV;AACA;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAKA,SAAS,eAAe,OAAO;AAC3B,UAAQ,MAAM,QAAQ;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACD,aAAOC;AAAA,IACX,KAAK;AACD,aAAOC;AAAA,IACX,KAAK;AAID,UAAI,MAAM,YAAY,kBAAkB;AACpC,eAAO;AAAA,MACX;AACA,UAAI,MAAM,WAAW,iBAAiB;AAClC,eAAO,MAAM;AAAA,MACjB;AACA,YAAM,IAAI,MAAM,GAAG,MAAM,IAAI,uBAAuB;AAAA,IACxD;AACI,YAAM,IAAI,MAAM,GAAG,MAAM,IAAI,yBAAyB,MAAM,MAAM,GAAG;AAAA,EAC7E;AACJ;AAIA,SAAS,qBAAqB,OAAO,KAAK;AACtC,SAAO,MAAM,WAAW,IAAI,CAAC,aAAa;AACtC,UAAM,MAAM,IAAI,QAAQ,QAAQ;AAChC,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,eAAe,QAAQ,iBAAiB,MAAM,IAAI,EAAE;AAAA,IACxE;AACA,WAAO;AAAA,EACX,CAAC;AACL;AAKA,SAAS,qBAAqB,UAAU,QAAQ;AAC5C,QAAM,SAAS,iBAAiB,QAAQ,IAAI;AAC5C,aAAW,SAAS,QAAQ;AACxB,QAAI,CAAC,MAAM,KAAK,YAAY,EAAE,WAAW,MAAM,GAAG;AAC9C,aAAO;AAAA,IACX;AACA,UAAM,YAAY,MAAM,KAAK,UAAU,OAAO,MAAM;AACpD,QAAI,UAAU,UAAU,GAAG;AACvB,aAAO;AAAA,IACX;AACA,QAAI,MAAM,KAAK,SAAS,GAAG;AAEvB,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAKA,SAAS,iBAAiB,OAAO;AAC7B,UAAQ,MAAM,UAAU,GAAG,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,QAAQ,UAAU,CAAC,MAAM,MAAM,CAAC,GAAG,YAAY;AACtG;AAiBA,SAAS,aAAa,OAAO,QAAQ,MAAM;AACvC,MAAI;AACJ,MAAI,QAAQ;AACR,eAAW,GAAG,OAAO,QAAQ,IAAI,MAAM,IAAI;AAAA,EAC/C,WACS,KAAK,MAAM,QAAQ,SAAS,GAAG;AACpC,eAAW,GAAG,KAAK,MAAM,OAAO,IAAI,MAAM,IAAI;AAAA,EAClD,OACK;AACD,eAAW,GAAG,MAAM,IAAI;AAAA,EAC5B;AACA,SAAO;AACX;AAIA,SAAS,eAAe,UAAU;AAC9B,SAAO,SAAS,WAAW,GAAG,IAAI,SAAS,UAAU,CAAC,IAAI;AAC9D;AAKA,SAAS,UAAU,OAAO,WAAW;AACjC,MAAI,CAAC,oBAAoB,OAAO,YAAY,GAAG;AAC3C,WAAO;AAAA,EACX;AACA,MAAI,MAAM,gBAAgB;AACtB,WAAO;AAAA,EACX;AACA,QAAM,QAAQ,UAAU,MAAM,UAAU;AACxC,SAAO,OAAO,wCAAwC,MAAM,UAAU,eAAe,MAAM,MAAM,YAAY;AAC7G,SAAO;AACX;AAKA,SAAS,iBAAiB,OAAO,OAAO,aAAa,QAAQ;AACzD,MAAI,MAAM,SAAS,gBAAgB;AAE/B,WAAO;AAAA,EACX;AACA,MAAI,MAAM,SAAS,gBAAgB;AAE/B,WAAOC;AAAA,EACX;AACA,MAAI,CAAC,CAAC,SAAS,MAAM,gBAAgB;AAEjC,WAAO;AAAA,EACX;AACA,MAAI,aAAa;AAEb,WAAO;AAAA,EACX;AACA,QAAM,WAAW,eAAe,iBAAiB,EAAE,OAAO,OAAO,CAAC;AAClE,MAAI,YAAYA,cACX,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,aAAa;AAE1D,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAIA,SAAS,cAAc,OAAO,QAAQ;AAClC,MAAI,MAAM,SAAS,gBAAgB;AAC/B,WAAO;AAAA,EACX;AACA,UAAQ,MAAM,MAAM;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAED,aAAO;AAAA,EACf;AACA,QAAM,IAAI,MAAM;AAChB,MAAI,KAAK,oBAAoB,GAAG,QAAQ,GAAG;AAEvC,WAAO,EAAE;AAAA,EACb;AACA,SAAQ,UACJ,eAAe,yBAAyB;AAAA,IACpC;AAAA,IACA;AAAA,EACJ,CAAC;AACT;AAIA,SAAS,mBAAmB,UAAU;AAClC,QAAM,MAAM,SAAS,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;AACtD,QAAM,QAAQ,SAAS,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;AACxD,SAAO,OACH,IAAI,aAAa,YACjB,IAAI,UAAU,WAAW,SACzB,IAAI,UAAU,WAAW,SACzB,IAAI,UAAU,WAAW,UACzB,SACA,MAAM,aAAa,UACnB,MAAM,aAAa,KAAK;AAC5B,SAAO,EAAE,KAAK,MAAM;AACxB;AAKA,SAAS,WAAW,MAAM;AACtB,MAAI;AACJ,SAAQ,QACJ,eAAe,YAAY;AAAA,IACvB,OAAO,KAAK;AAAA,IACZ,SAAS,KAAK,KAAK,YAAY,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,EACrE,CAAC;AACT;AAKA,SAAS,oBAAoB,OAAO,QAAQ;AACxC,MAAI,MAAM,QAAQ,YAAY;AAC1B,WAAO;AAAA,EACX;AACA,SAAQ,aACJ,eAAe,mBAAmB;AAAA,IAC9B;AAAA,IACA;AAAA,EACJ,CAAC;AACT;AAMA,SAAS,gBAAgB,OAAO,QAAQ;AACpC,SAAQ,UACJ,eAAe,kBAAkB;AAAA,IAC7B;AAAA,IACA;AAAA,EACJ,CAAC;AACT;AACA,SAAS,eAAeH,OAAM,KAAK;AAC/B,MAAI,IAAI;AACR,QAAM,cAAc,KAAK,IAAI,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG;AACpF,MAAI,YAAY;AACZ,UAAM,MAAM,WAAWA,KAAI;AAC3B,QAAI,OAAO,GAAG;AACV,aAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAI,UAAU,KAAK;AACf,QAAI,IAAI,QAAQ,WAAW;AACvB,aAAO,eAAeA,QAAO,KAAK,IAAI,YAAY,QAAQ,OAAO,SAAS,KAAK,IAAI,IAAI;AAAA,IAC3F;AACA,UAAM,kBAAkB,gBAAgB,IAAI,OAAO;AACnD,QAAI,CAAC,iBAAiB;AAClB,YAAM,IAAI,MAAM,+BAA+B,IAAI,OAAO,YAAY;AAAA,IAC1E;AACA,WAAO,gBAAgBA,KAAI;AAAA,EAC/B;AACA,SAAO,eAAeA,OAAM,IAAI,MAAM;AAC1C;AAIA,SAAS,OAAO,WAAW,KAAK;AAC5B,MAAI,CAAC,WAAW;AACZ,UAAM,IAAI,MAAM,GAAG;AAAA,EACvB;AACJ;;;AHn5BO,SAAS,KAAKI,OAAM;AACvB,QAAM,OAAO,wBAAwBA,KAAI;AACzC,OAAK,YAAY,QAAQ,gBAAgB;AACzC,QAAM,MAAM,mBAAmB,MAAM,MAAM,MAAS;AAEpD,SAAO,IAAI,QAAQ,KAAK,IAAI;AAChC;AAQO,SAAS,wBAAwB,MAAM;AAC1C,QAAM,QAAQ,uBAAO,OAAO;AAAA,IACxB,QAAQ;AAAA,IACR,SAAS;AAAA,EACb,CAAC;AACD,SAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,EAAE,WAAW,uCAAuC,YAAY,CAAC,GAAG,kBAAkB,CAAC,GAAG,gBAAgB,CAAC,GAAG,kBAAkB,CAAC,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,aAAa,KAAK,YAAY,IAAI,mBAAmB,GAAG,UAAU,KAAK,SAAS,IAAI,uBAAuB,EAAE,CAAC,CAAC;AACtV;AACA,SAAS,oBAAoB,MAAM;AAC/B,MAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChC,QAAM,QAAQ,uBAAO,OAAO;AAAA,IACxB,YAAY;AAAA,EAChB,CAAC;AACD,SAAO,OAAO,OAAO,OAAO;AAAA,IACxB,WAAW;AAAA,IACX,MAAM,KAAK;AAAA,IACX,QAAQ,MAAM,KAAK,KAAK,WAAW,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,wBAAwB,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,IACxI,WAAW,CAAC;AAAA,IACZ,aAAa,MAAM,KAAK,KAAK,gBAAgB,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,mBAAmB,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,IAC7I,WAAW,MAAM,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,uBAAuB,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,IAC7I,iBAAiB,MAAM,KAAK,KAAK,oBAAoB,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,CAAC,MAAO,OAAO,OAAO,EAAE,WAAW,iDAAiD,GAAG,CAAC,CAAE,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AAAA,IAC5N,WAAW,CAAC;AAAA,IACZ,eAAe,CAAC;AAAA,IAChB,cAAc,CAAC;AAAA,EACnB,CAAC;AACL;AACA,SAAS,yBAAyB,MAAM;AACpC,QAAM,QAAQ,uBAAO,OAAO;AAAA,IACxB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,gBAAgB;AAAA,EACpB,CAAC;AACD,SAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,EAAE,WAAW,uCAAuC,GAAG,IAAI,GAAG,EAAE,SAAS,KAAK,UAAU,iBAAiB,KAAK,OAAO,IAAI,OAAU,CAAC,CAAC;AACjM;AACA,SAAS,iBAAiB,MAAM;AAC5B,MAAI,IAAI,IAAI;AACZ,QAAM,QAAQ,uBAAO,OAAO;AAAA,IACxB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,WAAW;AAAA,EACf,CAAC;AACD,SAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,EAAE,WAAW,+BAA+B,GAAG,IAAI,GAAG,EAAE,UAAU,KAAK,KAAK,aAAa,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,kBAAkB,MAAM,KAAK,KAAK,qBAAqB,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,CAAC,MAAO,OAAO,OAAO,EAAE,WAAW,8CAA8C,GAAG,CAAC,CAAE,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAC9a;AACA,SAAS,wBAAwB,MAAM;AACnC,QAAM,QAAQ,uBAAO,OAAO;AAAA,IACxB,YAAY;AAAA,EAChB,CAAC;AACD,SAAO,OAAO,OAAO,OAAO;AAAA,IACxB,WAAW;AAAA,IACX,MAAM,KAAK;AAAA,IACX,cAAc,CAAC;AAAA,IACf,eAAe,CAAC;AAAA,IAChB,OAAO,KAAK,MAAM,IAAI,CAAC,MAAO,OAAO,OAAO,EAAE,WAAW,2CAA2C,GAAG,CAAC,CAAE;AAAA,EAC9G,CAAC;AACL;;;AMpGA;AAkBO,SAAS,YAAY,MAAM,SAAS,OAAO;AAC9C,SAAO,MAAM,OAAO,CAAC,KAAK,QAAQ,IAAI,eAAe,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC;AAClF;;;ACpBA;AAkBO,SAAS,SAAS,MAAM,SAAS,OAAO;AAC3C,MAAI,MAAM,UAAU,GAAG;AACnB,WAAO,KAAK,MAAM,IAAI;AAAA,EAC1B;AACA,QAAM,IAAI,MAAM,IAAI;AACpB,SAAO,MAAM,OAAO,CAAC,KAAK,QAAQ,IAAI,eAAe,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC,EAAE,YAAY,CAAC;AACjG;AAIO,SAAS,OAAO,MAAM;AACzB,QAAM,aAAa,CAAC;AACpB,aAAW,SAAS,KAAK,QAAQ;AAC7B,eAAW,MAAM,SAAS,IAAI,MAAM;AACpC,eAAW,MAAM,MAAM,IAAI,MAAM;AAAA,EACrC;AACA,SAAO;AACX;;;ARhBO,IAAM,kCAAgD,qBAAK,EAAE,QAAQ,oCAAoC,WAAW,mBAAmB,eAAe,CAAC,EAAE,QAAQ,qBAAqB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,OAAW,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,uBAAuB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,mCAAmC,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,0CAA0C,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,+BAA+B,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,kCAAkC,GAAG,EAAE,QAAQ,UAAU,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,CAAC,EAAE,GAAG,EAAE,QAAQ,mBAAmB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,mCAAmC,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,kDAAkD,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,kCAAkC,GAAG,EAAE,QAAQ,kBAAkB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,iDAAiD,GAAG,EAAE,QAAQ,iBAAiB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,oCAAoC,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,OAAO,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,yCAAyC,CAAC,EAAE,GAAG,EAAE,QAAQ,iBAAiB,SAAS,CAAC,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,OAAO,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,yBAAyB,SAAS,CAAC,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,sDAAsD,WAAW,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,4DAA4D,gBAAgB,cAAc,WAAW,EAAE,aAAa,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,eAAe,SAAS,CAAC,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,qBAAqB,SAAS,CAAC,EAAE,QAAQ,eAAe,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,wBAAwB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8CAA8C,GAAG,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,6CAA6C,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,iBAAiB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,gCAAgC,GAAG,EAAE,QAAQ,mBAAmB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,QAAQ,SAAS,CAAC,EAAE,QAAQ,eAAe,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,GAAG,EAAE,QAAQ,iBAAiB,UAAU,GAAG,GAAG,EAAE,QAAQ,iBAAiB,UAAU,GAAG,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,SAAS,SAAS,CAAC,EAAE,QAAQ,kBAAkB,UAAU,EAAE,GAAG,EAAE,QAAQ,kBAAkB,UAAU,EAAE,GAAG,EAAE,QAAQ,kBAAkB,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,wBAAwB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,gCAAgC,CAAC,EAAE,GAAG,EAAE,QAAQ,uBAAuB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,4CAA4C,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,+BAA+B,GAAG,EAAE,QAAQ,kBAAkB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,yDAAyD,GAAG,EAAE,QAAQ,iBAAiB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,oCAAoC,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,qBAAqB,SAAS,CAAC,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,OAAO,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,4BAA4B,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,oCAAoC,CAAC,EAAE,GAAG,EAAE,QAAQ,0BAA0B,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,yCAAyC,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,kCAAkC,CAAC,EAAE,GAAG,EAAE,QAAQ,yBAAyB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,iCAAiC,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,eAAe,SAAS,CAAC,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,wBAAwB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,uBAAuB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,SAAS,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,iCAAiC,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,cAAc,KAAK,EAAE,GAAG,EAAE,QAAQ,0BAA0B,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,6CAA6C,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,cAAc,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,uBAAuB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,yBAAyB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,uBAAuB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,cAAc,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,oBAAoB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,OAAO,GAAG,EAAE,QAAQ,qBAAqB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,iBAAiB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,0BAA0B,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,IAAI,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,gBAAgB,SAAS,CAAC,EAAE,QAAQ,SAAS,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,2BAA2B,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,mCAAmC,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,0CAA0C,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,cAAc,KAAK,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,gBAAgB,SAAS,CAAC,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,gBAAgB,SAAS,GAAG,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,gBAAgB,YAAY,GAAG,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,mBAAmB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,QAAQ,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,SAAS,WAAW,EAAE,cAAc,KAAK,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,aAAa,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,gDAAgD,GAAG,EAAE,QAAQ,WAAW,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,iDAAiD,GAAG,EAAE,QAAQ,oBAAoB,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,+CAA+C,GAAG,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,mBAAmB,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,+CAA+C,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,sBAAsB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,sBAAsB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,uBAAuB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,iBAAiB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,SAAS,SAAS,CAAC,EAAE,QAAQ,UAAU,UAAU,EAAE,GAAG,EAAE,QAAQ,QAAQ,UAAU,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,UAAU,SAAS,CAAC,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,mBAAmB,SAAS,CAAC,EAAE,QAAQ,qBAAqB,UAAU,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,oBAAoB,SAAS,CAAC,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,+BAA+B,UAAU,EAAE,GAAG,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,0BAA0B,UAAU,EAAE,GAAG,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,sBAAsB,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,gBAAgB,SAAS,CAAC,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,eAAe,SAAS,CAAC,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,0CAA0C,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,cAAc,KAAK,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,oBAAoB,SAAS,CAAC,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,+CAA+C,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,cAAc,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,iBAAiB,SAAS,CAAC,EAAE,QAAQ,cAAc,UAAU,IAAI,QAAQ,GAAG,SAAS,GAAG,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,qBAAqB,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,mDAAmD,gBAAgB,sBAAsB,GAAG,EAAE,QAAQ,YAAY,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,KAAK,QAAQ,IAAI,SAAS,GAAG,YAAY,uCAAuC,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,oBAAoB,SAAS,CAAC,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,uBAAuB,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,gDAAgD,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,sBAAsB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,sBAAsB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,IAAI,SAAS,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,YAAY,SAAS,CAAC,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,cAAc,SAAS,CAAC,EAAE,QAAQ,kBAAkB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,6CAA6C,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,YAAY,WAAW,IAAI,GAAG,EAAE,SAAS,YAAY,WAAW,IAAI,GAAG,EAAE,SAAS,YAAY,WAAW,IAAK,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,wCAAwC,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,UAAU,WAAW,IAAI,GAAG,EAAE,SAAS,QAAQ,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,2BAA2B,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,qDAAqD,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,YAAY,WAAW,IAAI,GAAG,EAAE,SAAS,UAAU,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8CAA8C,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,QAAQ,WAAW,IAAI,GAAG,EAAE,SAAS,UAAU,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,+CAA+C,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,mBAAmB,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,0CAA0C,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,sBAAsB,WAAW,IAAI,GAAG,EAAE,SAAS,SAAS,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,wBAAwB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,kDAAkD,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,gBAAgB,WAAW,IAAI,GAAG,EAAE,SAAS,aAAa,WAAW,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,6BAA6B,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,yEAAyE,WAAW,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC,GAAG,mBAAmB,CAAC,EAAE,SAAS,cAAc,WAAW,IAAI,GAAG,EAAE,SAAS,oBAAoB,WAAW,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,qBAAqB,YAAY,CAAC,EAAE,QAAQ,2BAA2B,SAAS,CAAC,EAAE,QAAQ,qCAAqC,UAAU,EAAE,GAAG,EAAE,QAAQ,cAAc,UAAU,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,iBAAiB,SAAS,CAAC,EAAE,QAAQ,0BAA0B,UAAU,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,YAAY,SAAS,CAAC,EAAE,QAAQ,qBAAqB,UAAU,EAAE,GAAG,EAAE,QAAQ,QAAQ,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,yBAAyB,SAAS,CAAC,EAAE,QAAQ,mCAAmC,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,2BAA2B,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,UAAU,EAAE,GAAG,EAAE,QAAQ,QAAQ,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,mBAAmB,SAAS,CAAC,EAAE,QAAQ,4BAA4B,UAAU,EAAE,GAAG,EAAE,QAAQ,mBAAmB,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,cAAc,SAAS,CAAC,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,EAAE,GAAG,EAAE,QAAQ,sBAAsB,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,sBAAsB,SAAS,CAAC,EAAE,QAAQ,gCAAgC,UAAU,EAAE,GAAG,EAAE,QAAQ,aAAa,UAAU,EAAE,GAAG,EAAE,QAAQ,gBAAgB,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,KAAM,OAAO,KAAK,GAAG,EAAE,SAAS,MAAM,OAAO,IAAM,GAAG,EAAE,SAAS,KAAO,OAAO,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,sBAAsB,SAAS,CAAC,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,+DAA+D,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,mBAAmB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,4BAA4B,SAAS,CAAC,EAAE,QAAQ,WAAW,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2BAA2B,GAAG,EAAE,QAAQ,wBAAwB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,GAAG,EAAE,QAAQ,kBAAkB,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,8BAA8B,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,kBAAkB,SAAS,CAAC,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,2CAA2C,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,YAAY,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,6BAA6B,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,SAAS,OAAW,OAAO,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,qBAAqB,SAAS,CAAC,EAAE,QAAQ,cAAc,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,gDAAgD,CAAC,GAAG,cAAc,CAAC,EAAE,QAAQ,cAAc,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,QAAQ,eAAe,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,OAAO,UAAU,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,YAAY,UAAU,GAAG,QAAQ,IAAI,SAAS,GAAG,YAAY,yDAAyD,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,YAAY,SAAS,CAAC,EAAE,QAAQ,QAAQ,UAAU,EAAE,GAAG,EAAE,QAAQ,OAAO,UAAU,EAAE,GAAG,EAAE,QAAQ,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,QAAQ,WAAW,SAAS,CAAC,EAAE,QAAQ,mBAAmB,UAAU,EAAE,GAAG,EAAE,QAAQ,kBAAkB,UAAU,IAAI,GAAG,EAAE,QAAQ,kBAAkB,UAAU,IAAI,GAAG,EAAE,QAAQ,kBAAkB,UAAU,IAAI,GAAG,EAAE,QAAQ,gBAAgB,UAAU,IAAK,GAAG,EAAE,QAAQ,gBAAgB,UAAU,KAAK,GAAG,EAAE,QAAQ,oBAAoB,UAAU,KAAK,GAAG,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,uBAAuB,UAAU,EAAE,GAAG,EAAE,QAAQ,2BAA2B,UAAU,MAAM,GAAG,EAAE,QAAQ,2BAA2B,UAAU,MAAM,GAAG,EAAE,QAAQ,2BAA2B,UAAU,MAAM,GAAG,EAAE,QAAQ,eAAe,UAAU,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,oBAAoB,SAAS,CAAC,EAAE,QAAQ,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,oBAAoB,UAAU,EAAE,GAAG,EAAE,QAAQ,qBAAqB,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAU7txB,IAAM,4BAA0C,4BAAY,iCAAiC,CAAC;AA+B9F,IAAI;AAAA,CACV,SAAUC,0CAAyC;AAMhD,EAAAA,yCAAwCA,yCAAwC,aAAa,IAAI,CAAC,IAAI;AAItG,EAAAA,yCAAwCA,yCAAwC,YAAY,IAAI,CAAC,IAAI;AACzG,GAAG,4CAA4C,0CAA0C,CAAC,EAAE;AAarF,IAAI;AAAA,CACV,SAAUC,4BAA2B;AAOlC,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,CAAC,IAAI;AAIrE,EAAAA,2BAA0BA,2BAA0B,OAAO,IAAI,CAAC,IAAI;AAOpE,EAAAA,2BAA0BA,2BAA0B,OAAO,IAAI,CAAC,IAAI;AAIpE,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,CAAC,IAAI;AAOrE,EAAAA,2BAA0BA,2BAA0B,OAAO,IAAI,CAAC,IAAI;AAIpE,EAAAA,2BAA0BA,2BAA0B,SAAS,IAAI,CAAC,IAAI;AAItE,EAAAA,2BAA0BA,2BAA0B,SAAS,IAAI,CAAC,IAAI;AAItE,EAAAA,2BAA0BA,2BAA0B,MAAM,IAAI,CAAC,IAAI;AAInE,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,CAAC,IAAI;AAUrE,EAAAA,2BAA0BA,2BAA0B,OAAO,IAAI,EAAE,IAAI;AAMrE,EAAAA,2BAA0BA,2BAA0B,SAAS,IAAI,EAAE,IAAI;AAMvE,EAAAA,2BAA0BA,2BAA0B,OAAO,IAAI,EAAE,IAAI;AAIrE,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,EAAE,IAAI;AAItE,EAAAA,2BAA0BA,2BAA0B,MAAM,IAAI,EAAE,IAAI;AAIpE,EAAAA,2BAA0BA,2BAA0B,UAAU,IAAI,EAAE,IAAI;AAIxE,EAAAA,2BAA0BA,2BAA0B,UAAU,IAAI,EAAE,IAAI;AAMxE,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,EAAE,IAAI;AAMtE,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,EAAE,IAAI;AAC1E,GAAG,8BAA8B,4BAA4B,CAAC,EAAE;AAQzD,IAAI;AAAA,CACV,SAAUC,6BAA4B;AAMnC,EAAAA,4BAA2BA,4BAA2B,UAAU,IAAI,CAAC,IAAI;AAIzE,EAAAA,4BAA2BA,4BAA2B,UAAU,IAAI,CAAC,IAAI;AAQzE,EAAAA,4BAA2BA,4BAA2B,UAAU,IAAI,CAAC,IAAI;AAC7E,GAAG,+BAA+B,6BAA6B,CAAC,EAAE;AA6C3D,IAAI;AAAA,CACV,SAAUC,2BAA0B;AAMjC,EAAAA,0BAAyBA,0BAAyB,OAAO,IAAI,CAAC,IAAI;AAQlE,EAAAA,0BAAyBA,0BAAyB,WAAW,IAAI,CAAC,IAAI;AAMtE,EAAAA,0BAAyBA,0BAAyB,cAAc,IAAI,CAAC,IAAI;AAC7E,GAAG,6BAA6B,2BAA2B,CAAC,EAAE;AA4BvD,IAAI;AAAA,CACV,SAAUC,qBAAoB;AAM3B,EAAAA,oBAAmBA,oBAAmB,QAAQ,IAAI,CAAC,IAAI;AAWvD,EAAAA,oBAAmBA,oBAAmB,MAAM,IAAI,CAAC,IAAI;AAIrD,EAAAA,oBAAmBA,oBAAmB,cAAc,IAAI,CAAC,IAAI;AACjE,GAAG,uBAAuB,qBAAqB,CAAC,EAAE;AAQ3C,IAAI;AAAA,CACV,SAAUC,sBAAqB;AAM5B,EAAAA,qBAAoBA,qBAAoB,WAAW,IAAI,CAAC,IAAI;AAM5D,EAAAA,qBAAoBA,qBAAoB,WAAW,IAAI,CAAC,IAAI;AAM5D,EAAAA,qBAAoBA,qBAAoB,WAAW,IAAI,CAAC,IAAI;AAChE,GAAG,wBAAwB,sBAAsB,CAAC,EAAE;AAU7C,IAAI;AAAA,CACV,SAAUC,+BAA8B;AAIrC,EAAAA,8BAA6BA,8BAA6B,mBAAmB,IAAI,CAAC,IAAI;AAItF,EAAAA,8BAA6BA,8BAA6B,mBAAmB,IAAI,CAAC,IAAI;AAItF,EAAAA,8BAA6BA,8BAA6B,kBAAkB,IAAI,CAAC,IAAI;AACzF,GAAG,iCAAiC,+BAA+B,CAAC,EAAE;AAY/D,IAAI;AAAA,CACV,SAAUC,gCAA+B;AAItC,EAAAA,+BAA8BA,+BAA8B,qBAAqB,IAAI,CAAC,IAAI;AAI1F,EAAAA,+BAA8BA,+BAA8B,kBAAkB,IAAI,CAAC,IAAI;AAIvF,EAAAA,+BAA8BA,+BAA8B,6BAA6B,IAAI,CAAC,IAAI;AAIlG,EAAAA,+BAA8BA,+BAA8B,qBAAqB,IAAI,CAAC,IAAI;AAI1F,EAAAA,+BAA8BA,+BAA8B,mBAAmB,IAAI,CAAC,IAAI;AAIxF,EAAAA,+BAA8BA,+BAA8B,mBAAmB,IAAI,CAAC,IAAI;AAIxF,EAAAA,+BAA8BA,+BAA8B,kBAAkB,IAAI,CAAC,IAAI;AAIvF,EAAAA,+BAA8BA,+BAA8B,wBAAwB,IAAI,CAAC,IAAI;AAI7F,EAAAA,+BAA8BA,+BAA8B,qBAAqB,IAAI,CAAC,IAAI;AAI1F,EAAAA,+BAA8BA,+BAA8B,oBAAoB,IAAI,CAAC,IAAI;AAC7F,GAAG,kCAAkC,gCAAgC,CAAC,EAAE;AAqCjE,IAAI;AAAA,CACV,SAAUC,iCAAgC;AAIvC,EAAAA,gCAA+BA,gCAA+B,qBAAqB,IAAI,CAAC,IAAI;AAM5F,EAAAA,gCAA+BA,gCAA+B,iBAAiB,IAAI,CAAC,IAAI;AAMxF,EAAAA,gCAA+BA,gCAA+B,YAAY,IAAI,CAAC,IAAI;AACvF,GAAG,mCAAmC,iCAAiC,CAAC,EAAE;AA4BnE,IAAI;AAAA,CACV,SAAUC,uDAAsD;AAI7D,EAAAA,sDAAqDA,sDAAqD,mCAAmC,IAAI,CAAC,IAAI;AAMtJ,EAAAA,sDAAqDA,sDAAqD,YAAY,IAAI,CAAC,IAAI;AAM/H,EAAAA,sDAAqDA,sDAAqD,kBAAkB,IAAI,CAAC,IAAI;AAMrI,EAAAA,sDAAqDA,sDAAqD,WAAW,IAAI,CAAC,IAAI;AAQ9H,EAAAA,sDAAqDA,sDAAqD,QAAQ,IAAI,CAAC,IAAI;AAC/H,GAAG,yDAAyD,uDAAuD,CAAC,EAAE;AAQ/G,IAAI;AAAA,CACV,SAAUC,2BAA0B;AAIjC,EAAAA,0BAAyBA,0BAAyB,wBAAwB,IAAI,CAAC,IAAI;AAInF,EAAAA,0BAAyBA,0BAAyB,UAAU,IAAI,CAAC,IAAI;AAIrE,EAAAA,0BAAyBA,0BAAyB,UAAU,IAAI,CAAC,IAAI;AAIrE,EAAAA,0BAAyBA,0BAAyB,iBAAiB,IAAI,CAAC,IAAI;AAChF,GAAG,6BAA6B,2BAA2B,CAAC,EAAE;AAQvD,IAAI;AAAA,CACV,SAAUC,sBAAqB;AAI5B,EAAAA,qBAAoBA,qBAAoB,mBAAmB,IAAI,CAAC,IAAI;AAIpE,EAAAA,qBAAoBA,qBAAoB,MAAM,IAAI,CAAC,IAAI;AAIvD,EAAAA,qBAAoBA,qBAAoB,QAAQ,IAAI,CAAC,IAAI;AAC7D,GAAG,wBAAwB,sBAAsB,CAAC,EAAE;AAQ7C,IAAI;AAAA,CACV,SAAUC,mCAAkC;AAIzC,EAAAA,kCAAiCA,kCAAiC,iCAAiC,IAAI,CAAC,IAAI;AAI5G,EAAAA,kCAAiCA,kCAAiC,QAAQ,IAAI,CAAC,IAAI;AAInF,EAAAA,kCAAiCA,kCAAiC,UAAU,IAAI,CAAC,IAAI;AACzF,GAAG,qCAAqC,mCAAmC,CAAC,EAAE;AAQvE,IAAI;AAAA,CACV,SAAUC,4BAA2B;AAIlC,EAAAA,2BAA0BA,2BAA0B,yBAAyB,IAAI,CAAC,IAAI;AAItF,EAAAA,2BAA0BA,2BAA0B,QAAQ,IAAI,CAAC,IAAI;AAIrE,EAAAA,2BAA0BA,2BAA0B,MAAM,IAAI,CAAC,IAAI;AACvE,GAAG,8BAA8B,4BAA4B,CAAC,EAAE;AAQzD,IAAI;AAAA,CACV,SAAUC,6BAA4B;AAInC,EAAAA,4BAA2BA,4BAA2B,0BAA0B,IAAI,CAAC,IAAI;AAIzF,EAAAA,4BAA2BA,4BAA2B,iBAAiB,IAAI,CAAC,IAAI;AAIhF,EAAAA,4BAA2BA,4BAA2B,WAAW,IAAI,CAAC,IAAI;AAC9E,GAAG,+BAA+B,6BAA6B,CAAC,EAAE;AAQ3D,IAAI;AAAA,CACV,SAAUC,wBAAuB;AAI9B,EAAAA,uBAAsBA,uBAAsB,qBAAqB,IAAI,CAAC,IAAI;AAI1E,EAAAA,uBAAsBA,uBAAsB,OAAO,IAAI,CAAC,IAAI;AAI5D,EAAAA,uBAAsBA,uBAAsB,oBAAoB,IAAI,CAAC,IAAI;AAC7E,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;AAQjD,IAAI;AAAA,CACV,SAAUC,gCAA+B;AAItC,EAAAA,+BAA8BA,+BAA8B,8BAA8B,IAAI,CAAC,IAAI;AAInG,EAAAA,+BAA8BA,+BAA8B,WAAW,IAAI,CAAC,IAAI;AAIhF,EAAAA,+BAA8BA,+BAA8B,cAAc,IAAI,CAAC,IAAI;AACvF,GAAG,kCAAkC,gCAAgC,CAAC,EAAE;AAyCjE,IAAI;AAAA,CACV,SAAUC,wCAAuC;AAM9C,EAAAA,uCAAsCA,uCAAsC,MAAM,IAAI,CAAC,IAAI;AAM3F,EAAAA,uCAAsCA,uCAAsC,KAAK,IAAI,CAAC,IAAI;AAM1F,EAAAA,uCAAsCA,uCAAsC,OAAO,IAAI,CAAC,IAAI;AAChG,GAAG,0CAA0C,wCAAwC,CAAC,EAAE;AAUjF,IAAI;AAAA,CACV,SAAUC,UAAS;AAMhB,EAAAA,SAAQA,SAAQ,iBAAiB,IAAI,CAAC,IAAI;AAO1C,EAAAA,SAAQA,SAAQ,gBAAgB,IAAI,GAAG,IAAI;AAS3C,EAAAA,SAAQA,SAAQ,gBAAgB,IAAI,GAAG,IAAI;AAI3C,EAAAA,SAAQA,SAAQ,gBAAgB,IAAI,GAAG,IAAI;AAQ3C,EAAAA,SAAQA,SAAQ,cAAc,IAAI,GAAI,IAAI;AAI1C,EAAAA,SAAQA,SAAQ,cAAc,IAAI,IAAI,IAAI;AAM1C,EAAAA,SAAQA,SAAQ,kBAAkB,IAAI,IAAI,IAAI;AAO9C,EAAAA,SAAQA,SAAQ,qBAAqB,IAAI,CAAC,IAAI;AAI9C,EAAAA,SAAQA,SAAQ,qBAAqB,IAAI,CAAC,IAAI;AAI9C,EAAAA,SAAQA,SAAQ,yBAAyB,IAAI,KAAK,IAAI;AAItD,EAAAA,SAAQA,SAAQ,yBAAyB,IAAI,KAAK,IAAI;AAItD,EAAAA,SAAQA,SAAQ,yBAAyB,IAAI,KAAK,IAAI;AAQtD,EAAAA,SAAQA,SAAQ,aAAa,IAAI,UAAU,IAAI;AACnD,GAAG,YAAY,UAAU,CAAC,EAAE;AAcrB,IAAI;AAAA,CACV,SAAUC,mBAAkB;AAIzB,EAAAA,kBAAiBA,kBAAiB,kBAAkB,IAAI,CAAC,IAAI;AAI7D,EAAAA,kBAAiBA,kBAAiB,kBAAkB,IAAI,CAAC,IAAI;AAI7D,EAAAA,kBAAiBA,kBAAiB,mBAAmB,IAAI,CAAC,IAAI;AAClE,GAAG,qBAAqB,mBAAmB,CAAC,EAAE;;;ASn3B9C;AAmBA,IAAM,eAAe;AAAA,EACjB,mBAAmB;AACvB;AACA,SAAS,gBAAgB,SAAS;AAC9B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,YAAY,GAAG,OAAO,IAAI;AAC/E;AAIO,SAAS,WAAW,QAAQ,OAAO,SAAS;AAC/C,QAAM,MAAM,QAAQ,QAAQ,QAAW,KAAK;AAC5C,cAAY,KAAK,IAAI,aAAa,KAAK,GAAG,gBAAgB,OAAO,GAAG,OAAO,MAAM,UAAU;AAC3F,SAAO,IAAI;AACf;AAsBA,SAAS,YAAY,SAAS,QAAQ,SAAS,WAAW,0BAA0B;AAChF,MAAI;AACJ,QAAM,MAAM,YAAY,OAAO,MAAM,OAAO,MAAM;AAClD,MAAI;AACJ,MAAI;AACJ,QAAM,iBAAiB,KAAK,QAAQ,WAAW,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AACpF,SAAO,OAAO,MAAM,KAAK;AACrB,KAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACjC,QAAI,aAAa,YAAY,SAAS,UAAU;AAC5C;AAAA,IACJ;AACA,UAAM,QAAQ,QAAQ,WAAW,OAAO;AACxC,QAAI,CAAC,OAAO;AACR,YAAM,OAAO,OAAO,KAAK,UAAU,OAAO;AAC1C,UAAI,QAAQ,mBAAmB;AAC3B,sBAAc,KAAK,EAAE,IAAI,SAAS,UAAU,KAAK,CAAC;AAAA,MACtD;AACA;AAAA,IACJ;AACA,cAAU,SAAS,QAAQ,OAAO,UAAU,OAAO;AAAA,EACvD;AACA,MAAI,WAAW;AACX,QAAI,YAAY,SAAS,YAAY,YAAY,0BAA0B;AACvE,YAAM,IAAI,MAAM,uBAAuB;AAAA,IAC3C;AAAA,EACJ;AACA,MAAI,cAAc,SAAS,GAAG;AAC1B,YAAQ,WAAW,aAAa;AAAA,EACpC;AACJ;AAIO,SAAS,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS;AACjE,MAAI;AACJ,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AACD,cAAQ,IAAI,OAAO,WAAW,QAAQ,MAAM,QAAQ,MAAM,cAAc,CAAC;AACzE;AAAA,IACJ,KAAK;AACD,YAAM,MAAM,WAAW,QAAQ,WAAW,KAAK;AAC/C,UAAI,MAAM,KAAK,MAAM;AACjB,gBAAQ,IAAI,OAAO,GAAG;AAAA,MAC1B,OACK;AACD,cAAMC,MAAK,MAAM,KAAK,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG;AACzD,YAAIA,KAAI;AACJ,kBAAQ,IAAI,OAAO,GAAG;AAAA,QAC1B,WACS,QAAQ,mBAAmB;AAChC,gBAAM,QAAQ,CAAC;AACf,wBAAc,KAAK,KAAK;AACxB,gBAAM,iBAAiB,KAAK,QAAQ,WAAW,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AACpF,wBAAc,KAAK;AAAA,YACf,IAAI,MAAM;AAAA,YACV;AAAA,YACA,MAAM,IAAI,WAAW,KAAK;AAAA,UAC9B,CAAC;AACD,kBAAQ,WAAW,aAAa;AAAA,QACpC;AAAA,MACJ;AACA;AAAA,IACJ,KAAK;AACD,cAAQ,IAAI,OAAO,iBAAiB,QAAQ,SAAS,OAAO,QAAQ,IAAI,KAAK,CAAC,CAAC;AAC/E;AAAA,IACJ,KAAK;AACD,oBAAc,QAAQ,UAAU,QAAQ,IAAI,KAAK,GAAG,OAAO;AAC3D;AAAA,IACJ,KAAK;AACD,mBAAa,QAAQ,QAAQ,IAAI,KAAK,GAAG,OAAO;AAChD;AAAA,EACR;AACJ;AAEA,SAAS,aAAa,QAAQ,KAAK,SAAS;AACxC,QAAM,QAAQ,IAAI,MAAM;AACxB,MAAI;AACJ,MAAI;AAEJ,QAAM,MAAM,OAAO,OAAO;AAG1B,QAAM,MAAM,OAAO,MAAM;AACzB,SAAO,OAAO,MAAM,KAAK;AACrB,UAAM,CAAC,OAAO,IAAI,OAAO,IAAI;AAC7B,YAAQ,SAAS;AAAA,MACb,KAAK;AACD,cAAM,WAAW,QAAQ,MAAM,QAAQ,MAAM,cAAc;AAC3D;AAAA,MACJ,KAAK;AACD,gBAAQ,MAAM,SAAS;AAAA,UACnB,KAAK;AACD,kBAAM,WAAW,QAAQ,MAAM,QAAQ,MAAM,cAAc;AAC3D;AAAA,UACJ,KAAK;AACD,kBAAM,OAAO,MAAM;AACnB;AAAA,UACJ,KAAK;AACD,kBAAM,iBAAiB,QAAQ,SAAS,KAAK;AAC7C;AAAA,QACR;AACA;AAAA,IACR;AAAA,EACJ;AACA,MAAI,QAAQ,QAAW;AACnB,UAAM,gBAAgB,MAAM,QAAQ,KAAK;AAAA,EAC7C;AACA,MAAI,QAAQ,QAAW;AACnB,YAAQ,MAAM,SAAS;AAAA,MACnB,KAAK;AACD,cAAM,gBAAgB,MAAM,QAAQ,KAAK;AACzC;AAAA,MACJ,KAAK;AACD,cAAM,MAAM,KAAK,OAAO,CAAC,EAAE;AAC3B;AAAA,MACJ,KAAK;AACD,cAAM,QAAQ,MAAM,SAAS,QAAW,KAAK;AAC7C;AAAA,IACR;AAAA,EACJ;AACA,MAAI,IAAI,KAAK,GAAG;AACpB;AACA,SAAS,cAAc,QAAQ,UAAU,MAAM,SAAS;AACpD,MAAI;AACJ,QAAM,QAAQ,KAAK,MAAM;AACzB,MAAI,MAAM,aAAa,WAAW;AAC9B,SAAK,IAAI,iBAAiB,QAAQ,SAAS,KAAK,CAAC;AACjD;AAAA,EACJ;AACA,QAAM,cAAc,KAAK,MAAM,YAAY,QAAQ,OAAO,SAAS,KAAK,WAAW;AACnF,QAAM,SAAS,YAAY,SAAS,mBAChC,cAAc,WAAW,UACzB,cAAc,WAAW;AAC7B,MAAI,CAAC,QAAQ;AACT,SAAK,IAAI,WAAW,QAAQ,YAAY,MAAM,cAAc,CAAC;AAC7D;AAAA,EACJ;AACA,QAAM,IAAI,OAAO,OAAO,IAAI,OAAO;AACnC,SAAO,OAAO,MAAM,GAAG;AACnB,SAAK,IAAI,WAAW,QAAQ,YAAY,MAAM,cAAc,CAAC;AAAA,EACjE;AACJ;AACA,SAAS,iBAAiB,QAAQ,SAAS,OAAO,cAAc;AAC5D,QAAM,YAAY,MAAM;AACxB,QAAM,UAAU,iBAAiB,QAAQ,iBAAiB,SAAS,eAAe,QAAQ,MAAM,SAAS,QAAW,KAAK;AACzH,cAAY,SAAS,QAAQ,SAAS,WAAW,YAAY,MAAM,SAAS,OAAO,OAAO,CAAC;AAC3F,SAAO;AACX;AACA,SAAS,WAAW,QAAQ,MAAM,eAAe,OAAO;AACpD,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO,YAAY;AAAA,IACrC,KAAK,WAAW;AACZ,aAAO,OAAO,KAAK;AAAA,IACvB,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO;AAAA,IACzB,KAAK,WAAW;AACZ,aAAO,OAAO,MAAM;AAAA,IACxB,KAAK,WAAW;AACZ,aAAO,OAAO,MAAM;AAAA,IACxB,KAAK,WAAW;AACZ,aAAO,OAAO,MAAM;AAAA,IACxB,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO;AAAA,IACzB,KAAK,WAAW;AACZ,aAAO,OAAO,QAAQ;AAAA,IAC1B,KAAK,WAAW;AACZ,aAAO,OAAO,MAAM;AAAA,IACxB,KAAK,WAAW;AACZ,aAAO,OAAO,QAAQ;AAAA,IAC1B,KAAK,WAAW;AACZ,aAAO,OAAO,SAAS;AAAA,IAC3B,KAAK,WAAW;AACZ,aAAO,OAAO,SAAS;AAAA,IAC3B,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO;AAAA,IACzB,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO;AAAA,IACzB,KAAK,WAAW;AACZ,aAAO,OAAO,OAAO;AAAA,EAC7B;AACJ;;;AXpNO,SAAS,SAAS,KAAK,SAAS;AACnC,MAAI;AACJ,QAAM,OAAO,WAAW,2BAA2B,aAAa,GAAG,CAAC;AACpE,OAAK,YAAY,QAAQ,gBAAgB;AACzC,OAAK,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC;AAC9I,QAAM,MAAM,mBAAmB,MAAM,CAAC,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,MAAM,SAAS,aAAa,CAAC;AAE7J,SAAO,IAAI,QAAQ,KAAK,IAAI;AAChC;;;AY/BA;;;ACAA;AAkBO,IAAM,2BAAyC,yBAAS,6RAA6R;AAKrV,IAAM,YAA0B,4BAAY,0BAA0B,CAAC;;;ACvB9E;AAiBA,IAAMC,mBAAkB;AAExB,IAAM,gBAAgB;AAAA,EAClB,oBAAoB;AACxB;AACA,SAAS,iBAAiB,SAAS;AAC/B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,aAAa,GAAG,OAAO,IAAI;AAChF;AACO,SAAS,SAAS,QAAQ,SAAS,SAAS;AAC/C,SAAO,YAAY,IAAI,aAAa,GAAG,iBAAiB,OAAO,GAAG,QAAQ,QAAQ,OAAO,CAAC,EAAE,OAAO;AACvG;AACA,SAAS,YAAY,QAAQ,MAAM,KAAK;AACpC,MAAI;AACJ,aAAW,KAAK,IAAI,cAAc;AAC9B,QAAI,CAAC,IAAI,MAAM,CAAC,GAAG;AACf,UAAI,EAAE,YAAYA,kBAAiB;AAC/B,cAAM,IAAI,MAAM,iBAAiB,CAAC,oCAAoC;AAAA,MAC1E;AACA;AAAA,IACJ;AACA,eAAW,QAAQ,MAAM,KAAK,CAAC;AAAA,EACnC;AACA,MAAI,KAAK,oBAAoB;AACzB,eAAW,EAAE,IAAI,UAAU,KAAK,MAAM,KAAK,IAAI,WAAW,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG;AAC9F,aAAO,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI;AAAA,IACrC;AAAA,EACJ;AACA,SAAO;AACX;AAIO,SAAS,WAAW,QAAQ,MAAM,KAAK,OAAO;AACjD,MAAI;AACJ,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACD,kBAAY,QAAQ,IAAI,KAAK,UAAU,MAAM,OAAO,KAAK,MAAM,YAAY,QAAQ,OAAO,SAAS,KAAK,WAAW,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,CAAC;AACtJ;AAAA,IACJ,KAAK;AACD,qBAAe,QAAQ,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC;AAClD;AAAA,IACJ,KAAK;AACD,wBAAkB,QAAQ,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC;AACrD;AAAA,IACJ,KAAK;AACD,iBAAW,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG;AACrC,sBAAc,QAAQ,MAAM,OAAO,KAAK,GAAG;AAAA,MAC/C;AACA;AAAA,EACR;AACJ;AACA,SAAS,YAAY,QAAQ,SAAS,WAAW,YAAY,SAAS,OAAO;AACzE,mBAAiB,OAAO,IAAI,SAAS,kBAAkB,UAAU,CAAC,GAAG,SAAS,WAAW,YAAY,KAAK;AAC9G;AACA,SAAS,kBAAkB,QAAQ,MAAM,OAAO,SAAS;AACrD,MAAI,MAAM,mBAAmB;AACzB,gBAAY,OAAO,IAAI,MAAM,QAAQ,SAAS,UAAU,GAAG,MAAM,OAAO,EAAE,IAAI,MAAM,QAAQ,SAAS,QAAQ;AAAA,EACjH,OACK;AACD,gBAAY,OAAO,IAAI,MAAM,QAAQ,SAAS,eAAe,EAAE,KAAK,GAAG,MAAM,OAAO,EAAE,KAAK;AAAA,EAC/F;AACJ;AACA,SAAS,eAAe,QAAQ,MAAM,OAAO,MAAM;AAC/C,MAAI;AACJ,MAAI,MAAM,YAAY,WAAW;AAC7B,eAAW,QAAQ,MAAM;AACrB,wBAAkB,QAAQ,MAAM,OAAO,IAAI;AAAA,IAC/C;AACA;AAAA,EACJ;AACA,QAAM,cAAc,KAAK,MAAM,YAAY,QAAQ,OAAO,SAAS,KAAK,WAAW;AACnF,MAAI,MAAM,QAAQ;AACd,QAAI,CAAC,KAAK,MAAM;AACZ;AAAA,IACJ;AACA,WAAO,IAAI,MAAM,QAAQ,SAAS,eAAe,EAAE,KAAK;AACxD,eAAW,QAAQ,MAAM;AACrB,uBAAiB,QAAQ,MAAM,OAAO,UAAU,MAAM,MAAM,YAAY,IAAI;AAAA,IAChF;AACA,WAAO,KAAK;AACZ;AAAA,EACJ;AACA,aAAW,QAAQ,MAAM;AACrB,gBAAY,QAAQ,MAAM,OAAO,UAAU,MAAM,MAAM,YAAY,MAAM,QAAQ,IAAI;AAAA,EACzF;AACJ;AACA,SAAS,cAAc,QAAQ,MAAM,OAAO,KAAK,OAAO;AACpD,MAAI;AACJ,SAAO,IAAI,MAAM,QAAQ,SAAS,eAAe,EAAE,KAAK;AAExD,cAAY,QAAQ,MAAM,OAAO,UAAU,MAAM,MAAM,MAAM,QAAQ,GAAG,GAAG;AAE3E,UAAQ,MAAM,SAAS;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AACD,kBAAY,QAAQ,MAAM,OAAO,UAAU,MAAM,OAAO,KAAK,MAAM,YAAY,QAAQ,OAAO,SAAS,KAAK,WAAW,OAAO,GAAG,KAAK;AACtI;AAAA,IACJ,KAAK;AACD,kBAAY,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,MAAM,KAAK,EAAE,KAAK;AAC9E;AAAA,EACR;AACA,SAAO,KAAK;AAChB;AACA,SAAS,iBAAiB,QAAQ,SAAS,WAAW,MAAM,OAAO;AAC/D,MAAI;AACA,YAAQ,MAAM;AAAA,MACV,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,KAAK,KAAK;AACjB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,MAAM,KAAK;AAClB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,MAAM,KAAK;AAClB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,MAAM,KAAK;AAClB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,QAAQ,KAAK;AACpB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,MAAM,KAAK;AAClB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,QAAQ,KAAK;AACpB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,SAAS,KAAK;AACrB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,SAAS,KAAK;AACrB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,MACJ,KAAK,WAAW;AACZ,eAAO,OAAO,KAAK;AACnB;AAAA,IACR;AAAA,EACJ,SACO,GAAG;AACN,QAAI,aAAa,OAAO;AACpB,YAAM,IAAI,MAAM,uBAAuB,OAAO,IAAI,SAAS,eAAe,EAAE,OAAO,EAAE;AAAA,IACzF;AACA,UAAM;AAAA,EACV;AACJ;AACA,SAAS,kBAAkB,MAAM;AAC7B,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,SAAS;AAAA,IACpB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,SAAS;AAAA,IACpB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,SAAS;AAAA,IACpB;AACI,aAAO,SAAS;AAAA,EACxB;AACJ;;;AFjLO,SAAS,QAAQ,QAAQ,SAAS,MAAM;AAC3C,MAAI,MAAM;AACV,MAAI,CAAC,MAAM;AACP,WAAO,OAAO,SAAS;AACvB,UAAM;AAAA,EACV;AACA,OAAK,QAAQ,SAAS,QAAQ,OAAO;AACrC,OAAK,UAAU,cAAc,QAAQ,SAAS;AAC9C,SAAO,MAAM,OAAO;AACxB;AACO,SAAS,MAAM,KAAK,gBAAgB;AACvC,MAAI,IAAI,YAAY,IAAI;AACpB,WAAO;AAAA,EACX;AACA,QAAM,OAAO,OAAO,kBAAkB,WAChC,iBACA,eAAe;AACrB,QAAM,MAAM,cAAc,IAAI,OAAO;AACrC,SAAO,SAAS;AACpB;AACO,SAAS,UAAU,KAAK,uBAAuB;AAClD,MAAI,IAAI,YAAY,IAAI;AACpB,WAAO;AAAA,EACX;AACA,QAAM,OAAO,sBAAsB,QAAQ,YACrC,wBACA,sBAAsB,WAAW,cAAc,IAAI,OAAO,CAAC;AACjE,MAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG;AAC5B,WAAO;AAAA,EACX;AACA,SAAO,WAAW,MAAM,IAAI,KAAK;AACrC;AAUA,SAAS,cAAcC,OAAM;AACzB,SAAO,uBAAuBA,KAAI;AACtC;AACA,SAAS,cAAc,KAAK;AACxB,QAAM,QAAQ,IAAI,YAAY,GAAG;AACjC,QAAMA,QAAO,SAAS,IAAI,IAAI,UAAU,QAAQ,CAAC,IAAI;AACrD,MAAI,CAACA,MAAK,QAAQ;AACd,UAAM,IAAI,MAAM,qBAAqB,GAAG,EAAE;AAAA,EAC9C;AACA,SAAOA;AACX;;;AGpEA;AAkBO,SAAS,QAAQ,MAAM,SAAS,OAAO;AAC1C,MAAI,MAAM,UAAU,GAAG;AACnB,WAAO,KAAK,WAAW,IAAI;AAAA,EAC/B;AACA,QAAM,IAAI,MAAM,IAAI;AACpB,SAAO,MAAM,OAAO,CAAC,KAAK,QAAQ,IAAI,eAAe,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC,EAAE,iBAAiB,CAAC;AACtG;;;ACxBA;AAmBO,IAAM,8BAA4C,yBAAS,q1BAAq1B;AAKh5B,IAAM,eAA6B,4BAAY,6BAA6B,CAAC;AAK7E,IAAM,cAA4B,4BAAY,6BAA6B,CAAC;AAK5E,IAAM,kBAAgC,4BAAY,6BAA6B,CAAC;AAShF,IAAI;AAAA,CACV,SAAUC,YAAW;AAMlB,EAAAA,WAAUA,WAAU,YAAY,IAAI,CAAC,IAAI;AAC7C,GAAG,cAAc,YAAY,CAAC,EAAE;;;ACnDhC;AAkCO,SAAS,aAAa,SAAS,WAAW;AAC7C,iBAAe,WAAW,OAAO;AACjC,QAAM,MAAM,oBAAoB,QAAQ,UAAU,SAAS;AAC3D,QAAM,CAAC,WAAW,OAAO,GAAG,IAAI,yBAAyB,SAAS;AAClE,aAAW,MAAM,KAAK;AAClB,cAAU,WAAW,IAAI,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,UAAU;AAAA,MAChE,mBAAmB;AAAA,IACvB,CAAC;AAAA,EACL;AACA,SAAO,IAAI;AACf;AAOO,SAAS,aAAa,SAAS,WAAW,OAAO;AACpD,MAAI;AACJ,iBAAe,WAAW,OAAO;AACjC,QAAM,QAAQ,KAAK,QAAQ,cAAc,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,UAAU,MAAM;AACnH,QAAM,CAAC,WAAW,KAAK,IAAI,yBAAyB,WAAW,KAAK;AACpE,QAAM,SAAS,IAAI,aAAa;AAChC,aAAW,QAAQ,EAAE,oBAAoB,KAAK,GAAG,WAAW,KAAK;AACjE,QAAM,SAAS,IAAI,aAAa,OAAO,OAAO,CAAC;AAC/C,SAAO,OAAO,MAAM,OAAO,KAAK;AAC5B,UAAM,CAAC,IAAI,QAAQ,IAAI,OAAO,IAAI;AAClC,UAAM,OAAO,OAAO,KAAK,UAAU,EAAE;AACrC,QAAI,KAAK,EAAE,IAAI,UAAU,KAAK,CAAC;AAAA,EACnC;AACA,UAAQ,WAAW;AACvB;AAmDA,SAAS,oBAAoB,eAAe,WAAW;AACnD,MAAI,kBAAkB;AAClB,WAAO,CAAC;AACZ,MAAI,UAAU,cAAc,UAAU,UAAU,cAAc,UAAU;AAEpE,aAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG;AAChD,UAAI,cAAc,CAAC,EAAE,MAAM,UAAU,QAAQ;AACzC,eAAO,CAAC,cAAc,CAAC,CAAC;AAAA,MAC5B;AAAA,IACJ;AACA,WAAO,CAAC;AAAA,EACZ;AACA,SAAO,cAAc,OAAO,CAAC,OAAO,GAAG,OAAO,UAAU,MAAM;AAClE;AAIO,SAAS,yBAAyB,WAAW,OAAO;AACvD,QAAM,YAAY,UAAU;AAC5B,QAAM,QAAQ,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,SAAS,GAAG,EAAE,MAAM,SAAS,QAAQ,UAAU,UAAU,UAAU,CAAC;AAClH,QAAM,OAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,UAAU,QAAQ,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;AACnH,QAAM,YAAY,OAAO,MAAM,UAAU,SAAY,EAAE,CAAC,SAAS,GAAG,MAAM,IAAI,MAAS;AACvF,SAAO;AAAA,IACH,QAAQ,MAAM,SAAS;AAAA,IACvB;AAAA,IACA,MAAM;AACF,YAAMC,SAAQ,UAAU,SAAS;AACjC,UAAIA,WAAU,QAAW;AAErB,cAAMC,QAAO,UAAU;AACvB,YAAI,cAAcA,KAAI,GAAG;AACrB,iBAAO,gBAAgBA,MAAK,OAAO,CAAC,EAAE,QAAQA,MAAK,OAAO,CAAC,EAAE,YAAY;AAAA,QAC7E;AACA,eAAO,OAAOA,KAAI;AAAA,MACtB;AACA,aAAOD;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,WAAW,SAAS;AACxC,MAAI,UAAU,SAAS,YAAY,QAAQ,WAAW;AAClD,UAAM,IAAI,MAAM,aAAa,UAAU,QAAQ,mCAAmC,UAAU,SAAS,QAAQ,EAAE;AAAA,EACnH;AACJ;;;AC/JA;AAsBA,IAAME,mBAAkB;AAExB,IAAMC,YAAW;AAEjB,IAAM,oBAAoB;AAAA,EACtB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,mBAAmB;AACvB;AACA,SAASC,kBAAiB,SAAS;AAC/B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,iBAAiB,GAAG,OAAO,IAAI;AACpF;AAKO,SAAS,OAAO,QAAQ,SAAS,SAAS;AAC7C,SAAO,cAAc,QAAQ,QAAQ,OAAO,GAAGA,kBAAiB,OAAO,CAAC;AAC5E;AAuBA,SAAS,cAAc,KAAK,MAAM;AAC9B,MAAI;AACJ,QAAM,UAAU,aAAa,KAAK,IAAI;AACtC,MAAI,YAAY;AACZ,WAAO;AACX,QAAM,OAAO,CAAC;AACd,aAAW,KAAK,IAAI,cAAc;AAC9B,QAAI,CAAC,IAAI,MAAM,CAAC,GAAG;AACf,UAAI,EAAE,YAAYC,kBAAiB;AAC/B,cAAM,IAAI,MAAM,iBAAiB,CAAC,kCAAkC;AAAA,MACxE;AACA,UAAI,CAAC,KAAK,sBAAsB,EAAE,aAAaC,WAAU;AAErD;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,YAAY,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI;AACjD,QAAI,cAAc,QAAW;AACzB,WAAK,SAAS,GAAG,IAAI,CAAC,IAAI;AAAA,IAC9B;AAAA,EACJ;AACA,MAAI,KAAK,UAAU;AACf,UAAM,UAAU,oBAAI,IAAI;AACxB,eAAW,EAAE,GAAG,MAAM,KAAK,IAAI,WAAW,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,GAAG;AAG9E,UAAI,CAAC,QAAQ,IAAI,EAAE,GAAG;AAClB,gBAAQ,IAAI,EAAE;AACd,cAAM,YAAY,KAAK,SAAS,gBAAgB,IAAI,MAAM,EAAE;AAC5D,YAAI,CAAC,WAAW;AACZ;AAAA,QACJ;AACA,cAAM,QAAQ,aAAa,IAAI,SAAS,SAAS;AACjD,cAAM,CAAC,WAAW,KAAK,IAAI,yBAAyB,WAAW,KAAK;AACpE,cAAM,YAAY,YAAY,OAAO,UAAU,IAAI,KAAK,GAAG,IAAI;AAC/D,YAAI,cAAc,QAAW;AACzB,eAAK,UAAU,QAAQ,IAAI;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,YAAY,GAAG,KAAK,MAAM;AAC/B,UAAQ,EAAE,WAAW;AAAA,IACjB,KAAK;AACD,aAAO,aAAa,GAAG,GAAG;AAAA,IAC9B,KAAK;AACD,aAAO,cAAc,KAAK,IAAI;AAAA,IAClC,KAAK;AACD,aAAO,mBAAmB,EAAE,MAAM,KAAK,KAAK,aAAa;AAAA,IAC7D,KAAK;AACD,aAAO,WAAW,KAAK,IAAI;AAAA,IAC/B,KAAK;AACD,aAAO,UAAU,KAAK,IAAI;AAAA,EAClC;AACJ;AACA,SAAS,UAAU,KAAK,MAAM;AAC1B,QAAM,IAAI,IAAI,MAAM;AACpB,QAAM,UAAU,CAAC;AACjB,UAAQ,EAAE,SAAS;AAAA,IACf,KAAK;AACD,iBAAW,CAAC,UAAU,UAAU,KAAK,KAAK;AACtC,gBAAQ,QAAQ,IAAI,aAAa,GAAG,UAAU;AAAA,MAClD;AACA;AAAA,IACJ,KAAK;AACD,iBAAW,CAAC,UAAU,UAAU,KAAK,KAAK;AACtC,gBAAQ,QAAQ,IAAI,cAAc,YAAY,IAAI;AAAA,MACtD;AACA;AAAA,IACJ,KAAK;AACD,iBAAW,CAAC,UAAU,UAAU,KAAK,KAAK;AACtC,gBAAQ,QAAQ,IAAI,mBAAmB,EAAE,MAAM,YAAY,KAAK,aAAa;AAAA,MACjF;AACA;AAAA,EACR;AACA,SAAO,KAAK,sBAAsB,IAAI,OAAO,IAAI,UAAU;AAC/D;AACA,SAAS,WAAW,MAAM,MAAM;AAC5B,QAAM,IAAI,KAAK,MAAM;AACrB,QAAM,UAAU,CAAC;AACjB,UAAQ,EAAE,UAAU;AAAA,IAChB,KAAK;AACD,iBAAW,QAAQ,MAAM;AACrB,gBAAQ,KAAK,aAAa,GAAG,IAAI,CAAC;AAAA,MACtC;AACA;AAAA,IACJ,KAAK;AACD,iBAAW,QAAQ,MAAM;AACrB,gBAAQ,KAAK,mBAAmB,EAAE,MAAM,MAAM,KAAK,aAAa,CAAC;AAAA,MACrE;AACA;AAAA,IACJ,KAAK;AACD,iBAAW,QAAQ,MAAM;AACrB,gBAAQ,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,MAC1C;AACA;AAAA,EACR;AACA,SAAO,KAAK,sBAAsB,QAAQ,SAAS,IAAI,UAAU;AACrE;AACA,SAAS,mBAAmB,MAAM,OAAO,eAAe;AACpD,MAAI;AACJ,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,MAAM,iBAAiB,IAAI,kCAAkC,UAAU,KAAK,CAAC,EAAE;AAAA,EAC7F;AACA,MAAI,KAAK,YAAY,6BAA6B;AAC9C,WAAO;AAAA,EACX;AACA,MAAI,eAAe;AACf,WAAO;AAAA,EACX;AACA,QAAM,MAAM,KAAK,MAAM,KAAK;AAC5B,UAAQ,KAAK,QAAQ,QAAQ,QAAQ,SAAS,SAAS,IAAI,UAAU,QAAQ,OAAO,SAAS,KAAK;AACtG;AACA,SAAS,aAAa,OAAO,OAAO;AAChC,MAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACxB,UAAQ,MAAM,QAAQ;AAAA;AAAA,IAElB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,UAAU;AAC1B,cAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA,MACxI;AACA,aAAO;AAAA;AAAA;AAAA,IAGX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,UAAU;AAC1B,cAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA,MACxI;AACA,UAAI,OAAO,MAAM,KAAK;AAClB,eAAO;AACX,UAAI,UAAU,OAAO;AACjB,eAAO;AACX,UAAI,UAAU,OAAO;AACjB,eAAO;AACX,aAAO;AAAA;AAAA,IAEX,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,UAAU;AAC1B,cAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA,MACxI;AACA,aAAO;AAAA;AAAA,IAEX,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,WAAW;AAC3B,cAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA,MACxI;AACA,aAAO;AAAA;AAAA,IAEX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,OAAO,SAAS,YAChB,OAAO,SAAS,YACf,OAAO,SAAS,YAAY,OAAO,UAAU,KAAK,GAAI;AACvD,eAAO,MAAM,SAAS;AAAA,MAC1B;AACA,YAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA;AAAA;AAAA,IAGxI,KAAK,WAAW;AACZ,UAAI,iBAAiB,YAAY;AAC7B,eAAO,aAAa,KAAK;AAAA,MAC7B;AACA,YAAM,IAAI,MAAM,iBAAiB,KAAK,cAAc,KAAK,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,OAAO,EAAE;AAAA,EAC5I;AACJ;AACA,SAAS,SAAS,GAAG,MAAM;AACvB,SAAO,KAAK,oBAAoB,EAAE,OAAO,EAAE;AAC/C;AAEA,SAAS,aAAa,KAAK,MAAM;AAC7B,MAAI,CAAC,IAAI,KAAK,SAAS,WAAW,kBAAkB,GAAG;AACnD,WAAO;AAAA,EACX;AACA,UAAQ,IAAI,KAAK,UAAU;AAAA,IACvB,KAAK;AACD,aAAO,UAAU,IAAI,SAAS,IAAI;AAAA,IACtC,KAAK;AACD,aAAO,gBAAgB,IAAI,OAAO;AAAA,IACtC,KAAK;AACD,aAAO,eAAe,IAAI,OAAO;AAAA,IACrC,KAAK;AACD,aAAO,gBAAgB,IAAI,OAAO;AAAA,IACtC,KAAK;AACD,aAAO,aAAa,IAAI,OAAO;AAAA,IACnC,KAAK;AACD,aAAO,YAAY,IAAI,OAAO;AAAA,IAClC,KAAK;AACD,aAAO,gBAAgB,IAAI,OAAO;AAAA,IACtC;AACI,UAAI,cAAc,IAAI,IAAI,GAAG;AACzB,cAAM,aAAa,IAAI,KAAK,OAAO,CAAC;AACpC,eAAO,aAAa,YAAY,IAAI,IAAI,UAAU,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,EACf;AACJ;AACA,SAAS,UAAU,KAAK,MAAM;AAC1B,MAAI,IAAI,YAAY,IAAI;AACpB,WAAO,CAAC;AAAA,EACZ;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,MAAI;AACJ,MAAI;AACJ,MAAI,UAAU;AACV,cAAU,UAAU,KAAK,QAAQ;AACjC,QAAI,SAAS;AACT,aAAO,SAAS,WAAW,QAAQ,SAAS;AAAA,IAChD;AAAA,EACJ;AACA,MAAI,CAAC,QAAQ,CAAC,SAAS;AACnB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,cAAc,IAAI,OAAO,+BAA+B;AAAA,EAClH;AACA,QAAM,YAAY,QAAQ,MAAM,OAAO;AACvC,QAAM,OAAO,4BAA4B,IAAI,IACvC,EAAE,OAAO,aAAa,WAAW,IAAI,EAAE,IACvC,cAAc,WAAW,IAAI;AACnC,OAAK,OAAO,IAAI,IAAI;AACpB,SAAO;AACX;AACA,SAAS,eAAe,KAAK;AACzB,QAAM,UAAU,OAAO,IAAI,OAAO;AAClC,QAAM,QAAQ,IAAI;AAClB,MAAI,UAAU,YAAgB,UAAU,WAAe;AACnD,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,8BAA8B;AAAA,EACxF;AACA,MAAK,UAAU,KAAK,QAAQ,KAAO,UAAU,KAAK,QAAQ,GAAI;AAC1D,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,8CAA8C;AAAA,EACxG;AACA,MAAI,OAAO,IAAI,QAAQ,SAAS;AAChC,MAAI,UAAU,GAAG;AACb,QAAI,WAAW,KAAK,IAAI,KAAK,EAAE,SAAS;AACxC,eAAW,IAAI,OAAO,IAAI,SAAS,MAAM,IAAI;AAC7C,QAAI,SAAS,UAAU,CAAC,MAAM,UAAU;AACpC,iBAAW,SAAS,UAAU,GAAG,CAAC;AAAA,IACtC,WACS,SAAS,UAAU,CAAC,MAAM,OAAO;AACtC,iBAAW,SAAS,UAAU,GAAG,CAAC;AAAA,IACtC;AACA,YAAQ,MAAM;AACd,QAAI,QAAQ,KAAK,WAAW,GAAG;AAC3B,aAAO,MAAM;AAAA,IACjB;AAAA,EACJ;AACA,SAAO,OAAO;AAClB;AACA,SAAS,gBAAgB,KAAK;AAC1B,SAAO,IAAI,MACN,IAAI,CAAC,MAAM;AACZ,QAAI,eAAe,eAAe,CAAC,CAAC,MAAM,GAAG;AACzC,YAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,0CAA0C,CAAC,mBAAmB;AAAA,IACxH;AACA,WAAO,eAAe,CAAC;AAAA,EAC3B,CAAC,EACI,KAAK,GAAG;AACjB;AACA,SAAS,aAAa,KAAK;AACvB,QAAM,OAAO,CAAC;AACd,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,MAAM,GAAG;AAC7C,SAAK,CAAC,IAAI,YAAY,CAAC;AAAA,EAC3B;AACA,SAAO;AACX;AACA,SAAS,YAAY,KAAK;AACtB,UAAQ,IAAI,KAAK,MAAM;AAAA,IACnB,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,UAAI,CAAC,OAAO,SAAS,IAAI,KAAK,KAAK,GAAG;AAClC,cAAM,IAAI,MAAM,GAAG,IAAI,SAAS,4BAA4B;AAAA,MAChE;AACA,aAAO,IAAI,KAAK;AAAA,IACpB,KAAK;AACD,aAAO,IAAI,KAAK;AAAA,IACpB,KAAK;AACD,aAAO,IAAI,KAAK;AAAA,IACpB,KAAK;AACD,aAAO,aAAa,IAAI,KAAK,KAAK;AAAA,IACtC,KAAK;AACD,aAAO,gBAAgB,IAAI,KAAK,KAAK;AAAA,IACzC;AACI,YAAM,IAAI,MAAM,GAAG,IAAI,SAAS,oBAAoB;AAAA,EAC5D;AACJ;AACA,SAAS,gBAAgB,KAAK;AAC1B,SAAO,IAAI,OAAO,IAAI,WAAW;AACrC;AACA,SAAS,gBAAgB,KAAK;AAC1B,QAAM,KAAK,OAAO,IAAI,OAAO,IAAI;AACjC,MAAI,KAAK,KAAK,MAAM,sBAAsB,KACtC,KAAK,KAAK,MAAM,sBAAsB,GAAG;AACzC,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,+EAA+E;AAAA,EACzI;AACA,MAAI,IAAI,QAAQ,GAAG;AACf,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,sCAAsC;AAAA,EAChG;AACA,MAAI,IAAI,QAAQ,WAAW;AACvB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,mDAAmD;AAAA,EAC7G;AACA,MAAI,IAAI;AACR,MAAI,IAAI,QAAQ,GAAG;AACf,UAAM,YAAY,IAAI,QAAQ,KAAY,SAAS,EAAE,UAAU,CAAC;AAChE,QAAI,SAAS,UAAU,CAAC,MAAM,UAAU;AACpC,UAAI,MAAM,SAAS,UAAU,GAAG,CAAC,IAAI;AAAA,IACzC,WACS,SAAS,UAAU,CAAC,MAAM,OAAO;AACtC,UAAI,MAAM,SAAS,UAAU,GAAG,CAAC,IAAI;AAAA,IACzC,OACK;AACD,UAAI,MAAM,WAAW;AAAA,IACzB;AAAA,EACJ;AACA,SAAO,IAAI,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,SAAS,CAAC;AACxD;;;ACjYA;AAwBA,IAAM,mBAAmB;AAAA,EACrB,qBAAqB;AACzB;AACA,SAASC,iBAAgB,SAAS;AAC9B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,gBAAgB,GAAG,OAAO,IAAI;AACnF;AAsBO,SAAS,SAAS,QAAQ,MAAM,SAAS;AAC5C,QAAM,MAAM,QAAQ,MAAM;AAC1B,MAAI;AACA,IAAAC,aAAY,KAAK,MAAMC,iBAAgB,OAAO,CAAC;AAAA,EACnD,SACO,GAAG;AACN,QAAI,aAAa,CAAC,GAAG;AAEjB,YAAM,IAAI,MAAM,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,IAAI;AAAA,QAClE,OAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,UAAM;AAAA,EACV;AACA,SAAO,IAAI;AACf;AAqCA,IAAM,oBAAoB,oBAAI,QAAQ;AACtC,SAAS,aAAa,MAAM,SAAS;AACjC,MAAI;AACJ,MAAI,CAAC,kBAAkB,IAAI,IAAI,GAAG;AAC9B,UAAM,YAAY,oBAAI,IAAI;AAC1B,eAAW,SAAS,KAAK,QAAQ;AAC7B,gBAAU,IAAI,MAAM,MAAM,KAAK,EAAE,IAAI,MAAM,UAAU,KAAK;AAAA,IAC9D;AACA,sBAAkB,IAAI,MAAM,SAAS;AAAA,EACzC;AACA,UAAQ,KAAK,kBAAkB,IAAI,IAAI,OAAO,QAAQ,OAAO,SAAS,SAAS,GAAG,IAAI,OAAO;AACjG;AACA,SAASC,aAAY,KAAK,MAAM,MAAM;AAClC,MAAI;AACJ,MAAI,eAAe,KAAK,MAAM,IAAI,GAAG;AACjC;AAAA,EACJ;AACA,MAAI,QAAQ,QAAQ,MAAM,QAAQ,IAAI,KAAK,OAAO,QAAQ,UAAU;AAChE,UAAM,IAAI,MAAM,iBAAiB,IAAI,IAAI,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAC7E;AACA,QAAM,YAAY,oBAAI,IAAI;AAC1B,aAAW,CAAC,SAAS,SAAS,KAAK,OAAO,QAAQ,IAAI,GAAG;AACrD,UAAM,QAAQ,aAAa,IAAI,MAAM,OAAO;AAC5C,QAAI,OAAO;AACP,UAAI,MAAM,OAAO;AACb,YAAI,cAAc,QAAQ,MAAM,aAAa,UAAU;AAEnD;AAAA,QACJ;AACA,cAAM,OAAO,UAAU,IAAI,MAAM,KAAK;AACtC,YAAI,SAAS,QAAW;AACpB,gBAAM,IAAI,WAAW,MAAM,OAAO,+BAA+B,KAAK,IAAI,QAAQ,MAAM,IAAI,EAAE;AAAA,QAClG;AACA,kBAAU,IAAI,MAAM,OAAO,KAAK;AAAA,MACpC;AACA,MAAAC,WAAU,KAAK,OAAO,WAAW,IAAI;AAAA,IACzC,OACK;AACD,UAAI,YAAY;AAChB,UAAI,QAAQ,WAAW,GAAG,KACtB,QAAQ,SAAS,GAAG;AAAA,OAEnB,aAAa,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,QAAQ,UAAU,GAAG,QAAQ,SAAS,CAAC,CAAC,MAC/H,UAAU,SAAS,aAAa,IAAI,KAAK,UAAU;AACnD,cAAM,CAAC,WAAWC,QAAO,GAAG,IAAI,yBAAyB,SAAS;AAClE,QAAAD,WAAU,WAAWC,QAAO,WAAW,IAAI;AAC3C,qBAAa,IAAI,SAAS,WAAW,IAAI,CAAC;AAAA,MAC9C;AACA,UAAI,CAAC,aAAa,CAAC,KAAK,qBAAqB;AACzC,cAAM,IAAI,MAAM,iBAAiB,IAAI,IAAI,oBAAoB,OAAO,cAAc;AAAA,MACtF;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAASD,WAAU,KAAK,OAAO,MAAM,MAAM;AACvC,UAAQ,MAAM,WAAW;AAAA,IACrB,KAAK;AACD,sBAAgB,KAAK,OAAO,IAAI;AAChC;AAAA,IACJ,KAAK;AACD,oBAAc,KAAK,OAAO,MAAM,IAAI;AACpC;AAAA,IACJ,KAAK;AACD,MAAAE,kBAAiB,KAAK,OAAO,MAAM,IAAI;AACvC;AAAA,IACJ,KAAK;AACD,MAAAC,eAAc,IAAI,IAAI,KAAK,GAAG,MAAM,IAAI;AACxC;AAAA,IACJ,KAAK;AACD,mBAAa,IAAI,IAAI,KAAK,GAAG,MAAM,IAAI;AACvC;AAAA,EACR;AACJ;AACA,SAAS,kBAAkB,OAAO,MAAM,MAAM;AAC1C,MAAI,MAAM,UAAU,SAAS,MAAM;AAC/B,WAAO,eAAe,OAAO,IAAI;AAAA,EACrC;AACA,MAAI,MAAM,WAAW,CAAC,yBAAyB,OAAO,IAAI,GAAG;AACzD,UAAM,WAAW,QAAQ,MAAM,OAAO;AACtC,IAAAJ,aAAY,UAAU,MAAM,IAAI;AAChC,WAAO;AAAA,EACX;AACA,MAAI,MAAM,QAAQ,CAAC,yBAAyB,OAAO,IAAI,GAAG;AACtD,WAAO,SAAS,MAAM,MAAM,MAAM,KAAK,mBAAmB;AAAA,EAC9D;AACA,QAAM,IAAI,WAAW,OAAO,GAAG,MAAM,cAAc,SAAS,cAAc,WAAW,mBAAmB;AAC5G;AACA,SAAS,aAAa,KAAK,MAAM,MAAM;AACnC,MAAI,SAAS,MAAM;AACf;AAAA,EACJ;AACA,QAAM,QAAQ,IAAI,MAAM;AACxB,MAAI,OAAO,QAAQ,YAAY,MAAM,QAAQ,IAAI,GAAG;AAChD,UAAM,IAAI,WAAW,OAAO,0BAA0B,UAAU,IAAI,CAAC;AAAA,EACzE;AACA,aAAW,CAAC,YAAY,YAAY,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC3D,UAAM,MAAM,eAAe,MAAM,QAAQ,UAAU;AACnD,UAAM,QAAQ,kBAAkB,OAAO,cAAc,IAAI;AACzD,QAAI,UAAU,yBAAyB;AACnC,UAAI,IAAI,KAAK,KAAK;AAAA,IACtB;AAAA,EACJ;AACJ;AACA,SAASI,eAAc,MAAM,MAAM,MAAM;AACrC,MAAI,SAAS,MAAM;AACf;AAAA,EACJ;AACA,QAAM,QAAQ,KAAK,MAAM;AACzB,MAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACtB,UAAM,IAAI,WAAW,OAAO,yBAAyB,UAAU,IAAI,CAAC;AAAA,EACxE;AACA,aAAW,YAAY,MAAM;AACzB,UAAM,QAAQ,kBAAkB,OAAO,UAAU,IAAI;AACrD,QAAI,UAAU,yBAAyB;AACnC,WAAK,IAAI,KAAK;AAAA,IAClB;AAAA,EACJ;AACJ;AACA,SAASD,kBAAiB,KAAK,OAAO,MAAM,MAAM;AAC9C,MAAI,yBAAyB,OAAO,IAAI,GAAG;AACvC,QAAI,MAAM,KAAK;AACf;AAAA,EACJ;AACA,QAAM,WAAW,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,QAAQ,MAAM,OAAO;AAC1E,EAAAH,aAAY,UAAU,MAAM,IAAI;AAChC,MAAI,IAAI,OAAO,QAAQ;AAC3B;AACA,SAAS,cAAc,KAAK,OAAO,MAAM,MAAM;AAC3C,MAAI,yBAAyB,OAAO,IAAI,GAAG;AACvC,QAAI,MAAM,KAAK;AACf;AAAA,EACJ;AACA,QAAM,YAAY,SAAS,MAAM,MAAM,MAAM,KAAK,mBAAmB;AACrE,MAAI,cAAc,yBAAyB;AACvC,QAAI,IAAI,OAAO,SAAS;AAAA,EAC5B;AACJ;AACA,SAAS,gBAAgB,KAAK,OAAO,MAAM;AACvC,MAAI,SAAS,MAAM;AACf,QAAI,MAAM,KAAK;AAAA,EACnB,OACK;AACD,QAAI,IAAI,OAAO,eAAe,OAAO,IAAI,CAAC;AAAA,EAC9C;AACJ;AAYA,SAAS,yBAAyB,OAAO,MAAM;AAC3C,MAAI,IAAI;AACR,SAAQ,SAAS,UACX,KAAK,MAAM,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa,6BACzE,KAAK,MAAM,UAAU,QAAQ,OAAO,SAAS,SAAS,GAAG,aAAa;AAChF;AACA,IAAM,0BAA0B,uBAAO;AACvC,SAAS,SAAS,MAAM,MAAM,qBAAqB;AAC/C,MAAI,SAAS,MAAM;AACf,WAAO,KAAK,OAAO,CAAC,EAAE;AAAA,EAC1B;AACA,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK;AACD,UAAI,OAAO,UAAU,IAAI,GAAG;AACxB,eAAO;AAAA,MACX;AACA;AAAA,IACJ,KAAK;AACD,YAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,IAAI;AACvD,UAAI,UAAU,QAAW;AACrB,eAAO,MAAM;AAAA,MACjB;AACA,UAAI,qBAAqB;AACrB,eAAO;AAAA,MACX;AACA;AAAA,EACR;AACA,QAAM,IAAI,MAAM,iBAAiB,IAAI,eAAe,UAAU,IAAI,CAAC,EAAE;AACzE;AAOA,SAAS,eAAe,OAAO,MAAM;AAGjC,UAAQ,MAAM,QAAQ;AAAA;AAAA;AAAA,IAGlB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,UAAI,SAAS;AACT,eAAO;AACX,UAAI,SAAS;AACT,eAAO,OAAO;AAClB,UAAI,SAAS;AACT,eAAO,OAAO;AAClB,UAAI,OAAO,QAAQ,UAAU;AACzB,YAAI,OAAO,MAAM,IAAI,GAAG;AAEpB,gBAAM,IAAI,WAAW,OAAO,uBAAuB;AAAA,QACvD;AACA,YAAI,CAAC,OAAO,SAAS,IAAI,GAAG;AAExB,gBAAM,IAAI,WAAW,OAAO,4BAA4B;AAAA,QAC5D;AACA;AAAA,MACJ;AACA,UAAI,OAAO,QAAQ,UAAU;AACzB,YAAI,SAAS,IAAI;AAEb;AAAA,QACJ;AACA,YAAI,KAAK,KAAK,EAAE,WAAW,KAAK,QAAQ;AAEpC;AAAA,QACJ;AACA,cAAM,QAAQ,OAAO,IAAI;AACzB,YAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAEzB;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AACA;AAAA;AAAA,IAEJ,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,cAAc,IAAI;AAAA;AAAA;AAAA,IAG7B,KAAK,WAAW;AACZ,UAAI,OAAO,QAAQ,UAAU;AACzB,YAAI,SAAS,IAAI;AACb,iBAAO,IAAI,WAAW,CAAC;AAAA,QAC3B;AACA,YAAI;AACA,iBAAO,aAAa,IAAI;AAAA,QAC5B,SACO,GAAG;AACN,gBAAM,UAAU,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACzD,gBAAM,IAAI,WAAW,OAAO,OAAO;AAAA,QACvC;AAAA,MACJ;AACA;AAAA,EACR;AACA,SAAO;AACX;AAMA,SAAS,eAAe,MAAM,YAAY;AACtC,UAAQ,MAAM;AAAA,IACV,KAAK,WAAW;AACZ,cAAQ,YAAY;AAAA,QAChB,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,MACf;AACA,aAAO;AAAA,IACX,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AACZ,aAAO,cAAc,UAAU;AAAA,IACnC;AACI,aAAO;AAAA,EACf;AACJ;AAMA,SAAS,cAAc,MAAM;AACzB,MAAI,OAAO,QAAQ,UAAU;AACzB,QAAI,SAAS,IAAI;AAEb,aAAO;AAAA,IACX;AACA,QAAI,KAAK,KAAK,EAAE,WAAW,KAAK,QAAQ;AAEpC,aAAO;AAAA,IACX;AACA,UAAM,MAAM,OAAO,IAAI;AACvB,QAAI,OAAO,MAAM,GAAG,GAAG;AAEnB,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAYA,SAAS,eAAe,KAAK,WAAW,MAAM;AAC1C,MAAI,CAAC,IAAI,KAAK,SAAS,WAAW,kBAAkB,GAAG;AACnD,WAAO;AAAA,EACX;AACA,UAAQ,IAAI,KAAK,UAAU;AAAA,IACvB,KAAK;AACD,kBAAY,IAAI,SAAS,WAAW,IAAI;AACxC,aAAO;AAAA,IACX,KAAK;AACD,wBAAkB,IAAI,SAAS,SAAS;AACxC,aAAO;AAAA,IACX,KAAK;AACD,uBAAiB,IAAI,SAAS,SAAS;AACvC,aAAO;AAAA,IACX,KAAK;AACD,wBAAkB,IAAI,SAAS,SAAS;AACxC,aAAO;AAAA,IACX,KAAK;AACD,qBAAe,IAAI,SAAS,SAAS;AACrC,aAAO;AAAA,IACX,KAAK;AACD,oBAAc,IAAI,SAAS,SAAS;AACpC,aAAO;AAAA,IACX,KAAK;AACD,wBAAkB,IAAI,SAAS,SAAS;AACxC,aAAO;AAAA,IACX;AACI,UAAI,cAAc,IAAI,IAAI,GAAG;AACzB,cAAM,aAAa,IAAI,KAAK,OAAO,CAAC;AACpC,YAAI,cAAc,MAAM;AACpB,cAAI,MAAM,UAAU;AAAA,QACxB,OACK;AACD,cAAI,IAAI,YAAY,eAAe,YAAY,SAAS,CAAC;AAAA,QAC7D;AACA,eAAO;AAAA,MACX;AACA,aAAO;AAAA,EACf;AACJ;AACA,SAAS,YAAY,KAAK,MAAM,MAAM;AAClC,MAAI;AACJ,MAAI,SAAS,QAAQ,MAAM,QAAQ,IAAI,KAAK,OAAO,QAAQ,UAAU;AACjE,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,uCAAuC,UAAU,IAAI,CAAC,EAAE;AAAA,EAClH;AACA,MAAI,OAAO,KAAK,IAAI,EAAE,UAAU,GAAG;AAC/B;AAAA,EACJ;AACA,QAAM,UAAU,KAAK,OAAO;AAC5B,MAAI,OAAO,WAAW,YAAY,WAAW,IAAI;AAC7C,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,8BAA8B;AAAA,EACxF;AACA,QAAM,WAAW,QAAQ,SAAS,GAAG,IAC/B,QAAQ,UAAU,QAAQ,YAAY,GAAG,IAAI,CAAC,IAC9C;AACN,MAAI,CAAC,SAAS,QAAQ;AAClB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,gCAAgC;AAAA,EAC1F;AACA,QAAM,QAAQ,KAAK,KAAK,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,WAAW,QAAQ;AAC7F,MAAI,CAAC,MAAM;AACP,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,eAAe,OAAO,8BAA8B;AAAA,EAC9G;AACA,QAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,4BAA4B,IAAI,KAChC,OAAO,UAAU,eAAe,KAAK,MAAM,OAAO,GAAG;AACrD,UAAM,QAAQ,KAAK;AACnB,IAAAK,aAAY,KAAK,OAAO,IAAI;AAAA,EAChC,OACK;AACD,UAAM,OAAO,OAAO,OAAO,CAAC,GAAG,IAAI;AAEnC,WAAO,KAAK,OAAO;AACnB,IAAAA,aAAY,KAAK,MAAM,IAAI;AAAA,EAC/B;AACA,UAAQ,IAAI,MAAM,IAAI,SAAS,GAAG;AACtC;AACA,SAAS,kBAAkB,WAAW,MAAM;AACxC,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAChG;AACA,QAAM,UAAU,KAAK,MAAM,yHAAyH;AACpJ,MAAI,CAAC,SAAS;AACV,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,qCAAqC;AAAA,EACrG;AACA,QAAM,KAAK,KAAK;AAAA;AAAA,IAEhB,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI;AAAA,EAAI;AAC3I,MAAI,OAAO,MAAM,EAAE,GAAG;AAClB,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,qCAAqC;AAAA,EACrG;AACA,MAAI,KAAK,KAAK,MAAM,sBAAsB,KACtC,KAAK,KAAK,MAAM,sBAAsB,GAAG;AACzC,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,iFAAiF;AAAA,EACjJ;AACA,YAAU,UAAU,WAAW,MAAM,KAAK,GAAI;AAC9C,YAAU,QAAQ;AAClB,MAAI,QAAQ,CAAC,GAAG;AACZ,cAAU,QACN,SAAS,MAAM,QAAQ,CAAC,IAAI,IAAI,OAAO,IAAI,QAAQ,CAAC,EAAE,MAAM,CAAC,IACzD;AAAA,EACZ;AACJ;AACA,SAAS,iBAAiB,UAAU,MAAM;AACtC,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,MAAM,yBAAyB,SAAS,SAAS,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,QAAM,QAAQ,KAAK,MAAM,6BAA6B;AACtD,MAAI,UAAU,MAAM;AAChB,UAAM,IAAI,MAAM,yBAAyB,SAAS,SAAS,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,QAAM,cAAc,OAAO,MAAM,CAAC,CAAC;AACnC,MAAI,cAAc,YAAgB,cAAc,WAAe;AAC3D,UAAM,IAAI,MAAM,yBAAyB,SAAS,SAAS,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,WAAS,UAAU,WAAW,MAAM,WAAW;AAC/C,MAAI,OAAO,MAAM,CAAC,MAAM,UAAU;AAC9B;AAAA,EACJ;AACA,QAAM,WAAW,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM;AAC1D,WAAS,QAAQ,SAAS,QAAQ;AAClC,MAAI,cAAc,KAAK,OAAO,GAAG,aAAa,EAAE,GAAG;AAC/C,aAAS,QAAQ,CAAC,SAAS;AAAA,EAC/B;AACJ;AACA,SAAS,kBAAkB,WAAW,MAAM;AACxC,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,eAAe,UAAU,IAAI,CAAC,EAAE;AAAA,EAChG;AACA,MAAI,SAAS,IAAI;AACb;AAAA,EACJ;AACA,YAAU,QAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS;AAC5C,QAAI,KAAK,SAAS,GAAG,GAAG;AACpB,YAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,+CAA+C;AAAA,IAC/G;AACA,WAAO,eAAe,IAAI;AAAA,EAC9B,CAAC;AACL;AACA,SAAS,eAAe,QAAQ,MAAM;AAClC,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,IAAI,GAAG;AAChE,UAAM,IAAI,MAAM,yBAAyB,OAAO,SAAS,cAAc,UAAU,IAAI,CAAC,EAAE;AAAA,EAC5F;AACA,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACvC,UAAM,UAAU,OAAO,WAAW;AAClC,kBAAc,SAAS,CAAC;AACxB,WAAO,OAAO,CAAC,IAAI;AAAA,EACvB;AACJ;AACA,SAAS,cAAc,OAAO,MAAM;AAChC,UAAQ,OAAO,MAAM;AAAA,IACjB,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,eAAe,OAAO,KAAK;AAChD;AAAA,IACJ,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,eAAe,OAAO,KAAK;AAChD;AAAA,IACJ,KAAK;AACD,YAAM,OAAO,EAAE,MAAM,aAAa,OAAO,KAAK;AAC9C;AAAA,IACJ,KAAK;AACD,UAAI,SAAS,MAAM;AACf,cAAM,OAAO,EAAE,MAAM,aAAa,OAAO,UAAU,WAAW;AAAA,MAClE,WACS,MAAM,QAAQ,IAAI,GAAG;AAC1B,cAAM,YAAY,OAAO,eAAe;AACxC,0BAAkB,WAAW,IAAI;AACjC,cAAM,OAAO,EAAE,MAAM,aAAa,OAAO,UAAU;AAAA,MACvD,OACK;AACD,cAAM,SAAS,OAAO,YAAY;AAClC,uBAAe,QAAQ,IAAI;AAC3B,cAAM,OAAO,EAAE,MAAM,eAAe,OAAO,OAAO;AAAA,MACtD;AACA;AAAA,IACJ;AACI,YAAM,IAAI,MAAM,yBAAyB,MAAM,SAAS,cAAc,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,WAAW,MAAM;AACxC,MAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACtB,UAAM,IAAI,MAAM,yBAAyB,UAAU,SAAS,cAAc,UAAU,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,aAAW,KAAK,MAAM;AAClB,UAAM,QAAQ,OAAO,WAAW;AAChC,kBAAc,OAAO,CAAC;AACtB,cAAU,OAAO,KAAK,KAAK;AAAA,EAC/B;AACJ;;;AnCnlBA,IAAM,iBAAiB,CAAC,UAAmB;AACvC,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,OAAO,KAAK;AACjC,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO,OAAO,cAAc,YAAY,IAAI,eAAe,MAAM,SAAS;AAAA,EAC9E;AAEA,MAAI,OAAO,UAAU,UAAU;AAC3B,QAAI,OAAO,cAAc,YAAY,GAAG;AACpC,UAAI;AACA,YAAI,OAAO,KAAK,MAAM,OAAO,YAAY,GAAG;AACxC,iBAAO;AAAA,QACX;AAAA,MACJ,QAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAEA,SAAO;AACX;AAEA,IAAM,sBAAsB,CAAC,OAAkB,UAAmB;AAC9D,MAAI,UAAU,QAAW;AACrB,WAAO;AAAA,EACX;AAEA,MAAI,MAAM,WAAW,WAAW,QAAQ;AACpC,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,MAAM,SAAS;AAAA,IAC1B;AAEA,WAAO;AAAA,EACX;AAEA,MAAI,MAAM,WAAW,WAAW,OAAO;AAGnC,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,MAAM,WAAW,IAAIC,QAAO,MAAM,CAAC,IAAIA,QAAO,KAAK,OAAO,KAAK;AAAA,IAC1E;AAEA,WAAOA,QAAO,KAAK,KAA8B;AAAA,EACrD;AAEA,SAAO;AACX;AAEA,IAAM,sBAAsB,CAAC,OAAkB,UAAmB;AAE9D,MAAI,UAAU,QAAW;AACrB,WAAO;AAAA,EACX;AAEA,MAAI,MAAM,WAAW,WAAW,OAAO;AAEnC,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAOA,QAAO,KAAK,OAAO,QAAQ,EAAE,SAAS,KAAK;AAAA,IACtD;AAEA,WAAOA,QAAO,KAAK,KAA8B,EAAE,SAAS,KAAK;AAAA,EACrE;AAEA,MAAI,MAAM,WAAW,WAAW,UAAU,MAAM,WAAW,WAAW,QAAQ;AAC1E,WAAO,OAAO,KAAK;AAAA,EACvB;AAEA,MACI,MAAM,WAAW,WAAW,SAC5B,MAAM,WAAW,WAAW,UAC5B,MAAM,WAAW,WAAW,UAC5B,MAAM,WAAW,WAAW,WAC5B,MAAM,WAAW,WAAW,UAC9B;AACE,WAAO,eAAe,KAAK;AAAA,EAC/B;AAEA,SAAO;AACX;AAEA,IAAM,wBAAwB,CAC1B,WACA,QACA,eACC;AACD,QAAM,kBAA2C,CAAC;AAClD,QAAM,iBAAiB,cAAc,WAAW,sBAAsB;AAEtE,SAAO,OAAO,QAAQ,iBAAe;AACjC,UAAM,aAAa,aAAa,YAAY,IAAI;AAEhD,QAAI,YAAY,cAAc,QAAQ;AAClC,UAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;AAC5B,wBAAgB,YAAY,IAAI,IAAI,CAAC;AAAA,MACzC,WAAW,YAAY,aAAa,WAAW;AAC3C,wBAAgB,YAAY,IAAI,IAAI,WAAW;AAAA,UAAI,UAC/C;AAAA,YACI;AAAA,YACA,YAAY;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,WAAW,YAAY,aAAa,UAAU;AAC1C,wBAAgB,YAAY,IAAI,IAAI,WAAW;AAAA,UAAI,UAC/C,eAAe,aAAa,IAAI;AAAA,QACpC;AAAA,MACJ,OAAO;AACH,wBAAgB,YAAY,IAAI,IAAI;AAAA,MACxC;AAAA,IACJ,WAAW,YAAY,cAAc,WAAW;AAC5C,UAAI,CAAC,YAAY;AAEb,wBAAgB,YAAY,IAAI,IAAI,cAAc,WAAW,CAAC,IAAI;AAAA,MACtE,OAAO;AACH,wBAAgB,YAAY,IAAI,IAAI;AAAA,UAChC;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,WAAW,YAAY,cAAc,UAAU;AAC3C,sBAAgB,YAAY,IAAI,IAAI,eAAe,aAAa,UAAU;AAAA,IAC9E,WAAW,YAAY,cAAc,QAAQ;AACzC,sBAAgB,YAAY,IAAI,IAAI;AAAA,IACxC,OAAO;AACH,sBAAgB,YAAY,IAAI,IAAI;AAAA,IACxC;AAEA,QAAI,gBAAgB,YAAY,IAAI,MAAM,QAAW;AACjD,aAAO,gBAAgB,YAAY,IAAI;AAAA,IAC3C;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAEO,IAAM,kBAAkB,MAAM;AACjC,QAAM,WAAoD,CAAC;AAC3D,QAAM,aAAwD,CAAC;AAC/D,QAAM,QAA8C,CAAC;AAErD,QAAM,OAAO,CAAC,YAAiE;AAC3E,QAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,cAAQ,QAAQ,OAAK,KAAK,CAAC,CAAC;AAAA,IAChC,OAAO;AACH,aAAO,KAAK,OAAO,EAAE,QAAQ,SAAO;AAChC,cAAM,MAAM,QAAQ,GAAG;AACvB,YAAI,IAAI,QAAQ,IAAI,SAAS,QAAQ;AACjC,cAAI,IAAI,SAAS,WAAW;AACxB,qBAAS,GAAG,IAAI;AAAA,UACpB,WAAW,IAAI,SAAS,aAAa;AACjC,uBAAW,GAAG,IAAI;AAAA,UACtB,WAAW,IAAI,SAAS,QAAQ;AAC5B,kBAAM,IAAI,IAAI,IAAI;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAIA,QAAM,sBAAsB,CAAC,WAAoB;AAC7C,UAAM,iBAAiB,OAAO,MAAM,UAAU,UAAU,KAAK,CAAC;AAC9D,QAAI,eAAe,WAAW,GAAG;AAC7B;AAAA,IACJ;AAEA,UAAM,oBAAoB,WAAW,WAAW;AAChD,UAAM,iBAAiB,eAAe,KAAK,OAAK,EAAE,OAAO,mBAAmB,MAAM;AAElF,WAAO,iBAAiB,eAAe,KAAK,CAAC,IAAI;AAAA,EACrD;AAEA,QAAM,WAAW,CAAC,aAAqB,MAAM,QAAQ;AAErD,QAAM,aAAa,CAAC,aAA8B;AAC9C,UAAM,kBAAkB,SAAS,aAAa;AAC9C,UAAM,qBAAqB,SAAS,gBAAgB;AAEpD,QAAI,OAAO,aAAa,UAAU;AAC9B,YAAMC,aAAY,GAAG,QAAQ;AAC7B,YAAMC,UAAS,SAASD,UAAS;AAEjC,UAAI,CAACC,SAAQ;AACT,cAAM,IAAI,MAAM,UAAU,QAAQ,YAAY;AAAA,MAClD;AAIA,UAAI,cAAc;AAClB,UAAI,oBAAoB;AACpB,cAAM,UAAU,mBAAmB,OAAO;AAAA,UACtC,OAAK,EAAE,SAAS,oBAAoBA,QAAO;AAAA,QAC/C;AACA,YAAI,SAAS;AACT,wBAAc,QAAQ;AAAA,QAC1B;AAAA,MACJ;AAEA,UAAI,gBAAgB,MAAM,iBAAiB;AACvC,cAAM,SAAS,gBAAgB,OAAO;AAAA,UAClC,OAAK,EAAE,SAAS,iBAAiBA,QAAO;AAAA,QAC5C;AACA,YAAI,QAAQ;AACR,wBAAc,OAAO;AAAA,QACzB;AAAA,MACJ;AAEA,aAAO;AAAA,QACH,QAAAA;AAAA,QACA,aAAa,oBAAoBA,OAAM,KAAK;AAAA,QAC5C,aAAa;AAAA,MACjB;AAAA,IACJ;AAGA,QAAI,qBAAqB,iBAAiB,MAAM,QAAQ;AACxD,QAAI,CAAC,sBAAsB,oBAAoB;AAC3C,2BAAqB,mBAAmB,MAAM,QAAQ;AAAA,IAC1D;AAEA,QAAI,CAAC,oBAAoB;AACrB,YAAM,IAAI;AAAA,QACN,uBAAuB,QAAQ;AAAA,MACnC;AAAA,IACJ;AAEA,UAAM,cAAc,mBAAmB,KAClC,QAAQ,mBAAmB,EAAE,EAC7B,QAAQ,gBAAgB,EAAE;AAC/B,UAAM,YAAY,cAAc;AAChC,UAAM,SAAS,SAAS,SAAS;AAEjC,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI;AAAA,QACN,WAAW,WAAW,cAAc,QAAQ,2BAA2B,OAAO,KAAK,QAAQ,EAAE,MAAM;AAAA,MACvG;AAAA,IACJ;AAEA,WAAO;AAAA,MACH;AAAA,MACA,aAAa,oBAAoB,MAAM,KAAK;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AAEA,QAAMC,UAAS,CAAC,aAAqB,SAAkC;AACnE,UAAM,EAAE,QAAQ,YAAY,IAAI,WAAW,WAAW;AAEtD,UAAM,oBAAoB,sBAAsB,UAAU,QAAQ,IAAI;AACtE,QAAI;AACJ,QAAI;AACJ,QAAI;AACA,oBAAc,SAAS,QAAQ,iBAAmD;AAAA,IACtF,SAASC,MAAK;AAEV,cAAQ,IAAI,mDAAmD;AAAA,QAC3D;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,OAAQA,KAAc;AAAA,MAC1B,CAAC;AACD,YAAMA;AAAA,IACV;AACA,QAAI;AACA,qBAAe,SAAS,QAAQ,WAAW;AAAA,IAC/C,SAASA,MAAK;AAEV,cAAQ,IAAI,mDAAmD;AAAA,QAC3D;AAAA,QACA;AAAA,QACA,OAAQA,KAAc;AAAA,MAC1B,CAAC;AACD,YAAMA;AAAA,IACV;AAEA,YAAQ,IAAI,sCAAsC;AAAA,MAC9C;AAAA,MACA;AAAA,MACA,eAAe,OAAO,KAAK,IAAI;AAAA,MAC/B,gBAAgB,OAAO,KAAK,iBAAiB;AAAA,MAC7C,UAAU,OAAO,gBAAgB,YAAY,cAAc,OAAO,KAAK,WAAW,IAAI,CAAC;AAAA,MACvF,aAAa,aAAa;AAAA,MAC1B,WAAWJ,QAAO,KAAK,YAAY,EAAE,SAAS,KAAK;AAAA,IACvD,CAAC;AAED,WAAO;AAAA,MACH;AAAA,MACA,SAASA,QAAO,KAAK,YAAY;AAAA,IACrC;AAAA,EACJ;AAEA,QAAMK,UAAS,CAAC,MAAuB,SAA8B;AACjE,UAAM,EAAE,QAAQ,YAAY,IAAI,WAAW,IAAI;AAC/C,UAAM,gBAAgBL,QAAO,SAAS,IAAI,IAAI,OAAOA,QAAO,KAAK,IAAI;AAIrE,UAAM,iBACF,gBAAgB,aAChB,cAAc,SAAS,GAAG,CAAC,EAAE,QAAQA,QAAO,KAAK,QAAQ,KAAK,CAAC,MAAM,IAC/D,cAAc,SAAS,GAAG,CAAC,IAC3B;AAEV,QAAI;AACJ,QAAI;AACA,gBAAU,WAAW,QAAQ,gBAAgB,EAAE,mBAAmB,MAAM,CAAC;AAAA,IAC7E,SAASI,MAAK;AAEV,cAAQ,IAAI,qDAAqD;AAAA,QAC7D;AAAA,QACA;AAAA,QACA,UAAU,cAAc,SAAS,KAAK;AAAA,QACtC,OAAQA,KAAc;AAAA,MAC1B,CAAC;AACD,YAAMA;AAAA,IACV;AACA,UAAM,OAAO,OAAO,QAAQ,SAAS,EAAE,mBAAmB,KAAK,CAAC;AAChE,UAAM,UAAU,sBAAsB,UAAU,QAAQ,IAA+B;AAEvF,YAAQ,IAAI,sCAAsC;AAAA,MAC9C;AAAA,MACA;AAAA,MACA,YAAY,cAAc;AAAA,MAC1B,UAAU,cAAc,SAAS,KAAK;AAAA,MACtC,YAAY,OAAO,YAAY,YAAY,UAAU,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,IACjF,CAAC;AAED,WAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAAD;AAAA,IACA,QAAAE;AAAA,EACJ;AACJ;;;ADvWO,IAAM,kBAAkB,gBAAgB;;;AqCH/C;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,IAAM,eAAe;AAAA,EACxB;AAAA,EACA,CAAC,+BAA+B;AACpC;AACO,IAAM,UAAU,QAAQ,cAAc,CAAC;AACvC,IAAM,WAAW,QAAQ,cAAc,CAAC;AACxC,IAAM,gBAAgB,QAAQ,cAAc,CAAC;AAC7C,IAAM,iBAAiB,QAAQ,cAAc,CAAC;AAC9C,IAAM,YAAY,QAAQ,cAAc,CAAC;AACzC,IAAM,kBAAkB,QAAQ,cAAc,CAAC;AAC/C,IAAM,cAAc,QAAQ,cAAc,CAAC;AAC3C,IAAM,eAAe,QAAQ,cAAc,CAAC;AAC5C,IAAM,0BAA0B,QAAQ,cAAc,CAAC;AACvD,IAAM,YAAY,QAAQ,cAAc,CAAC;AACzC,IAAM,uBAAuB,QAAQ,cAAc,EAAE;AACrD,IAAM,YAAY,QAAQ,cAAc,EAAE;AAC1C,IAAM,gBAAgB,QAAQ,cAAc,EAAE;AAC9C,IAAM,qBAAqB,QAAQ,cAAc,EAAE;AACnD,IAAM,0BAA0B,QAAQ,cAAc,EAAE;;;ADjBxD,IAAM,uBAAuB;AAAA,EAChC;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,gBAAgB,YAAY,sBAAsB,CAAC;AACzD,IAAM,gBAAgB,YAAY,sBAAsB,CAAC;AACzD,IAAM,4BAA4B,SAAS,sBAAsB,GAAG,CAAC;AACrE,IAAM,sBAAsB,OAAO,yBAAyB;AAC5D,IAAM,sBAAsB,YAAY,sBAAsB,CAAC;AAC/D,IAAM,wCAAwC,SAAS,sBAAsB,GAAG,CAAC;AACjF,IAAM,kCAAkC,OAAO,qCAAqC;AACpF,IAAM,kBAAkB,YAAY,sBAAsB,CAAC;AAC3D,IAAM,yBAAyB,YAAY,sBAAsB,CAAC;AAClE,IAAM,8CAA8C,SAAS,sBAAsB,GAAG,CAAC;AACvF,IAAM,wCAAwC;AAAA,EACjD;AACJ;AACO,IAAM,qBAAqB,YAAY,sBAAsB,CAAC;AAC9D,IAAM,0BAA0B,YAAY,sBAAsB,CAAC;AACnE,IAAM,sBAAsB,YAAY,sBAAsB,CAAC;AAC/D,IAAM,0CAA0C,YAAY,sBAAsB,CAAC;AACnF,IAAM,sCAAsC,YAAY,sBAAsB,CAAC;AAC/E,IAAM,mBAAmB,YAAY,sBAAsB,EAAE;AAC7D,IAAM,uBAAuB,YAAY,sBAAsB,EAAE;AACjE,IAAM,0CAA0C,YAAY,sBAAsB,IAAI,CAAC;AACvF,IAAM,gCAAgC,YAAY,sBAAsB,IAAI,CAAC;AAC7E,IAAM,uCAAuC,YAAY,sBAAsB,IAAI,CAAC;AACpF,IAAM,kCAAkC,YAAY,sBAAsB,IAAI,CAAC;AAC/E,IAAM,wCAAwC,YAAY,sBAAsB,IAAI,CAAC;;;AD3BrF,IAAM,wBAAwB;AAAA,EACjC;AAAA,EACA,CAAC,sBAAsB,YAAY;AACvC;AACO,IAAM,iCAAiC,YAAY,uBAAuB,CAAC;AAC3E,IAAM,gDAAgD;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,qBAAqB,YAAY,uBAAuB,CAAC;AAC/D,IAAM,kBAAkB,YAAY,uBAAuB,CAAC;AAC5D,IAAM,mBAAmB,YAAY,uBAAuB,CAAC;AAC7D,IAAM,gBAAgB,YAAY,uBAAuB,CAAC;AAC1D,IAAM,uBAAuB,YAAY,uBAAuB,CAAC;AACjE,IAAM,oBAAoB,YAAY,uBAAuB,CAAC;AAC9D,IAAM,oBAAoB,YAAY,uBAAuB,CAAC;AAC9D,IAAM,yBAAyB,YAAY,uBAAuB,CAAC;AACnE,IAAM,sBAAsB,YAAY,uBAAuB,CAAC;AAChE,IAAM,eAAe,YAAY,uBAAuB,EAAE;AAC1D,IAAM,+BAA+B,YAAY,uBAAuB,IAAI,CAAC;AAC7E,IAAM,kBAAkB,YAAY,uBAAuB,EAAE;AAC7D,IAAM,uCAAuC,YAAY,uBAAuB,IAAI,CAAC;AACrF,IAAM,0CAA0C,YAAY,uBAAuB,IAAI,CAAC;AACxF,IAAM,8BAA8B,SAAS,uBAAuB,IAAI,CAAC;AACzE,IAAM,wBAAwB,OAAO,2BAA2B;AAChE,IAAM,cAAc,YAAY,uBAAuB,EAAE;AACzD,IAAM,8BAA8B,YAAY,uBAAuB,IAAI,CAAC;AAC5E,IAAM,0CAA0C,YAAY,uBAAuB,IAAI,GAAG,CAAC;AAC3F,IAAM,8CAA8C;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,2CAA2C;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,gBAAgB,YAAY,uBAAuB,EAAE;AAC3D,IAAM,iBAAiB,YAAY,uBAAuB,EAAE;AAC5D,IAAM,eAAe,YAAY,uBAAuB,EAAE;AAC1D,IAAM,kBAAkB,YAAY,uBAAuB,EAAE;AAC7D,IAAM,mBAAmB,YAAY,uBAAuB,EAAE;AAC9D,IAAM,mBAAmB,YAAY,uBAAuB,EAAE;AAC9D,IAAM,qCAAqC,YAAY,uBAAuB,IAAI,CAAC;AACnF,IAAM,oBAAoB,YAAY,uBAAuB,EAAE;AAC/D,IAAM,uCAAuC,YAAY,uBAAuB,IAAI,CAAC;AACrF,IAAM,sBAAsB,YAAY,uBAAuB,EAAE;AACjE,IAAM,uBAAuB,YAAY,uBAAuB,EAAE;AAClE,IAAM,6CAA6C,YAAY,uBAAuB,IAAI,CAAC;AAC3F,IAAM,wBAAwB,YAAY,uBAAuB,EAAE;AACnE,IAAM,+CAA+C;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,2BAA2B,YAAY,uBAAuB,EAAE;AACtE,IAAM,qDAAqD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,0BAA0B,YAAY,uBAAuB,EAAE;AACrE,IAAM,uBAAuB,YAAY,uBAAuB,EAAE;AAClE,IAAM,0BAA0B,YAAY,uBAAuB,EAAE;AACrE,IAAM,wBAAwB,SAAS,uBAAuB,CAAC;AAC/D,IAAM,kBAAkB,OAAO,qBAAqB;AACpD,IAAM,yBAAyB,SAAS,uBAAuB,CAAC;AAChE,IAAM,mBAAmB,OAAO,sBAAsB;AACtD,IAAM,+BAA+B,SAAS,uBAAuB,CAAC;AACtE,IAAM,yBAAyB,OAAO,4BAA4B;AAClE,IAAM,mBAAmB,SAAS,uBAAuB,CAAC;AAC1D,IAAM,aAAa,OAAO,gBAAgB;AAC1C,IAAM,6BAA6B,SAAS,uBAAuB,CAAC;AACpE,IAAM,uBAAuB,OAAO,0BAA0B;;;AGnFrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,oBAAoB;AAAA,EAC7B;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,kBAAkB,YAAY,mBAAmB,CAAC;;;ACT/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,2BAA2B;AAAA,EACpC;AACJ;AACO,IAAM,sBAAsB,YAAY,0BAA0B,CAAC;AACnE,IAAM,wBAAwB,YAAY,0BAA0B,CAAC;AACrE,IAAM,uBAAuB,YAAY,0BAA0B,CAAC;AACpE,IAAM,mBAAmB,YAAY,0BAA0B,CAAC;;;ACTvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,wBAAwB;AAAA,EACjC;AAAA,EACA,CAAC,oBAAoB;AACzB;AACO,IAAM,qCAAqC,YAAY,uBAAuB,CAAC;AAC/E,IAAM,4BAA4B,YAAY,uBAAuB,CAAC;AACtE,IAAM,mCAAmC,YAAY,uBAAuB,CAAC;AAC7E,IAAM,gCAAgC,YAAY,uBAAuB,CAAC;AAC1E,IAAM,qCAAqC,YAAY,uBAAuB,CAAC;AAC/E,IAAM,0BAA0B,YAAY,uBAAuB,CAAC;AACpE,IAAM,uBAAuB,YAAY,uBAAuB,CAAC;AACjE,IAAM,4BAA4B,YAAY,uBAAuB,CAAC;AACtE,IAAM,yBAAyB,YAAY,uBAAuB,CAAC;AACnE,IAAM,0BAA0B,YAAY,uBAAuB,CAAC;AACpE,IAAM,uBAAuB,YAAY,uBAAuB,EAAE;AAClE,IAAM,wBAAwB,YAAY,uBAAuB,EAAE;AACnE,IAAM,0BAA0B,YAAY,uBAAuB,EAAE;AACrE,IAAM,qBAAqB,YAAY,uBAAuB,EAAE;AAChE,IAAM,kCAAkC,YAAY,uBAAuB,EAAE;AAC7E,IAAM,sCAAsC,YAAY,uBAAuB,EAAE;AACjF,IAAM,yBAAyB,YAAY,uBAAuB,EAAE;AACpE,IAAM,mCAAmC,YAAY,uBAAuB,EAAE;AAC9E,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,kCAAkC,YAAY,uBAAuB,EAAE;AAC7E,IAAM,oBAAoB,YAAY,uBAAuB,EAAE;AAC/D,IAAM,6BAA6B,YAAY,uBAAuB,EAAE;AACxE,IAAM,4BAA4B,YAAY,uBAAuB,EAAE;AACvE,IAAM,2CAA2C,YAAY,uBAAuB,EAAE;AACtF,IAAM,+CAA+C,YAAY,uBAAuB,EAAE;AAC1F,IAAM,+BAA+B,YAAY,uBAAuB,EAAE;AAC1E,IAAM,sBAAsB,YAAY,uBAAuB,EAAE;AACjE,IAAM,iCAAiC,YAAY,uBAAuB,EAAE;AAC5E,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,yBAAyB,YAAY,uBAAuB,EAAE;AACpE,IAAM,yCAAyC,YAAY,uBAAuB,EAAE;AACpF,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,iCAAiC,YAAY,uBAAuB,EAAE;AAC5E,IAAM,yBAAyB,YAAY,uBAAuB,EAAE;AACpE,IAAM,0BAA0B,YAAY,uBAAuB,EAAE;AACrE,IAAM,8BAA8B,YAAY,uBAAuB,EAAE;AACzE,IAAM,+BAA+B,YAAY,uBAAuB,EAAE;AAC1E,IAAM,kCAAkC,YAAY,uBAAuB,EAAE;AAC7E,IAAM,mCAAmC,YAAY,uBAAuB,EAAE;AAC9E,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,8BAA8B,SAAS,uBAAuB,CAAC;AACrE,IAAM,wBAAwB,OAAO,2BAA2B;AAChE,IAAM,2BAA2B,SAAS,uBAAuB,CAAC;AAClE,IAAM,qBAAqB,OAAO,wBAAwB;AAC1D,IAAM,gCAAgC,SAAS,uBAAuB,CAAC;AACvE,IAAM,0BAA0B,OAAO,6BAA6B;AACpE,IAAM,6CAA6C,SAAS,uBAAuB,CAAC;AACpF,IAAM,uCAAuC;AAAA,EAChD;AACJ;AACO,IAAM,2CAA2C,SAAS,uBAAuB,CAAC;AAClF,IAAM,qCAAqC,OAAO,wCAAwC;AAC1F,IAAM,+BAA+B,SAAS,uBAAuB,CAAC;AACtE,IAAM,yBAAyB,OAAO,4BAA4B;AAClE,IAAM,wBAAwB,SAAS,uBAAuB,CAAC;AAC/D,IAAM,kBAAkB,OAAO,qBAAqB;AACpD,IAAM,6BAA6B,SAAS,uBAAuB,CAAC;AACpE,IAAM,uBAAuB,OAAO,0BAA0B;AAC9D,IAAM,6CAA6C,SAAS,uBAAuB,CAAC;AACpF,IAAM,uCAAuC;AAAA,EAChD;AACJ;AACO,IAAM,uCAAuC,SAAS,uBAAuB,CAAC;AAC9E,IAAM,iCAAiC,OAAO,oCAAoC;AAClF,IAAM,6BAA6B,SAAS,uBAAuB,EAAE;AACrE,IAAM,uBAAuB,OAAO,0BAA0B;AAC9D,IAAM,6BAA6B,SAAS,uBAAuB,EAAE;AACrE,IAAM,uBAAuB,OAAO,0BAA0B;;;AC7ErE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,IAAM,uBAAuB;AAAA,EAChC;AAAA,EACA,CAAC,sBAAsB,YAAY;AACvC;AACO,IAAM,uBAAuB,YAAY,sBAAsB,CAAC;AAChE,IAAM,yBAAyB,YAAY,sBAAsB,CAAC;AAClE,IAAM,qBAAqB,YAAY,sBAAsB,CAAC;AAC9D,IAAM,qBAAqB,YAAY,sBAAsB,CAAC;AAC9D,IAAM,uBAAuB,YAAY,sBAAsB,CAAC;AAChE,IAAM,0BAA0B,YAAY,sBAAsB,CAAC;AACnE,IAAM,uBAAuB,YAAY,sBAAsB,CAAC;AAChE,IAAM,4BAA4B,YAAY,sBAAsB,CAAC;;;ACjB5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,2BAA2B;AAAA,EACpC;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,mBAAmB,YAAY,0BAA0B,CAAC;AAChE,IAAM,oBAAoB,YAAY,0BAA0B,CAAC;AACjE,IAAM,iBAAiB,YAAY,0BAA0B,CAAC;AAC9D,IAAM,oCAAoC,SAAS,0BAA0B,GAAG,CAAC;AACjF,IAAM,8BAA8B,OAAO,iCAAiC;AAC5E,IAAM,gCAAgC,SAAS,0BAA0B,GAAG,CAAC;AAC7E,IAAM,0BAA0B,OAAO,6BAA6B;AACpE,IAAM,4BAA4B,SAAS,0BAA0B,GAAG,CAAC;AACzE,IAAM,sBAAsB,OAAO,yBAAyB;AAC5D,IAAM,mBAAmB,YAAY,0BAA0B,CAAC;AAChE,IAAM,gBAAgB,YAAY,0BAA0B,CAAC;AAC7D,IAAM,mBAAmB,YAAY,0BAA0B,CAAC;AAChE,IAAM,sBAAsB,YAAY,0BAA0B,CAAC;AACnE,IAAM,uBAAuB,YAAY,0BAA0B,CAAC;AACpE,IAAM,yBAAyB,YAAY,0BAA0B,CAAC;AACtE,IAAM,qBAAqB,YAAY,0BAA0B,CAAC;AAClE,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,kBAAkB,YAAY,0BAA0B,EAAE;AAChE,IAAM,uBAAuB,YAAY,0BAA0B,EAAE;AACrE,IAAM,kBAAkB,YAAY,0BAA0B,EAAE;AAChE,IAAM,yCAAyC,SAAS,0BAA0B,IAAI,CAAC;AACvF,IAAM,mCAAmC,OAAO,sCAAsC;AACtF,IAAM,aAAa,YAAY,0BAA0B,EAAE;AAC3D,IAAM,eAAe,YAAY,0BAA0B,EAAE;AAC7D,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,gBAAgB,YAAY,0BAA0B,EAAE;AAC9D,IAAM,wBAAwB,YAAY,0BAA0B,EAAE;AACtE,IAAM,qBAAqB,YAAY,0BAA0B,EAAE;AACnE,IAAM,2BAA2B,YAAY,0BAA0B,EAAE;AACzE,IAAM,0BAA0B,YAAY,0BAA0B,EAAE;AACxE,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,oBAAoB,YAAY,0BAA0B,EAAE;AAClE,IAAM,qBAAqB,YAAY,0BAA0B,EAAE;AACnE,IAAM,iCAAiC,YAAY,0BAA0B,IAAI,CAAC;AAClF,IAAM,uBAAuB,YAAY,0BAA0B,EAAE;AACrE,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,0BAA0B,YAAY,0BAA0B,EAAE;AACxE,IAAM,6BAA6B,YAAY,0BAA0B,EAAE;AAC3E,IAAM,uBAAuB,YAAY,0BAA0B,EAAE;AACrE,IAAM,iDAAiD;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,2CAA2C;AAAA,EACpD;AACJ;AACO,IAAM,oBAAoB,YAAY,0BAA0B,EAAE;AAClE,IAAM,oCAAoC,SAAS,0BAA0B,IAAI,CAAC;AAClF,IAAM,8BAA8B,OAAO,iCAAiC;AAC5E,IAAM,gBAAgB,YAAY,0BAA0B,EAAE;AAC9D,IAAM,sBAAsB,YAAY,0BAA0B,EAAE;AACpE,IAAM,0BAA0B,YAAY,0BAA0B,EAAE;AACxE,IAAM,uBAAuB,YAAY,0BAA0B,EAAE;AACrE,IAAM,wBAAwB,YAAY,0BAA0B,EAAE;AACtE,IAAM,6BAA6B,YAAY,0BAA0B,EAAE;AAC3E,IAAM,4BAA4B,YAAY,0BAA0B,EAAE;AAC1E,IAAM,2BAA2B,YAAY,0BAA0B,EAAE;AACzE,IAAM,uCAAuC,SAAS,0BAA0B,IAAI,CAAC;AACrF,IAAM,iCAAiC,OAAO,oCAAoC;AAClF,IAAM,iBAAiB,YAAY,0BAA0B,EAAE;AAC/D,IAAM,cAAc,YAAY,0BAA0B,EAAE;AAC5D,IAAM,mBAAmB,YAAY,0BAA0B,EAAE;AACjE,IAAM,4BAA4B,YAAY,0BAA0B,EAAE;AAC1E,IAAM,2BAA2B,YAAY,0BAA0B,EAAE;AACzE,IAAM,yBAAyB,YAAY,0BAA0B,EAAE;AACvE,IAAM,sBAAsB,YAAY,0BAA0B,EAAE;AACpE,IAAM,wBAAwB,YAAY,0BAA0B,EAAE;AACtE,IAAM,qBAAqB,YAAY,0BAA0B,EAAE;AACnE,IAAM,mBAAmB,SAAS,0BAA0B,CAAC;AAC7D,IAAM,aAAa,OAAO,gBAAgB;AAC1C,IAAM,qBAAqB,SAAS,0BAA0B,CAAC;AAC/D,IAAM,eAAe,OAAO,kBAAkB;AAC9C,IAAM,yBAAyB,SAAS,0BAA0B,CAAC;AACnE,IAAM,mBAAmB,OAAO,sBAAsB;AACtD,IAAM,wBAAwB,SAAS,0BAA0B,CAAC;AAClE,IAAM,kBAAkB,OAAO,qBAAqB;AACpD,IAAM,yBAAyB,SAAS,0BAA0B,CAAC;AACnE,IAAM,mBAAmB,OAAO,sBAAsB;AACtD,IAAM,qBAAqB,SAAS,0BAA0B,CAAC;AAC/D,IAAM,eAAe,OAAO,kBAAkB;;;ADnF9C,IAAM,sBAAsB;AAAA,EAC/B;AAAA,EACA,CAAC,sBAAsB,0BAA0B,YAAY;AACjE;AACO,IAAM,0BAA0B,YAAY,qBAAqB,CAAC;AAClE,IAAM,8CAA8C,SAAS,qBAAqB,GAAG,CAAC;AACtF,IAAM,wCAAwC;AAAA,EACjD;AACJ;AACO,IAAM,sCAAsC,SAAS,qBAAqB,GAAG,CAAC;AAC9E,IAAM,gCAAgC,OAAO,mCAAmC;AAChF,IAAM,8CAA8C,SAAS,qBAAqB,GAAG,CAAC;AACtF,IAAM,wCAAwC;AAAA,EACjD;AACJ;AACO,IAAM,8CAA8C,SAAS,qBAAqB,GAAG,CAAC;AACtF,IAAM,wCAAwC;AAAA,EACjD;AACJ;AACO,IAAM,wBAAwB,YAAY,qBAAqB,CAAC;AAChE,IAAM,8BAA8B,YAAY,qBAAqB,CAAC;AACtE,IAAM,8BAA8B,YAAY,qBAAqB,CAAC;AACtE,IAAM,0BAA0B,YAAY,qBAAqB,CAAC;AAClE,IAAM,wCAAwC,SAAS,qBAAqB,GAAG,CAAC;AAChF,IAAM,kCAAkC,OAAO,qCAAqC;AACpF,IAAM,uBAAuB,YAAY,qBAAqB,CAAC;AAC/D,IAAM,gCAAgC,YAAY,qBAAqB,CAAC;AACxE,IAAM,6BAA6B,YAAY,qBAAqB,CAAC;AACrE,IAAM,sBAAsB,YAAY,qBAAqB,CAAC;AAC9D,IAAM,qBAAqB,YAAY,qBAAqB,CAAC;AAC7D,IAAM,4BAA4B,YAAY,qBAAqB,EAAE;AACrE,IAAM,wBAAwB,YAAY,qBAAqB,EAAE;AACjE,IAAM,6BAA6B,YAAY,qBAAqB,EAAE;AACtE,IAAM,4BAA4B,YAAY,qBAAqB,EAAE;AACrE,IAAM,6BAA6B,YAAY,qBAAqB,EAAE;AACtE,IAAM,iCAAiC,YAAY,qBAAqB,EAAE;AAC1E,IAAM,6BAA6B,YAAY,qBAAqB,EAAE;AACtE,IAAM,kCAAkC,YAAY,qBAAqB,EAAE;AAC3E,IAAM,iCAAiC,YAAY,qBAAqB,EAAE;AAC1E,IAAM,2BAA2B,YAAY,qBAAqB,EAAE;AACpE,IAAM,wBAAwB,YAAY,qBAAqB,EAAE;AACjE,IAAM,4CAA4C,YAAY,qBAAqB,IAAI,CAAC;AACxF,IAAM,8BAA8B,YAAY,qBAAqB,EAAE;AACvE,IAAM,+BAA+B,YAAY,qBAAqB,EAAE;AACxE,IAAM,2BAA2B,YAAY,qBAAqB,EAAE;AACpE,IAAM,0BAA0B,YAAY,qBAAqB,EAAE;AACnE,IAAM,8BAA8B,YAAY,qBAAqB,EAAE;;;AErD9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,4BAA4B;AAAA,EACrC;AACJ;AACO,IAAM,4BAA4B,YAAY,2BAA2B,CAAC;AAC1E,IAAM,0BAA0B,YAAY,2BAA2B,CAAC;AACxE,IAAM,wBAAwB,YAAY,2BAA2B,CAAC;AACtE,IAAM,uBAAuB,SAAS,2BAA2B,CAAC;AAClE,IAAM,iBAAiB,OAAO,oBAAoB;;;ACVzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,oBAAoB;AAAA,EAC7B;AACJ;AACO,IAAM,wBAAwB,YAAY,mBAAmB,CAAC;AAC9D,IAAM,qBAAqB,YAAY,mBAAmB,CAAC;AAC3D,IAAM,kBAAkB,YAAY,mBAAmB,CAAC;AACxD,IAAM,8BAA8B,YAAY,mBAAmB,GAAG,CAAC;AACvE,IAAM,2BAA2B,YAAY,mBAAmB,CAAC;AACjE,IAAM,uBAAuB,YAAY,mBAAmB,CAAC;AAC7D,IAAM,gCAAgC,YAAY,mBAAmB,GAAG,CAAC;AACzE,IAAM,0CAA0C,YAAY,mBAAmB,GAAG,CAAC;AACnF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,CAAC;AACpF,IAAM,+CAA+C,YAAY,mBAAmB,GAAG,CAAC;AACxF,IAAM,4CAA4C,YAAY,mBAAmB,GAAG,CAAC;AACrF,IAAM,wCAAwC,YAAY,mBAAmB,GAAG,CAAC;AACjF,IAAM,uCAAuC,YAAY,mBAAmB,GAAG,CAAC;AAChF,IAAM,yCAAyC,YAAY,mBAAmB,GAAG,CAAC;AAClF,IAAM,yCAAyC,YAAY,mBAAmB,GAAG,CAAC;AAClF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,CAAC;AACpF,IAAM,uCAAuC,YAAY,mBAAmB,GAAG,EAAE;AACjF,IAAM,uCAAuC,YAAY,mBAAmB,GAAG,EAAE;AACjF,IAAM,4CAA4C,YAAY,mBAAmB,GAAG,EAAE;AACtF,IAAM,wCAAwC,YAAY,mBAAmB,GAAG,EAAE;AAClF,IAAM,6CAA6C,YAAY,mBAAmB,GAAG,EAAE;AACvF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,EAAE;AACrF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,EAAE;AACrF,IAAM,yCAAyC,YAAY,mBAAmB,GAAG,EAAE;AACnF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,EAAE;AACrF,IAAM,2CAA2C,YAAY,mBAAmB,GAAG,EAAE;AACrF,IAAM,wCAAwC,YAAY,mBAAmB,GAAG,EAAE;AAClF,IAAM,oBAAoB,YAAY,mBAAmB,CAAC;;;ACjCjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,yBAAyB;AAAA,EAClC;AAAA,EACA,CAAC,oBAAoB;AACzB;AACO,IAAM,6BAA6B,YAAY,wBAAwB,CAAC;AACxE,IAAM,0BAA0B,YAAY,wBAAwB,CAAC;AACrE,IAAM,2BAA2B,YAAY,wBAAwB,CAAC;AACtE,IAAM,wBAAwB,YAAY,wBAAwB,CAAC;AACnE,IAAM,uBAAuB,YAAY,wBAAwB,CAAC;AAClE,IAAM,8BAA8B,YAAY,wBAAwB,CAAC;AACzE,IAAM,iDAAiD;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,0BAA0B,YAAY,wBAAwB,CAAC;AACrE,IAAM,sBAAsB,YAAY,wBAAwB,CAAC;AACjE,IAAM,4BAA4B,YAAY,wBAAwB,CAAC;AACvE,IAAM,iCAAiC,YAAY,wBAAwB,CAAC;AAC5E,IAAM,8BAA8B,YAAY,wBAAwB,EAAE;AAC1E,IAAM,8BAA8B,YAAY,wBAAwB,EAAE;AAC1E,IAAM,mCAAmC,YAAY,wBAAwB,EAAE;AAC/E,IAAM,4BAA4B,YAAY,wBAAwB,EAAE;;;ADtBxE,IAAM,gCAAgC;AAAA,EACzC;AAAA,EACA,CAAC,sBAAsB;AAC3B;AACO,IAAM,8BAA8B,YAAY,+BAA+B,CAAC;AAChF,IAAM,uCAAuC,YAAY,+BAA+B,CAAC;AACzF,IAAM,mCAAmC,YAAY,+BAA+B,CAAC;AACrF,IAAM,wDAAwD;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,qDAAqD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,oDAAoD;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,8CAA8C;AAAA,EACvD;AACJ;AACO,IAAM,sCAAsC,YAAY,+BAA+B,CAAC;AACxF,IAAM,kCAAkC,YAAY,+BAA+B,CAAC;;;AE/B3F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,sBAAsB;AAAA,EAC/B;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,qBAAqB,YAAY,qBAAqB,CAAC;AAC7D,IAAM,kBAAkB,YAAY,qBAAqB,CAAC;AAC1D,IAAM,qCAAqC,YAAY,qBAAqB,CAAC;AAC7E,IAAM,iCAAiC,YAAY,qBAAqB,CAAC;AACzE,IAAM,qCAAqC,YAAY,qBAAqB,CAAC;AAC7E,IAAM,kCAAkC,YAAY,qBAAqB,CAAC;AAC1E,IAAM,6BAA6B,YAAY,qBAAqB,CAAC;AACrE,IAAM,qCAAqC,YAAY,qBAAqB,CAAC;;;AChBpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,uBAAuB;AAAA,EAChC;AACJ;AACO,IAAM,qCAAqC,YAAY,sBAAsB,CAAC;AAC9E,IAAM,uDAAuD;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,0EAA0E;AAAA,EACnF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,yDAAyD;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,0CAA0C,YAAY,sBAAsB,CAAC;AACnF,IAAM,qEAAqE;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,kCAAkC,YAAY,sBAAsB,CAAC;AAC3E,IAAM,yBAAyB,YAAY,sBAAsB,CAAC;AAClE,IAAM,sBAAsB,YAAY,sBAAsB,CAAC;AAC/D,IAAM,0BAA0B,YAAY,sBAAsB,CAAC;AACnE,IAAM,uBAAuB,YAAY,sBAAsB,CAAC;AAChE,IAAM,qCAAqC,YAAY,sBAAsB,CAAC;AAC9E,IAAM,2DAA2D;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,iCAAiC,YAAY,sBAAsB,CAAC;AAC1E,IAAM,yCAAyC,YAAY,sBAAsB,CAAC;AAClF,IAAM,qCAAqC,YAAY,sBAAsB,EAAE;AAC/E,IAAM,0CAA0C,YAAY,sBAAsB,EAAE;AACpF,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,6CAA6C,YAAY,sBAAsB,EAAE;AACvF,IAAM,yCAAyC,YAAY,sBAAsB,EAAE;AACnF,IAAM,0CAA0C,YAAY,sBAAsB,EAAE;AACpF,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,0CAA0C,YAAY,sBAAsB,EAAE;AACpF,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,sDAAsD;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,0CAA0C,YAAY,sBAAsB,EAAE;AACpF,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,kCAAkC,YAAY,sBAAsB,EAAE;AAC5E,IAAM,wCAAwC,YAAY,sBAAsB,EAAE;AAClF,IAAM,oEAAoE;AAAA,EAC7E;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,oCAAoC,YAAY,sBAAsB,EAAE;AAC9E,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,4DAA4D;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,kCAAkC,YAAY,sBAAsB,EAAE;AAC5E,IAAM,yDAAyD;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,uCAAuC,YAAY,sBAAsB,EAAE;AACjF,IAAM,mCAAmC,YAAY,sBAAsB,EAAE;AAC7E,IAAM,8BAA8B,YAAY,sBAAsB,EAAE;AACxE,IAAM,0BAA0B,YAAY,sBAAsB,EAAE;AACpE,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,kCAAkC,YAAY,sBAAsB,EAAE;AAC5E,IAAM,qCAAqC,YAAY,sBAAsB,EAAE;AAC/E,IAAM,iCAAiC,YAAY,sBAAsB,EAAE;AAC3E,IAAM,sCAAsC,YAAY,sBAAsB,EAAE;AAChF,IAAM,kCAAkC,YAAY,sBAAsB,EAAE;AAC5E,IAAM,+BAA+B,YAAY,sBAAsB,EAAE;AACzE,IAAM,2BAA2B,YAAY,sBAAsB,EAAE;AACrE,IAAM,0BAA0B,SAAS,sBAAsB,CAAC;AAChE,IAAM,oBAAoB,OAAO,uBAAuB;;;AC5F/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,gBAAgB;AAAA,EACzB;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,oBAAoB,SAAS,eAAe,CAAC;AACnD,IAAM,cAAc,OAAO,iBAAiB;;;ACVnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,uBAAuB;AAAA,EAChC;AAAA,EACA,CAAC,oBAAoB;AACzB;AACO,IAAM,yBAAyB,YAAY,sBAAsB,CAAC;AAClE,IAAM,sBAAsB,YAAY,sBAAsB,CAAC;AAC/D,IAAM,qBAAqB,YAAY,sBAAsB,CAAC;AAC9D,IAAM,mCAAmC,YAAY,sBAAsB,GAAG,CAAC;AAC/E,IAAM,uBAAuB,YAAY,sBAAsB,CAAC;;;ACbvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,uBAAuB;AAAA,EAChC;AAAA,EACA,CAAC,oBAAoB;AACzB;AACO,IAAM,2BAA2B,YAAY,sBAAsB,CAAC;AACpE,IAAM,wBAAwB,YAAY,sBAAsB,CAAC;AACjE,IAAM,yBAAyB,YAAY,sBAAsB,CAAC;AAClE,IAAM,sBAAsB,YAAY,sBAAsB,CAAC;AAC/D,IAAM,iCAAiC,YAAY,sBAAsB,CAAC;AAC1E,IAAM,+BAA+B,YAAY,sBAAsB,CAAC;AACxE,IAAM,qBAAqB,YAAY,sBAAsB,CAAC;AAC9D,IAAM,0BAA0B,YAAY,sBAAsB,CAAC;;;AChB1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,wBAAwB;AAAA,EACjC;AAAA,EACA,CAAC,oBAAoB;AACzB;AACO,IAAM,qBAAqB,YAAY,uBAAuB,CAAC;AAC/D,IAAM,0BAA0B,YAAY,uBAAuB,CAAC;AACpE,IAAM,uBAAuB,YAAY,uBAAuB,CAAC;AACjE,IAAM,sBAAsB,YAAY,uBAAuB,CAAC;AAChE,IAAM,sCAAsC,SAAS,uBAAuB,GAAG,CAAC;AAChF,IAAM,gCAAgC,OAAO,mCAAmC;AAChF,IAAM,2BAA2B,YAAY,uBAAuB,CAAC;AACrE,IAAM,yBAAyB,YAAY,uBAAuB,CAAC;AACnE,IAAM,+BAA+B,YAAY,uBAAuB,CAAC;AACzE,IAAM,0CAA0C,YAAY,uBAAuB,CAAC;AACpF,IAAM,uCAAuC,YAAY,uBAAuB,CAAC;AACjF,IAAM,iCAAiC,YAAY,uBAAuB,CAAC;AAC3E,IAAM,gCAAgC,YAAY,uBAAuB,EAAE;AAC3E,IAAM,wCAAwC,YAAY,uBAAuB,EAAE;AACnF,IAAM,4BAA4B,YAAY,uBAAuB,EAAE;AACvE,IAAM,8CAA8C,SAAS,uBAAuB,IAAI,CAAC;AACzF,IAAM,wCAAwC;AAAA,EACjD;AACJ;AACO,IAAM,6BAA6B,YAAY,uBAAuB,EAAE;AACxE,IAAM,4BAA4B,YAAY,uBAAuB,EAAE;AACvE,IAAM,8BAA8B,YAAY,uBAAuB,EAAE;AACzE,IAAM,4BAA4B,YAAY,uBAAuB,EAAE;AACvE,IAAM,8BAA8B,YAAY,uBAAuB,EAAE;AACzE,IAAM,uCAAuC,YAAY,uBAAuB,EAAE;AAClF,IAAM,wBAAwB,YAAY,uBAAuB,EAAE;AACnE,IAAM,yBAAyB,SAAS,uBAAuB,CAAC;AAChE,IAAM,mBAAmB,OAAO,sBAAsB;;;ACpC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,0BAA0B;AAAA,EACnC;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,qBAAqB,YAAY,yBAAyB,CAAC;AACjE,IAAM,kBAAkB,YAAY,yBAAyB,CAAC;;;ACVrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,sBAAsB;AAAA,EAC/B;AACJ;AACO,IAAM,wBAAwB,YAAY,qBAAqB,CAAC;AAChE,IAAM,qBAAqB,YAAY,qBAAqB,CAAC;AAC7D,IAAM,0BAA0B,YAAY,qBAAqB,CAAC;AAClE,IAAM,uBAAuB,YAAY,qBAAqB,CAAC;AAC/D,IAAM,oBAAoB,YAAY,qBAAqB,CAAC;AAC5D,IAAM,oCAAoC,YAAY,qBAAqB,GAAG,CAAC;AAC/E,IAAM,sDAAsD;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,gDAAgD;AAAA,EACzD;AACJ;AACO,IAAM,kCAAkC,YAAY,qBAAqB,GAAG,CAAC;AAC7E,IAAM,uCAAuC,YAAY,qBAAqB,GAAG,CAAC;AAClF,IAAM,8DAA8D;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,mFACT,YAAY,qBAAqB,GAAG,GAAG,GAAG,CAAC;AACxC,IAAM,uCAAuC,YAAY,qBAAqB,GAAG,CAAC;AAClF,IAAM,sCAAsC,YAAY,qBAAqB,GAAG,CAAC;AACjF,IAAM,oCAAoC,YAAY,qBAAqB,GAAG,CAAC;AAC/E,IAAM,kCAAkC,YAAY,qBAAqB,GAAG,CAAC;AAC7E,IAAM,kDAAkD;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,4CAA4C;AAAA,EACrD;AACJ;AACO,IAAM,sBAAsB,YAAY,qBAAqB,CAAC;;;AC5CrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,oBAAoB;AAAA,EAC7B;AAAA,EACA,CAAC,YAAY;AACjB;AACO,IAAM,4BAA4B,YAAY,mBAAmB,CAAC;AAClE,IAAM,8CAA8C,YAAY,mBAAmB,CAAC;AACpF,IAAM,4BAA4B,YAAY,mBAAmB,CAAC;AAClE,IAAM,0BAA0B,YAAY,mBAAmB,CAAC;AAChE,IAAM,kCAAkC,YAAY,mBAAmB,CAAC;AACxE,IAAM,wBAAwB,YAAY,mBAAmB,CAAC;AAC9D,IAAM,uCAAuC,YAAY,mBAAmB,CAAC;AAC7E,IAAM,+BAA+B,YAAY,mBAAmB,CAAC;AACrE,IAAM,8BAA8B,YAAY,mBAAmB,CAAC;AACpE,IAAM,gCAAgC,YAAY,mBAAmB,CAAC;AACtE,IAAM,iCAAiC,YAAY,mBAAmB,EAAE;AACxE,IAAM,2BAA2B,YAAY,mBAAmB,EAAE;AAClE,IAAM,qBAAqB,YAAY,mBAAmB,EAAE;AAC5D,IAAM,wBAAwB,YAAY,mBAAmB,EAAE;AAC/D,IAAM,sBAAsB,YAAY,mBAAmB,EAAE;AAC7D,IAAM,wBAAwB,YAAY,mBAAmB,EAAE;AAC/D,IAAM,6BAA6B,YAAY,mBAAmB,EAAE;AACpE,IAAM,8BAA8B,YAAY,mBAAmB,EAAE;AACrE,IAAM,sBAAsB,YAAY,mBAAmB,EAAE;AAC7D,IAAM,uBAAuB,YAAY,mBAAmB,EAAE;AAC9D,IAAM,8BAA8B,YAAY,mBAAmB,EAAE;AACrE,IAAM,6BAA6B,YAAY,mBAAmB,EAAE;AACpE,IAAM,uCAAuC,YAAY,mBAAmB,EAAE;AAC9E,IAAM,uBAAuB,YAAY,mBAAmB,EAAE;AAC9D,IAAM,2CAA2C,YAAY,mBAAmB,IAAI,CAAC;AACrF,IAAM,uBAAuB,SAAS,mBAAmB,CAAC;AAC1D,IAAM,iBAAiB,OAAO,oBAAoB;AAClD,IAAM,yBAAyB,SAAS,mBAAmB,CAAC;AAC5D,IAAM,mBAAmB,OAAO,sBAAsB;;;ACrC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,qBAAqB;AAAA,EAC9B;AACJ;AACO,IAAM,uBAAuB,YAAY,oBAAoB,CAAC;AAC9D,IAAM,oBAAoB,YAAY,oBAAoB,CAAC;AAC3D,IAAM,mBAAmB,YAAY,oBAAoB,CAAC;AAC1D,IAAM,4BAA4B,YAAY,oBAAoB,CAAC;AACnE,IAAM,6BAA6B,YAAY,oBAAoB,CAAC;AACpE,IAAM,gCAAgC,YAAY,oBAAoB,CAAC;AACvE,IAAM,yCAAyC,YAAY,oBAAoB,GAAG,CAAC;AACnF,IAAM,iCAAiC,YAAY,oBAAoB,CAAC;AACxE,IAAM,oCAAoC,YAAY,oBAAoB,CAAC;AAC3E,IAAM,sCAAsC,YAAY,oBAAoB,CAAC;AAC7E,IAAM,6BAA6B,YAAY,oBAAoB,CAAC;AACpE,IAAM,sBAAsB,YAAY,oBAAoB,EAAE;AAC9D,IAAM,2BAA2B,YAAY,oBAAoB,EAAE;AACnE,IAAM,2CAA2C,YAAY,oBAAoB,IAAI,CAAC;AACtF,IAAM,4DAA4D;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,+DAA+D;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,yDAAyD;AAAA,EAClE;AACJ;AACO,IAAM,yBAAyB,SAAS,oBAAoB,CAAC;AAC7D,IAAM,mBAAmB,OAAO,sBAAsB;;;AvBZtD,IAAM,qBAAqB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;;;AwBhDA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;AAAO,IAAM,qBAAqB;;;ACAlC;AAAO,IAAM,4BAA4B;AAClC,IAAM,sBAAsB;AAC5B,IAAM,cAAc,IAAI,IAAI,IAAI,IAAI;;;AFK3C,IAAM,oBAAoB,CAAC,WAAmB;AAE1C,QAAM,QAAQ,OAAO,UAAU;AAE/B,QAAM,SAAS,OAAO,UAAU,CAAC;AAEjC,QAAM,SAAS,OAAO,UAAU,CAAC;AAEjC,QAAM,cAAc,OAAO,aAAa,CAAC;AAEzC,QAAM,SAAS,OAAO,aAAa,CAAC;AAEpC,SAAO,EAAE,OAAO,QAAQ,QAAQ,aAAa,OAAO;AACxD;AAGO,IAAM,SAAkC,WAAS;AAGpD,MAAI,MAAM,eAAe,GAAG;AACxB,YAAQ,MAAM,4CAA4C;AAAA,EAC9D;AAEA,MAAI,MAAM,aAAa,aAAa;AAChC,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACtC;AAEA,QAAM,EAAE,OAAO,QAAQ,QAAQ,aAAa,OAAO,IAAI,kBAAkB,KAAK;AAE9E,MACI,UAAU,6BACV,WAAW,uBACX,WAAW,qBACb;AAEE,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACtC;AAEA,SAAO;AAAA,IACH,QAAQ,MAAM,SAAS,GAAG,CAAC;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,SAAS,MAAM,SAAS,WAAW;AAAA,EACvC;AACJ;;;AGnDA;AAIO,IAAM,aAA8C,MAAM;AAC7D,QAAM,SAASC,QAAO,MAAM,CAAC;AAE7B,SAAO,WAAW,2BAA2B,CAAC;AAE9C,SAAO,WAAW,qBAAqB,CAAC;AACxC,SAAO,WAAW,qBAAqB,CAAC;AAExC,QAAM,cAAcA,QAAO,MAAM,CAAC;AAClC,cAAY,WAAW,yBAAyB;AAEhD,SAAO,CAAC,QAAQ,WAAW;AAC/B;AAEO,IAAM,SAAsC,CAAC,MAAM,YAAY;AAClE,QAAM,EAAE,YAAY,IAAI;AACxB,QAAM,WAAW,cAAc,KAAK;AAEpC,QAAM,gBAAgBA,QAAO,MAAM,QAAQ;AAC3C,QAAM,CAAC,MAAM,IAAI,WAAW,IAAI;AAChC,SAAO,KAAK,aAAa;AAGzB,gBAAc,cAAc,aAAa,CAAC;AAG1C,gBAAc,cAAc,KAAK,QAAQ,CAAC;AAG1C,OAAK,KAAK,eAAe,WAAW;AAEpC,SAAO;AACX;;;AJlCO,IAAM,OAAO;;;AKFpB;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA;AAAA;;;ACAA;;;ACAA;AAAO,IAAMC,eAAc,IAAI;AACxB,IAAM,mBAAmB;AAGzB,IAAM,mBAAmB;AAAA,EAC5B,oBAAoB;AAAA;AAAA,EACpB,oBAAoB;AAAA;AAAA,EACpB,oBAAoB;AAAA;AAAA,EACpB,oBAAoB;AAAA;AAAA,EACpB,WAAW;AAAA;AAAA,EACX,aAAa;AAAA;AAAA,EACb,wBAAwB;AAAA;AAAA,EACxB,wBAAwB;AAAA;AAAA,EACxB,OAAO;AAAA;AAAA,EACP,MAAM;AAAA;AAAA,EACN,MAAM;AAAA;AAAA,EACN,qBAAqB;AAAA;AACzB;;;ACjBA;AAIA,IAAM,iBAAiB,CAAC,SAAiB;AAErC,MAAI,KAAK,aAAaC,cAAa;AAC/B,UAAM,IAAI,MAAa,kBAAkB;AAAA,EAC7C;AAEA,QAAM,UAAU,KAAK,SAAS,GAAGA,YAAW;AAC5C,QAAM,SAASC,QAAO,OAAO,CAACA,QAAO,KAAK,CAAC,iBAAiB,mBAAmB,CAAC,GAAG,OAAO,CAAC;AAE3F,SAAO;AACX;AAEO,IAAMC,cAA8C,UAAQ;AAC/D,QAAM,cAAc,eAAe,IAAI;AAEvC,SAAO,CAAC,KAAK,SAAS,GAAGF,YAAW,GAAG,WAAW;AACtD;AAGO,IAAMG,UAAsC,CAAC,MAAM,YAAY;AAClE,MAAI,CAAC,QAAQ,UAAU,QAAQ,OAAO,eAAeH,cAAa;AAC9D,UAAM,IAAI,MAAa,kBAAkB;AAAA,EAC7C;AAEA,QAAM,SAASC,QAAO,MAAM,gBAAgB;AAC5C,SAAO,cAAc,KAAK,MAAM;AAEhC,SAAOA,QAAO,OAAO,CAAC,QAAQ,QAAQ,QAAQ,IAAI,CAAC;AACvD;;;AFzBO,IAAM,iBAAiB,CAAC,aAAqB;AAEhD,QAAM,WAAW,WAAW;AAC5B,UAAQ,UAAU;AAAA,IACd,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAClB,aAAO;AAAA,EACf;AAGA,QAAM,UAAU,WAAW;AAC3B,MAAI,YAAY,iBAAiB,aAAa;AAC1C,WAAO;AAAA,EACX;AAGA,UAAQ,UAAU;AAAA,IACd,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAClB,aAAO;AAAA,EACf;AAEA,SAAO;AACX;AAGO,IAAMG,UAAkC,WAAS;AACpD,QAAM,SAASC,QAAO,KAAK,KAAK;AAGhC,MAAI,OAAO,aAAaC,eAAc,kBAAkB;AACpD,UAAM,IAAI,MAAa,kBAAkB;AAAA,EAC7C;AAEA,QAAM,cAAc,eAAe,OAAO,UAAU,CAAC;AACrD,MAAI,gBAAgB,QAAW;AAC3B,UAAM,IAAI,MAAa,kBAAkB;AAAA,EAC7C;AAEA,QAAM,CAAC,QAAQ,WAAW,IAAIC,YAAW,MAAM;AAE/C,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,QAAQ,OAAO,aAAaD,YAAW;AAAA,IACvC;AAAA,IACA,SAAS,OAAO,SAASA,eAAc,gBAAgB;AAAA,EAC3D;AACJ;;;AD3DO,IAAME,QAAO;;;AIFpB;AAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,sBAAsBC,QAAO,KAAK,CAAC,KAAM,GAAI,CAAC;AAEpD,IAAM,aAAa;AACnB,IAAM,aAAa;;;ACH1B;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAOM,SAAU,QAAQ,GAAU;AAChC,SAAO,aAAa,cAAe,YAAY,OAAO,CAAC,KAAK,EAAE,YAAY,SAAS;AACrF;AAGM,SAAU,MAAM,GAAU;AAC9B,MAAI,OAAO,MAAM;AAAW,UAAM,IAAI,MAAM,yBAAyB,CAAC,EAAE;AAC1E;AAQM,SAAU,OAAO,MAA8B,SAAiB;AACpE,MAAI,CAAC,QAAQ,CAAC;AAAG,UAAM,IAAI,MAAM,qBAAqB;AACtD,MAAI,QAAQ,SAAS,KAAK,CAAC,QAAQ,SAAS,EAAE,MAAM;AAClD,UAAM,IAAI,MAAM,mCAAmC,UAAU,kBAAkB,EAAE,MAAM;AAC3F;AAeM,SAAU,QAAQ,UAAe,gBAAgB,MAAI;AACzD,MAAI,SAAS;AAAW,UAAM,IAAI,MAAM,kCAAkC;AAC1E,MAAI,iBAAiB,SAAS;AAAU,UAAM,IAAI,MAAM,uCAAuC;AACjG;AAGM,SAAU,QAAQ,KAAU,UAAa;AAC7C,SAAO,GAAG;AACV,QAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,KAAK;AACpB,UAAM,IAAI,MAAM,2DAA2D,GAAG;EAChF;AACF;AAeM,SAAU,GAAG,KAAe;AAChC,SAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAClE;AAGM,SAAU,IAAI,KAAe;AACjC,SAAO,IAAI,YAAY,IAAI,QAAQ,IAAI,YAAY,KAAK,MAAM,IAAI,aAAa,CAAC,CAAC;AACnF;AAGM,SAAU,SAAS,QAAoB;AAC3C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,WAAO,CAAC,EAAE,KAAK,CAAC;EAClB;AACF;AAGM,SAAU,WAAW,KAAe;AACxC,SAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAChE;AAGO,IAAM,OAAiC,uBAC5C,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,IAAK;AA4F7D,SAAU,YAAY,KAAW;AACrC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,iBAAiB;AAC9D,SAAO,IAAI,WAAW,IAAI,YAAW,EAAG,OAAO,GAAG,CAAC;AACrD;AAiBM,SAAU,QAAQ,MAAyB;AAC/C,MAAI,OAAO,SAAS;AAAU,WAAO,YAAY,IAAI;WAC5C,QAAQ,IAAI;AAAG,WAAO,UAAU,IAAI;;AACxC,UAAM,IAAI,MAAM,8BAA8B,OAAO,IAAI;AAC9D,SAAO;AACT;AAwDM,SAAU,WAAW,GAAe,GAAa;AACrD,MAAI,EAAE,WAAW,EAAE;AAAQ,WAAO;AAClC,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAAK,YAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACrD,SAAO,SAAS;AAClB;AAiEO,IAAM,wCAAa,CACxB,QACA,gBACS;AACT,WAAS,cAAc,QAAoB,MAAW;AAEpD,WAAO,GAAG;AAGV,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,iDAAiD;AAG5E,QAAI,OAAO,gBAAgB,QAAW;AACpC,YAAM,QAAQ,KAAK,CAAC;AACpB,UAAI,CAAC;AAAO,cAAM,IAAI,MAAM,qBAAqB;AACjD,UAAI,OAAO;AAAc,eAAO,KAAK;;AAChC,eAAO,OAAO,OAAO,WAAW;IACvC;AAGA,UAAM,OAAO,OAAO;AACpB,QAAI,QAAQ,KAAK,CAAC,MAAM,QAAW;AACjC,aAAO,KAAK,CAAC,CAAC;IAChB;AAEA,UAAM,SAAS,YAAY,KAAK,GAAG,IAAI;AACvC,UAAM,cAAc,CAAC,UAAkB,WAAuB;AAC5D,UAAI,WAAW,QAAW;AACxB,YAAI,aAAa;AAAG,gBAAM,IAAI,MAAM,6BAA6B;AACjE,eAAO,MAAM;MACf;IACF;AAEA,QAAI,SAAS;AACb,UAAM,WAAW;MACf,QAAQ,MAAkB,QAAmB;AAC3C,YAAI;AAAQ,gBAAM,IAAI,MAAM,8CAA8C;AAC1E,iBAAS;AACT,eAAO,IAAI;AACX,oBAAY,OAAO,QAAQ,QAAQ,MAAM;AACzC,eAAQ,OAA4B,QAAQ,MAAM,MAAM;MAC1D;MACA,QAAQ,MAAkB,QAAmB;AAC3C,eAAO,IAAI;AACX,YAAI,QAAQ,KAAK,SAAS;AACxB,gBAAM,IAAI,MAAM,uDAAuD,IAAI;AAC7E,oBAAY,OAAO,QAAQ,QAAQ,MAAM;AACzC,eAAQ,OAA4B,QAAQ,MAAM,MAAM;MAC1D;;AAGF,WAAO;EACT;AAEA,SAAO,OAAO,eAAe,MAAM;AACnC,SAAO;AACT;AAeM,SAAU,UACd,gBACA,KACA,cAAc,MAAI;AAElB,MAAI,QAAQ;AAAW,WAAO,IAAI,WAAW,cAAc;AAC3D,MAAI,IAAI,WAAW;AACjB,UAAM,IAAI,MAAM,qCAAqC,iBAAiB,YAAY,IAAI,MAAM;AAC9F,MAAI,eAAe,CAAC,YAAY,GAAG;AAAG,UAAM,IAAI,MAAM,iCAAiC;AACvF,SAAO;AACT;AAGM,SAAU,aACd,MACA,YACA,OACAC,OAAa;AAEb,MAAI,OAAO,KAAK,iBAAiB;AAAY,WAAO,KAAK,aAAa,YAAY,OAAOA,KAAI;AAC7F,QAAMC,QAAO,OAAO,EAAE;AACtB,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,KAAK,OAAQ,SAASA,QAAQ,QAAQ;AAC5C,QAAM,KAAK,OAAO,QAAQ,QAAQ;AAClC,QAAM,IAAID,QAAO,IAAI;AACrB,QAAM,IAAIA,QAAO,IAAI;AACrB,OAAK,UAAU,aAAa,GAAG,IAAIA,KAAI;AACvC,OAAK,UAAU,aAAa,GAAG,IAAIA,KAAI;AACzC;AAEM,SAAU,WAAW,YAAoB,WAAmBA,OAAa;AAC7E,QAAMA,KAAI;AACV,QAAM,MAAM,IAAI,WAAW,EAAE;AAC7B,QAAM,OAAO,WAAW,GAAG;AAC3B,eAAa,MAAM,GAAG,OAAO,SAAS,GAAGA,KAAI;AAC7C,eAAa,MAAM,GAAG,OAAO,UAAU,GAAGA,KAAI;AAC9C,SAAO;AACT;AAGM,SAAU,YAAY,OAAiB;AAC3C,SAAO,MAAM,aAAa,MAAM;AAClC;AAGM,SAAU,UAAU,OAAiB;AACzC,SAAO,WAAW,KAAK,KAAK;AAC9B;;;ADhbA,IAAM,aAAa;AAGnB,IAAM,UAA0B,oBAAI,WAAW,EAAE;AACjD,IAAM,UAAU,IAAI,OAAO;AAC3B,IAAM,OAAO;AAKb,IAAM,OAAO,CAAC,IAAY,IAAY,IAAY,OAAc;AAC9D,QAAM,QAAQ,KAAK;AACnB,SAAO;IACL,IAAK,MAAM,KAAO,OAAO;IACzB,IAAK,MAAM,KAAO,OAAO;IACzB,IAAK,MAAM,KAAO,OAAO;IACzB,IAAK,OAAO,IAAO,QAAQ,KAAM,EAAE,QAAQ;;;AAE/C;AAEA,IAAM,SAAS,CAAC,OACX,MAAM,IAAK,QAAS,MACpB,MAAM,IAAK,QAAS,MACpB,MAAM,KAAM,QAAS,IACtB,MAAM,KAAM,MACd;AAMI,SAAU,YAAY,GAAa;AACvC,IAAE,QAAO;AACT,QAAM,QAAQ,EAAE,EAAE,IAAI;AAEtB,MAAI,QAAQ;AACZ,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAM,IAAI,EAAE,CAAC;AACb,MAAE,CAAC,IAAK,MAAM,IAAK;AACnB,aAAS,IAAI,MAAM;EACrB;AACA,IAAE,CAAC,KAAK,CAAC,QAAQ;AACjB,SAAO;AACT;AAIA,IAAM,iBAAiB,CAAC,UAAiB;AACvC,MAAI,QAAQ,KAAK;AAAM,WAAO;AAC9B,MAAI,QAAQ;AAAM,WAAO;AACzB,SAAO;AACT;AAEA,IAAM,QAAN,MAAW;;EAYT,YAAY,KAAY,gBAAuB;AAXtC,SAAA,WAAW;AACX,SAAA,YAAY;AACX,SAAA,KAAK;AACL,SAAA,KAAK;AACL,SAAA,KAAK;AACL,SAAA,KAAK;AACL,SAAA,WAAW;AAMnB,UAAM,QAAQ,GAAG;AACjB,WAAO,KAAK,EAAE;AACd,UAAM,QAAQ,WAAW,GAAG;AAC5B,QAAI,KAAK,MAAM,UAAU,GAAG,KAAK;AACjC,QAAI,KAAK,MAAM,UAAU,GAAG,KAAK;AACjC,QAAI,KAAK,MAAM,UAAU,GAAG,KAAK;AACjC,QAAI,KAAK,MAAM,UAAU,IAAI,KAAK;AAElC,UAAM,UAAmB,CAAA;AACzB,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAQ,KAAK,EAAE,IAAI,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,EAAC,CAAE;AAC/E,OAAC,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE;IAC3D;AACA,UAAM,IAAI,eAAe,kBAAkB,IAAI;AAC/C,QAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,SAAS,CAAC;AAC1B,YAAM,IAAI,MAAM,gDAAgD;AAClE,SAAK,IAAI;AACT,UAAM,OAAO;AACb,UAAM,UAAU,OAAO;AACvB,UAAM,aAAc,KAAK,aAAa,KAAK;AAC3C,UAAM,QAAiB,CAAA;AAEvB,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAEhC,eAAS,OAAO,GAAG,OAAO,YAAY,QAAQ;AAE5C,YAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AACjC,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAM,MAAO,SAAU,IAAI,IAAI,IAAM;AACrC,cAAI,CAAC;AAAK;AACV,gBAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE,IAAK,QAAQ,IAAI,IAAI,CAAC;AAC5D,UAAC,MAAM,IAAM,MAAM,IAAM,MAAM,IAAM,MAAM;QAC7C;AACA,cAAM,KAAK,EAAE,IAAI,IAAI,IAAI,GAAE,CAAE;MAC/B;IACF;AACA,SAAK,IAAI;EACX;EACU,aAAa,IAAY,IAAY,IAAY,IAAU;AACnE,IAAC,MAAM,KAAK,IAAM,MAAM,KAAK,IAAM,MAAM,KAAK,IAAM,MAAM,KAAK;AAC/D,UAAM,EAAE,GAAG,GAAG,WAAU,IAAK;AAE7B,QAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AACjC,UAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,IAAI;AACR,eAAW,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG;AAClC,eAAS,UAAU,GAAG,UAAU,GAAG,WAAW;AAC5C,cAAM,OAAQ,QAAS,IAAI,UAAY;AACvC,iBAAS,SAAS,IAAI,IAAI,GAAG,UAAU,GAAG,UAAU;AAClD,gBAAM,MAAO,SAAU,IAAI,SAAW;AACtC,gBAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE,IAAK,EAAE,IAAI,aAAa,GAAG;AACjE,UAAC,MAAM,IAAM,MAAM,IAAM,MAAM,IAAM,MAAM;AAC3C,eAAK;QACP;MACF;IACF;AACA,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,KAAK;EACZ;EACA,OAAO,MAAW;AAChB,YAAQ,IAAI;AACZ,WAAO,QAAQ,IAAI;AACnB,WAAO,IAAI;AACX,UAAM,MAAM,IAAI,IAAI;AACpB,UAAM,SAAS,KAAK,MAAM,KAAK,SAAS,UAAU;AAClD,UAAM,OAAO,KAAK,SAAS;AAC3B,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,WAAK,aAAa,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;IAClF;AACA,QAAI,MAAM;AACR,cAAQ,IAAI,KAAK,SAAS,SAAS,UAAU,CAAC;AAC9C,WAAK,aAAa,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAChE,YAAM,OAAO;IACf;AACA,WAAO;EACT;EACA,UAAO;AACL,UAAM,EAAE,EAAC,IAAK;AAEd,eAAW,OAAO,GAAG;AACnB,MAAC,IAAI,KAAK,GAAK,IAAI,KAAK,GAAK,IAAI,KAAK,GAAK,IAAI,KAAK;IACtD;EACF;EACA,WAAW,KAAe;AACxB,YAAQ,IAAI;AACZ,YAAQ,KAAK,IAAI;AACjB,SAAK,WAAW;AAChB,UAAM,EAAE,IAAI,IAAI,IAAI,GAAE,IAAK;AAC3B,UAAM,MAAM,IAAI,GAAG;AACnB,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,WAAO;EACT;EACA,SAAM;AACJ,UAAM,MAAM,IAAI,WAAW,UAAU;AACrC,SAAK,WAAW,GAAG;AACnB,SAAK,QAAO;AACZ,WAAO;EACT;;AAGF,IAAM,UAAN,cAAsB,MAAK;EACzB,YAAY,KAAY,gBAAuB;AAC7C,UAAM,QAAQ,GAAG;AACjB,WAAO,GAAG;AACV,UAAM,QAAQ,YAAY,UAAU,GAAG,CAAC;AACxC,UAAM,OAAO,cAAc;AAC3B,UAAM,KAAK;EACb;EACA,OAAO,MAAW;AAChB,WAAO,QAAQ,IAAI;AACnB,YAAQ,IAAI;AACZ,UAAM,MAAM,IAAI,IAAI;AACpB,UAAM,OAAO,KAAK,SAAS;AAC3B,UAAM,SAAS,KAAK,MAAM,KAAK,SAAS,UAAU;AAClD,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,WAAK,aACH,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,GACrB,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,GACrB,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,GACrB,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAE1B;AACA,QAAI,MAAM;AACR,cAAQ,IAAI,KAAK,SAAS,SAAS,UAAU,CAAC;AAC9C,WAAK,aACH,OAAO,QAAQ,CAAC,CAAC,GACjB,OAAO,QAAQ,CAAC,CAAC,GACjB,OAAO,QAAQ,CAAC,CAAC,GACjB,OAAO,QAAQ,CAAC,CAAC,CAAC;AAEpB,YAAM,OAAO;IACf;AACA,WAAO;EACT;EACA,WAAW,KAAe;AACxB,YAAQ,IAAI;AACZ,YAAQ,KAAK,IAAI;AACjB,SAAK,WAAW;AAEhB,UAAM,EAAE,IAAI,IAAI,IAAI,GAAE,IAAK;AAC3B,UAAM,MAAM,IAAI,GAAG;AACnB,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,QAAI,CAAC,IAAI;AACT,WAAO,IAAI,QAAO;EACpB;;AAIF,SAAS,uBACP,UAA0D;AAO1D,QAAM,QAAQ,CAAC,KAAY,QACzB,SAAS,KAAK,IAAI,MAAM,EAAE,OAAO,QAAQ,GAAG,CAAC,EAAE,OAAM;AACvD,QAAM,MAAM,SAAS,IAAI,WAAW,EAAE,GAAG,CAAC;AAC1C,QAAM,YAAY,IAAI;AACtB,QAAM,WAAW,IAAI;AACrB,QAAM,SAAS,CAAC,KAAY,mBAA4B,SAAS,KAAK,cAAc;AACpF,SAAO;AACT;AAGO,IAAM,QAAiB,uBAC5B,CAAC,KAAK,mBAAmB,IAAI,MAAM,KAAK,cAAc,CAAC;AAIlD,IAAM,UAAmB,uBAC9B,CAAC,KAAK,mBAAmB,IAAI,QAAQ,KAAK,cAAc,CAAC;;;ADhP3D,IAAME,cAAa;AACnB,IAAM,eAAe;AACrB,IAAM,cAA8B,oBAAI,WAAWA,WAAU;AAC7D,IAAMC,QAAO;AAGb,SAASC,MAAK,GAAS;AACrB,SAAQ,KAAK,IAAMD,QAAO,EAAE,KAAK;AACnC;AAEA,SAAS,IAAI,GAAW,GAAS;AAC/B,MAAI,MAAM;AACV,SAAO,IAAI,GAAG,MAAM,GAAG;AAErB,WAAO,IAAI,EAAE,IAAI;AACjB,QAAIC,MAAK,CAAC;EACZ;AACA,SAAO;AACT;AAIA,IAAM,OAAwB,uBAAK;AACjC,QAAM,IAAI,IAAI,WAAW,GAAG;AAC5B,WAAS,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,KAAKA,MAAK,CAAC;AAAG,MAAE,CAAC,IAAI;AAC1D,QAAM,MAAM,IAAI,WAAW,GAAG;AAC9B,MAAI,CAAC,IAAI;AACT,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,IAAI,EAAE,MAAM,CAAC;AACjB,SAAK,KAAK;AACV,QAAI,EAAE,CAAC,CAAC,KAAK,IAAK,KAAK,IAAM,KAAK,IAAM,KAAK,IAAM,KAAK,IAAK,MAAQ;EACvE;AACA,QAAM,CAAC;AACP,SAAO;AACT,GAAE;AAMF,IAAM,WAAW,CAAC,MAAe,KAAK,KAAO,MAAM;AACnD,IAAM,WAAW,CAAC,MAAe,KAAK,IAAM,MAAM;AAYlD,SAAS,UAAUC,OAAkB,IAAyB;AAC5D,MAAIA,MAAK,WAAW;AAAK,UAAM,IAAI,MAAM,mBAAmB;AAC5D,QAAM,KAAK,IAAI,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,GAAGA,MAAK,CAAC,CAAC,CAAC;AACzD,QAAM,KAAK,GAAG,IAAI,QAAQ;AAC1B,QAAM,KAAK,GAAG,IAAI,QAAQ;AAC1B,QAAM,KAAK,GAAG,IAAI,QAAQ;AAC1B,QAAM,MAAM,IAAI,YAAY,MAAM,GAAG;AACrC,QAAM,MAAM,IAAI,YAAY,MAAM,GAAG;AACrC,QAAMC,SAAQ,IAAI,YAAY,MAAM,GAAG;AACvC,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,YAAM,MAAM,IAAI,MAAM;AACtB,UAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACvB,UAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACvB,MAAAA,OAAM,GAAG,IAAKD,MAAK,CAAC,KAAK,IAAKA,MAAK,CAAC;IACtC;EACF;AACA,SAAO,EAAE,MAAAA,OAAM,OAAAC,QAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAG;AAChD;AAEA,IAAM,gBAAgC,0BACpC,MACA,CAAC,MAAe,IAAI,GAAG,CAAC,KAAK,KAAO,KAAK,KAAO,KAAK,IAAK,IAAI,GAAG,CAAC,CAAC;AAOrE,IAAM,UAA2B,uBAAK;AACpC,QAAM,IAAI,IAAI,WAAW,EAAE;AAC3B,WAAS,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,IAAIC,MAAK,CAAC;AAAG,MAAE,CAAC,IAAI;AACxD,SAAO;AACT,GAAE;AAGF,SAAS,YAAY,KAAe;AAClC,SAAO,GAAG;AACV,QAAM,MAAM,IAAI;AAChB,MAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG;AAC5B,UAAM,IAAI,MAAM,wDAAwD,GAAG;AAC7E,QAAM,EAAE,MAAK,IAAK;AAClB,QAAM,UAAU,CAAA;AAChB,MAAI,CAAC,YAAY,GAAG;AAAG,YAAQ,KAAM,MAAM,UAAU,GAAG,CAAE;AAC1D,QAAM,MAAM,IAAI,GAAG;AACnB,QAAM,KAAK,IAAI;AACf,QAAM,UAAU,CAAC,MAAc,UAAU,OAAO,GAAG,GAAG,GAAG,CAAC;AAC1D,QAAM,KAAK,IAAI,YAAY,MAAM,EAAE;AACnC,KAAG,IAAI,GAAG;AAEV,WAAS,IAAI,IAAI,IAAI,GAAG,QAAQ,KAAK;AACnC,QAAI,IAAI,GAAG,IAAI,CAAC;AAChB,QAAI,IAAI,OAAO;AAAG,UAAI,QAAQ,SAAS,CAAC,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC;aACtD,KAAK,KAAK,IAAI,OAAO;AAAG,UAAI,QAAQ,CAAC;AAC9C,OAAG,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI;EACvB;AACA,QAAM,GAAG,OAAO;AAChB,SAAO;AACT;AAuBA,SAAS,UACP,KACA,KACA,IACA,IACA,IACA,IAAU;AAEV,SACE,IAAM,MAAM,IAAK,QAAY,OAAO,IAAK,GAAK,IAC9C,IAAM,OAAO,IAAK,QAAY,OAAO,KAAM,GAAK;AAEpD;AAEA,SAAS,UAAU,OAAoB,IAAY,IAAY,IAAY,IAAU;AACnF,SACE,MAAO,KAAK,MAAS,KAAK,KAAO,IAChC,MAAQ,OAAO,KAAM,MAAU,OAAO,KAAM,KAAO,KAAK;AAE7D;AAEA,SAAS,QACP,IACA,IACA,IACA,IACA,IAAU;AAEV,QAAM,EAAE,OAAO,KAAK,IAAG,IAAK;AAC5B,MAAI,IAAI;AACR,EAAC,MAAM,GAAG,GAAG,GAAK,MAAM,GAAG,GAAG,GAAK,MAAM,GAAG,GAAG,GAAK,MAAM,GAAG,GAAG;AAChE,QAAM,SAAS,GAAG,SAAS,IAAI;AAC/B,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAMC,MAAK,GAAG,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AACvD,UAAMC,MAAK,GAAG,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AACvD,UAAMC,MAAK,GAAG,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AACvD,UAAMC,MAAK,GAAG,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AACvD,IAAC,KAAKH,KAAM,KAAKC,KAAM,KAAKC,KAAM,KAAKC;EACzC;AAEA,QAAM,KAAK,GAAG,GAAG,IAAI,UAAU,OAAO,IAAI,IAAI,IAAI,EAAE;AACpD,QAAM,KAAK,GAAG,GAAG,IAAI,UAAU,OAAO,IAAI,IAAI,IAAI,EAAE;AACpD,QAAM,KAAK,GAAG,GAAG,IAAI,UAAU,OAAO,IAAI,IAAI,IAAI,EAAE;AACpD,QAAM,KAAK,GAAG,GAAG,IAAI,UAAU,OAAO,IAAI,IAAI,IAAI,EAAE;AACpD,SAAO,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE;AACzC;AAkFA,SAAS,MACP,IACAC,OACA,OACA,KACA,KAAgB;AAEhB,SAAO,OAAOC,WAAU;AACxB,SAAO,GAAG;AACV,QAAM,UAAU,IAAI,QAAQ,GAAG;AAC/B,QAAM,MAAM;AACZ,QAAM,MAAM,IAAI,GAAG;AACnB,QAAM,OAAO,WAAW,GAAG;AAC3B,QAAM,QAAQ,IAAI,GAAG;AACrB,QAAM,QAAQ,IAAI,GAAG;AACrB,QAAM,SAASD,QAAO,IAAI;AAC1B,QAAM,SAAS,IAAI;AAEnB,MAAI,SAAS,KAAK,UAAU,QAAQA,KAAI;AACxC,MAAI,EAAE,IAAI,IAAI,IAAI,GAAE,IAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAEnE,WAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;AAC7C,UAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI;AAC9B,UAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI;AAC9B,UAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI;AAC9B,UAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI;AAC9B,aAAU,SAAS,MAAO;AAC1B,SAAK,UAAU,QAAQ,QAAQA,KAAI;AACnC,KAAC,EAAE,IAAI,IAAI,IAAI,GAAE,IAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;EAClE;AAEA,QAAM,QAAQC,cAAa,KAAK,MAAM,MAAM,SAAS,YAAY;AACjE,MAAI,QAAQ,QAAQ;AAClB,UAAM,MAAM,IAAI,YAAY,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AAC5C,UAAM,MAAM,GAAG,GAAG;AAClB,aAAS,IAAI,OAAO,MAAM,GAAG,IAAI,QAAQ,KAAK;AAAO,UAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG;AAC9E,UAAM,GAAG;EACX;AACA,SAAO;AACT;AAyPA,SAAS,WACP,IACAC,OACA,KACA,MACA,KAAgB;AAEhB,QAAM,YAAY,MAAM,IAAI,SAAS;AACrC,QAAM,IAAI,GAAG,OAAO,KAAK,KAAK,SAAS,SAAS;AAChD,MAAI;AAAK,MAAE,OAAO,GAAG;AACrB,QAAM,MAAM,WAAW,IAAI,KAAK,QAAQ,IAAI,WAAWA,KAAI;AAC3D,IAAE,OAAO,IAAI;AACb,IAAE,OAAO,GAAG;AACZ,QAAM,MAAM,EAAE,OAAM;AACpB,QAAM,GAAG;AACT,SAAO;AACT;AASO,IAAM,MAKO,2BAClB,EAAE,WAAW,IAAI,aAAa,IAAI,WAAW,IAAI,cAAc,KAAI,GACnE,SAAS,OAAO,KAAiB,OAAmB,KAAgB;AAIlE,MAAI,MAAM,SAAS;AAAG,UAAM,IAAI,MAAM,+BAA+B;AACrE,QAAM,YAAY;AAClB,WAAS,YAAY,SAAqB,SAAqB,MAAgB;AAC7E,UAAM,MAAM,WAAW,OAAO,OAAO,SAAS,MAAM,GAAG;AACvD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAAK,UAAI,CAAC,KAAK,QAAQ,CAAC;AAC5D,WAAO;EACT;AACA,WAAS,aAAU;AACjB,UAAM,KAAK,YAAY,GAAG;AAC1B,UAAM,UAAU,YAAY,MAAK;AACjC,UAAM,UAAU,YAAY,MAAK;AACjC,UAAM,IAAI,OAAO,SAAS,SAAS,OAAO;AAE1C,QAAI,MAAM,WAAW,IAAI;AACvB,cAAQ,IAAI,KAAK;IACnB,OAAO;AACL,YAAM,WAAW,YAAY,MAAK;AAClC,YAAM,OAAO,WAAW,QAAQ;AAChC,mBAAa,MAAM,GAAG,OAAO,MAAM,SAAS,CAAC,GAAG,KAAK;AAErD,YAAM,IAAI,MAAM,OAAO,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,QAAQ;AAC7D,QAAE,WAAW,OAAO;AACpB,QAAE,QAAO;IACX;AACA,UAAM,UAAU,MAAM,IAAI,OAAO,SAAS,WAAW;AACrD,WAAO,EAAE,IAAI,SAAS,SAAS,QAAO;EACxC;AACA,SAAO;IACL,QAAQ,WAAqB;AAC3B,YAAM,EAAE,IAAI,SAAS,SAAS,QAAO,IAAK,WAAU;AACpD,YAAM,MAAM,IAAI,WAAW,UAAU,SAAS,SAAS;AACvD,YAAM,UAAwC,CAAC,IAAI,SAAS,SAAS,OAAO;AAC5E,UAAI,CAAC,YAAY,SAAS;AAAG,gBAAQ,KAAM,YAAY,UAAU,SAAS,CAAE;AAC5E,YAAM,IAAI,OAAO,SAAS,WAAW,IAAI,SAAS,GAAG,UAAU,MAAM,CAAC;AACtE,YAAM,MAAM,YAAY,SAAS,SAAS,IAAI,SAAS,GAAG,IAAI,SAAS,SAAS,CAAC;AACjF,cAAQ,KAAK,GAAG;AAChB,UAAI,IAAI,KAAK,UAAU,MAAM;AAC7B,YAAM,GAAG,OAAO;AAChB,aAAO;IACT;IACA,QAAQ,YAAsB;AAC5B,YAAM,EAAE,IAAI,SAAS,SAAS,QAAO,IAAK,WAAU;AACpD,YAAM,UAAwC,CAAC,IAAI,SAAS,SAAS,OAAO;AAC5E,UAAI,CAAC,YAAY,UAAU;AAAG,gBAAQ,KAAM,aAAa,UAAU,UAAU,CAAE;AAC/E,YAAM,OAAO,WAAW,SAAS,GAAG,CAAC,SAAS;AAC9C,YAAM,YAAY,WAAW,SAAS,CAAC,SAAS;AAChD,YAAM,MAAM,YAAY,SAAS,SAAS,IAAI;AAC9C,cAAQ,KAAK,GAAG;AAChB,UAAI,CAAC,WAAW,KAAK,SAAS;AAAG,cAAM,IAAI,MAAM,4BAA4B;AAC7E,YAAM,MAAM,MAAM,IAAI,OAAO,SAAS,IAAI;AAC1C,YAAM,GAAG,OAAO;AAChB,aAAO;IACT;;AAEJ,CAAC;;;AGxpBH;;;ACAA;AAeM,SAAUC,SAAQ,GAAU;AAChC,SAAO,aAAa,cAAe,YAAY,OAAO,CAAC,KAAK,EAAE,YAAY,SAAS;AACrF;AAGM,SAAU,QAAQ,GAAS;AAC/B,MAAI,CAAC,OAAO,cAAc,CAAC,KAAK,IAAI;AAAG,UAAM,IAAI,MAAM,oCAAoC,CAAC;AAC9F;AAGM,SAAUC,QAAO,MAA8B,SAAiB;AACpE,MAAI,CAACD,SAAQ,CAAC;AAAG,UAAM,IAAI,MAAM,qBAAqB;AACtD,MAAI,QAAQ,SAAS,KAAK,CAAC,QAAQ,SAAS,EAAE,MAAM;AAClD,UAAM,IAAI,MAAM,mCAAmC,UAAU,kBAAkB,EAAE,MAAM;AAC3F;AAGM,SAAU,MAAM,GAAQ;AAC5B,MAAI,OAAO,MAAM,cAAc,OAAO,EAAE,WAAW;AACjD,UAAM,IAAI,MAAM,8CAA8C;AAChE,UAAQ,EAAE,SAAS;AACnB,UAAQ,EAAE,QAAQ;AACpB;AAGM,SAAUE,SAAQ,UAAe,gBAAgB,MAAI;AACzD,MAAI,SAAS;AAAW,UAAM,IAAI,MAAM,kCAAkC;AAC1E,MAAI,iBAAiB,SAAS;AAAU,UAAM,IAAI,MAAM,uCAAuC;AACjG;AAGM,SAAUC,SAAQ,KAAU,UAAa;AAC7C,EAAAF,QAAO,GAAG;AACV,QAAM,MAAM,SAAS;AACrB,MAAI,IAAI,SAAS,KAAK;AACpB,UAAM,IAAI,MAAM,2DAA2D,GAAG;EAChF;AACF;AAkBM,SAAUG,UAAS,QAAoB;AAC3C,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,WAAO,CAAC,EAAE,KAAK,CAAC;EAClB;AACF;AAGM,SAAUC,YAAW,KAAe;AACxC,SAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAChE;AAGM,SAAU,KAAK,MAAc,OAAa;AAC9C,SAAQ,QAAS,KAAK,QAAW,SAAS;AAC5C;AAkIM,SAAUC,aAAY,KAAW;AACrC,MAAI,OAAO,QAAQ;AAAU,UAAM,IAAI,MAAM,iBAAiB;AAC9D,SAAO,IAAI,WAAW,IAAI,YAAW,EAAG,OAAO,GAAG,CAAC;AACrD;AAiBM,SAAUC,SAAQ,MAAW;AACjC,MAAI,OAAO,SAAS;AAAU,WAAOC,aAAY,IAAI;AACrD,EAAAC,QAAO,IAAI;AACX,SAAO;AACT;AAmDM,IAAgBC,QAAhB,MAAoB;;AA4CpB,SAAU,aACd,UAAuB;AAOvB,QAAM,QAAQ,CAAC,QAA2B,SAAQ,EAAG,OAAOC,SAAQ,GAAG,CAAC,EAAE,OAAM;AAChF,QAAM,MAAM,SAAQ;AACpB,QAAM,YAAY,IAAI;AACtB,QAAM,WAAW,IAAI;AACrB,QAAM,SAAS,MAAM,SAAQ;AAC7B,SAAO;AACT;;;ADrVM,IAAO,OAAP,cAAuCC,MAAa;EAQxD,YAAY,MAAa,MAAW;AAClC,UAAK;AAJC,SAAA,WAAW;AACX,SAAA,YAAY;AAIlB,UAAM,IAAI;AACV,UAAM,MAAMC,SAAQ,IAAI;AACxB,SAAK,QAAQ,KAAK,OAAM;AACxB,QAAI,OAAO,KAAK,MAAM,WAAW;AAC/B,YAAM,IAAI,MAAM,qDAAqD;AACvE,SAAK,WAAW,KAAK,MAAM;AAC3B,SAAK,YAAY,KAAK,MAAM;AAC5B,UAAM,WAAW,KAAK;AACtB,UAAM,MAAM,IAAI,WAAW,QAAQ;AAEnC,QAAI,IAAI,IAAI,SAAS,WAAW,KAAK,OAAM,EAAG,OAAO,GAAG,EAAE,OAAM,IAAK,GAAG;AACxE,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAK,UAAI,CAAC,KAAK;AAC/C,SAAK,MAAM,OAAO,GAAG;AAErB,SAAK,QAAQ,KAAK,OAAM;AAExB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAK,UAAI,CAAC,KAAK,KAAO;AACtD,SAAK,MAAM,OAAO,GAAG;AACrB,IAAAC,OAAM,GAAG;EACX;EACA,OAAO,KAAU;AACf,IAAAC,SAAQ,IAAI;AACZ,SAAK,MAAM,OAAO,GAAG;AACrB,WAAO;EACT;EACA,WAAW,KAAe;AACxB,IAAAA,SAAQ,IAAI;AACZ,IAAAC,QAAO,KAAK,KAAK,SAAS;AAC1B,SAAK,WAAW;AAChB,SAAK,MAAM,WAAW,GAAG;AACzB,SAAK,MAAM,OAAO,GAAG;AACrB,SAAK,MAAM,WAAW,GAAG;AACzB,SAAK,QAAO;EACd;EACA,SAAM;AACJ,UAAM,MAAM,IAAI,WAAW,KAAK,MAAM,SAAS;AAC/C,SAAK,WAAW,GAAG;AACnB,WAAO;EACT;EACA,WAAW,IAAY;AAErB,WAAA,KAAO,OAAO,OAAO,OAAO,eAAe,IAAI,GAAG,CAAA,CAAE;AACpD,UAAM,EAAE,OAAO,OAAO,UAAU,WAAW,UAAU,UAAS,IAAK;AACnE,SAAK;AACL,OAAG,WAAW;AACd,OAAG,YAAY;AACf,OAAG,WAAW;AACd,OAAG,YAAY;AACf,OAAG,QAAQ,MAAM,WAAW,GAAG,KAAK;AACpC,OAAG,QAAQ,MAAM,WAAW,GAAG,KAAK;AACpC,WAAO;EACT;EACA,QAAK;AACH,WAAO,KAAK,WAAU;EACxB;EACA,UAAO;AACL,SAAK,YAAY;AACjB,SAAK,MAAM,QAAO;AAClB,SAAK,MAAM,QAAO;EACpB;;AAaK,IAAM,OAGT,CAAC,MAAa,KAAY,YAC5B,IAAI,KAAU,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,OAAM;AACjD,KAAK,SAAS,CAAC,MAAa,QAAe,IAAI,KAAU,MAAM,GAAG;;;AE7FlE;;;ACAA;AAOM,SAAUC,cACd,MACA,YACA,OACAC,OAAa;AAEb,MAAI,OAAO,KAAK,iBAAiB;AAAY,WAAO,KAAK,aAAa,YAAY,OAAOA,KAAI;AAC7F,QAAMC,QAAO,OAAO,EAAE;AACtB,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,KAAK,OAAQ,SAASA,QAAQ,QAAQ;AAC5C,QAAM,KAAK,OAAO,QAAQ,QAAQ;AAClC,QAAM,IAAID,QAAO,IAAI;AACrB,QAAM,IAAIA,QAAO,IAAI;AACrB,OAAK,UAAU,aAAa,GAAG,IAAIA,KAAI;AACvC,OAAK,UAAU,aAAa,GAAG,IAAIA,KAAI;AACzC;AAGM,SAAU,IAAI,GAAW,GAAW,GAAS;AACjD,SAAQ,IAAI,IAAM,CAAC,IAAI;AACzB;AAGM,SAAU,IAAI,GAAW,GAAW,GAAS;AACjD,SAAQ,IAAI,IAAM,IAAI,IAAM,IAAI;AAClC;AAMM,IAAgB,SAAhB,cAAoDE,MAAO;EAoB/D,YAAY,UAAkB,WAAmB,WAAmBF,OAAa;AAC/E,UAAK;AANG,SAAA,WAAW;AACX,SAAA,SAAS;AACT,SAAA,MAAM;AACN,SAAA,YAAY;AAIpB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,OAAOA;AACZ,SAAK,SAAS,IAAI,WAAW,QAAQ;AACrC,SAAK,OAAOG,YAAW,KAAK,MAAM;EACpC;EACA,OAAO,MAAW;AAChB,IAAAC,SAAQ,IAAI;AACZ,WAAOC,SAAQ,IAAI;AACnB,IAAAC,QAAO,IAAI;AACX,UAAM,EAAE,MAAM,QAAQ,SAAQ,IAAK;AACnC,UAAM,MAAM,KAAK;AACjB,aAAS,MAAM,GAAG,MAAM,OAAO;AAC7B,YAAM,OAAO,KAAK,IAAI,WAAW,KAAK,KAAK,MAAM,GAAG;AAEpD,UAAI,SAAS,UAAU;AACrB,cAAM,WAAWH,YAAW,IAAI;AAChC,eAAO,YAAY,MAAM,KAAK,OAAO;AAAU,eAAK,QAAQ,UAAU,GAAG;AACzE;MACF;AACA,aAAO,IAAI,KAAK,SAAS,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG;AACnD,WAAK,OAAO;AACZ,aAAO;AACP,UAAI,KAAK,QAAQ,UAAU;AACzB,aAAK,QAAQ,MAAM,CAAC;AACpB,aAAK,MAAM;MACb;IACF;AACA,SAAK,UAAU,KAAK;AACpB,SAAK,WAAU;AACf,WAAO;EACT;EACA,WAAW,KAAe;AACxB,IAAAC,SAAQ,IAAI;AACZ,IAAAG,SAAQ,KAAK,IAAI;AACjB,SAAK,WAAW;AAIhB,UAAM,EAAE,QAAQ,MAAM,UAAU,MAAAP,MAAI,IAAK;AACzC,QAAI,EAAE,IAAG,IAAK;AAEd,WAAO,KAAK,IAAI;AAChB,IAAAQ,OAAM,KAAK,OAAO,SAAS,GAAG,CAAC;AAG/B,QAAI,KAAK,YAAY,WAAW,KAAK;AACnC,WAAK,QAAQ,MAAM,CAAC;AACpB,YAAM;IACR;AAEA,aAAS,IAAI,KAAK,IAAI,UAAU;AAAK,aAAO,CAAC,IAAI;AAIjD,IAAAT,cAAa,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,GAAGC,KAAI;AAC9D,SAAK,QAAQ,MAAM,CAAC;AACpB,UAAM,QAAQG,YAAW,GAAG;AAC5B,UAAM,MAAM,KAAK;AAEjB,QAAI,MAAM;AAAG,YAAM,IAAI,MAAM,6CAA6C;AAC1E,UAAM,SAAS,MAAM;AACrB,UAAM,QAAQ,KAAK,IAAG;AACtB,QAAI,SAAS,MAAM;AAAQ,YAAM,IAAI,MAAM,oCAAoC;AAC/E,aAAS,IAAI,GAAG,IAAI,QAAQ;AAAK,YAAM,UAAU,IAAI,GAAG,MAAM,CAAC,GAAGH,KAAI;EACxE;EACA,SAAM;AACJ,UAAM,EAAE,QAAQ,UAAS,IAAK;AAC9B,SAAK,WAAW,MAAM;AACtB,UAAM,MAAM,OAAO,MAAM,GAAG,SAAS;AACrC,SAAK,QAAO;AACZ,WAAO;EACT;EACA,WAAW,IAAM;AACf,WAAA,KAAO,IAAK,KAAK,YAAmB;AACpC,OAAG,IAAI,GAAG,KAAK,IAAG,CAAE;AACpB,UAAM,EAAE,UAAU,QAAQ,QAAQ,UAAU,WAAW,IAAG,IAAK;AAC/D,OAAG,YAAY;AACf,OAAG,WAAW;AACd,OAAG,SAAS;AACZ,OAAG,MAAM;AACT,QAAI,SAAS;AAAU,SAAG,OAAO,IAAI,MAAM;AAC3C,WAAO;EACT;EACA,QAAK;AACH,WAAO,KAAK,WAAU;EACxB;;AASK,IAAM,YAAyC,4BAAY,KAAK;EACrE;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;CACrF;AAcM,IAAM,YAAyC,4BAAY,KAAK;EACrE;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;CACrF;;;AC/KD;AAKA,IAAM,aAA6B,uBAAO,KAAK,KAAK,CAAC;AACrD,IAAM,OAAuB,uBAAO,EAAE;AAEtC,SAAS,QACP,GACA,KAAK,OAAK;AAKV,MAAI;AAAI,WAAO,EAAE,GAAG,OAAO,IAAI,UAAU,GAAG,GAAG,OAAQ,KAAK,OAAQ,UAAU,EAAC;AAC/E,SAAO,EAAE,GAAG,OAAQ,KAAK,OAAQ,UAAU,IAAI,GAAG,GAAG,OAAO,IAAI,UAAU,IAAI,EAAC;AACjF;AAEA,SAAS,MAAM,KAAe,KAAK,OAAK;AACtC,QAAM,MAAM,IAAI;AAChB,MAAI,KAAK,IAAI,YAAY,GAAG;AAC5B,MAAI,KAAK,IAAI,YAAY,GAAG;AAC5B,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,UAAM,EAAE,GAAG,EAAC,IAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;AACnC,KAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;EACxB;AACA,SAAO,CAAC,IAAI,EAAE;AAChB;AAIA,IAAM,QAAQ,CAAC,GAAW,IAAY,MAAsB,MAAM;AAClE,IAAM,QAAQ,CAAC,GAAW,GAAW,MAAuB,KAAM,KAAK,IAAO,MAAM;AAEpF,IAAM,SAAS,CAAC,GAAW,GAAW,MAAuB,MAAM,IAAM,KAAM,KAAK;AACpF,IAAM,SAAS,CAAC,GAAW,GAAW,MAAuB,KAAM,KAAK,IAAO,MAAM;AAErF,IAAM,SAAS,CAAC,GAAW,GAAW,MAAuB,KAAM,KAAK,IAAO,MAAO,IAAI;AAC1F,IAAM,SAAS,CAAC,GAAW,GAAW,MAAuB,MAAO,IAAI,KAAQ,KAAM,KAAK;AAa3F,SAAS,IACP,IACA,IACA,IACA,IAAU;AAKV,QAAM,KAAK,OAAO,MAAM,OAAO;AAC/B,SAAO,EAAE,GAAI,KAAK,MAAO,IAAI,KAAK,KAAM,KAAM,GAAG,GAAG,IAAI,EAAC;AAC3D;AAEA,IAAM,QAAQ,CAAC,IAAY,IAAY,QAAwB,OAAO,MAAM,OAAO,MAAM,OAAO;AAChG,IAAM,QAAQ,CAAC,KAAa,IAAY,IAAY,OACjD,KAAK,KAAK,MAAO,MAAM,KAAK,KAAM,KAAM;AAC3C,IAAM,QAAQ,CAAC,IAAY,IAAY,IAAY,QAChD,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO;AACjD,IAAM,QAAQ,CAAC,KAAa,IAAY,IAAY,IAAY,OAC7D,KAAK,KAAK,KAAK,MAAO,MAAM,KAAK,KAAM,KAAM;AAChD,IAAM,QAAQ,CAAC,IAAY,IAAY,IAAY,IAAY,QAC5D,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO;AAC9D,IAAM,QAAQ,CAAC,KAAa,IAAY,IAAY,IAAY,IAAY,OACzE,KAAK,KAAK,KAAK,KAAK,MAAO,MAAM,KAAK,KAAM,KAAM;;;AF3DrD,IAAM,WAA2B,4BAAY,KAAK;EAChD;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EACpF;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;EAAY;CACrF;AAGD,IAAM,WAA2B,oBAAI,YAAY,EAAE;AAC7C,IAAO,SAAP,cAAsB,OAAc;EAYxC,YAAY,YAAoB,IAAE;AAChC,UAAM,IAAI,WAAW,GAAG,KAAK;AAVrB,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;AAC3B,SAAA,IAAY,UAAU,CAAC,IAAI;EAIrC;EACU,MAAG;AACX,UAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,IAAK;AACnC,WAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EAChC;;EAEU,IACR,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAW,GAAS;AAEtF,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;AACb,SAAK,IAAI,IAAI;EACf;EACU,QAAQ,MAAgB,QAAc;AAE9C,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK,UAAU;AAAG,eAAS,CAAC,IAAI,KAAK,UAAU,QAAQ,KAAK;AACpF,aAAS,IAAI,IAAI,IAAI,IAAI,KAAK;AAC5B,YAAM,MAAM,SAAS,IAAI,EAAE;AAC3B,YAAM,KAAK,SAAS,IAAI,CAAC;AACzB,YAAM,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,IAAK,QAAQ;AACnD,YAAM,KAAK,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAK,OAAO;AACjD,eAAS,CAAC,IAAK,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAK;IACjE;AAEA,QAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,IAAK;AACjC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAM,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;AACpD,YAAM,KAAM,IAAI,SAAS,IAAI,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC,IAAK;AACrE,YAAM,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;AACpD,YAAM,KAAM,SAAS,IAAI,GAAG,GAAG,CAAC,IAAK;AACrC,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAK,IAAI,KAAM;AACf,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAK,KAAK,KAAM;IAClB;AAEA,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,QAAK,IAAI,KAAK,IAAK;AACnB,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACjC;EACU,aAAU;AAClB,IAAAS,OAAM,QAAQ;EAChB;EACA,UAAO;AACL,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/B,IAAAA,OAAM,KAAK,MAAM;EACnB;;AAsBF,IAAM,OAAwB,uBAAU,MAAM;EAC5C;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE;EAAsB;EAAsB;EAAsB;EAClE,IAAI,OAAK,OAAO,CAAC,CAAC,CAAC,GAAE;AACvB,IAAM,YAA6B,uBAAM,KAAK,CAAC,GAAE;AACjD,IAAM,YAA6B,uBAAM,KAAK,CAAC,GAAE;AAGjD,IAAM,aAA6B,oBAAI,YAAY,EAAE;AACrD,IAAM,aAA6B,oBAAI,YAAY,EAAE;AAE/C,IAAO,SAAP,cAAsB,OAAc;EAqBxC,YAAY,YAAoB,IAAE;AAChC,UAAM,KAAK,WAAW,IAAI,KAAK;AAlBvB,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,CAAC,IAAI;AAC5B,SAAA,KAAa,UAAU,EAAE,IAAI;AAC7B,SAAA,KAAa,UAAU,EAAE,IAAI;AAC7B,SAAA,KAAa,UAAU,EAAE,IAAI;AAC7B,SAAA,KAAa,UAAU,EAAE,IAAI;AAC7B,SAAA,KAAa,UAAU,EAAE,IAAI;AAC7B,SAAA,KAAa,UAAU,EAAE,IAAI;EAIvC;;EAEU,MAAG;AAIX,UAAM,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE,IAAK;AAC3E,WAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;EACxE;;EAEU,IACR,IAAY,IAAY,IAAY,IAAY,IAAY,IAAY,IAAY,IACpF,IAAY,IAAY,IAAY,IAAY,IAAY,IAAY,IAAY,IAAU;AAE9F,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;AACf,SAAK,KAAK,KAAK;EACjB;EACU,QAAQ,MAAgB,QAAc;AAE9C,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK,UAAU,GAAG;AACxC,iBAAW,CAAC,IAAI,KAAK,UAAU,MAAM;AACrC,iBAAW,CAAC,IAAI,KAAK,UAAW,UAAU,CAAE;IAC9C;AACA,aAAS,IAAI,IAAI,IAAI,IAAI,KAAK;AAE5B,YAAM,OAAO,WAAW,IAAI,EAAE,IAAI;AAClC,YAAM,OAAO,WAAW,IAAI,EAAE,IAAI;AAClC,YAAM,MAAU,OAAO,MAAM,MAAM,CAAC,IAAQ,OAAO,MAAM,MAAM,CAAC,IAAQ,MAAM,MAAM,MAAM,CAAC;AAC3F,YAAM,MAAU,OAAO,MAAM,MAAM,CAAC,IAAQ,OAAO,MAAM,MAAM,CAAC,IAAQ,MAAM,MAAM,MAAM,CAAC;AAE3F,YAAM,MAAM,WAAW,IAAI,CAAC,IAAI;AAChC,YAAM,MAAM,WAAW,IAAI,CAAC,IAAI;AAChC,YAAM,MAAU,OAAO,KAAK,KAAK,EAAE,IAAQ,OAAO,KAAK,KAAK,EAAE,IAAQ,MAAM,KAAK,KAAK,CAAC;AACvF,YAAM,MAAU,OAAO,KAAK,KAAK,EAAE,IAAQ,OAAO,KAAK,KAAK,EAAE,IAAQ,MAAM,KAAK,KAAK,CAAC;AAEvF,YAAM,OAAW,MAAM,KAAK,KAAK,WAAW,IAAI,CAAC,GAAG,WAAW,IAAI,EAAE,CAAC;AACtE,YAAM,OAAW,MAAM,MAAM,KAAK,KAAK,WAAW,IAAI,CAAC,GAAG,WAAW,IAAI,EAAE,CAAC;AAC5E,iBAAW,CAAC,IAAI,OAAO;AACvB,iBAAW,CAAC,IAAI,OAAO;IACzB;AACA,QAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAE,IAAK;AAEzE,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAE3B,YAAM,UAAc,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE;AACvF,YAAM,UAAc,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE;AAEvF,YAAM,OAAQ,KAAK,KAAO,CAAC,KAAK;AAChC,YAAM,OAAQ,KAAK,KAAO,CAAC,KAAK;AAGhC,YAAM,OAAW,MAAM,IAAI,SAAS,MAAM,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC;AACrE,YAAM,MAAU,MAAM,MAAM,IAAI,SAAS,MAAM,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC;AAC1E,YAAM,MAAM,OAAO;AAEnB,YAAM,UAAc,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE;AACvF,YAAM,UAAc,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE,IAAQ,OAAO,IAAI,IAAI,EAAE;AACvF,YAAM,OAAQ,KAAK,KAAO,KAAK,KAAO,KAAK;AAC3C,YAAM,OAAQ,KAAK,KAAO,KAAK,KAAO,KAAK;AAC3C,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,OAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC5D,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,WAAK,KAAK;AACV,YAAM,MAAU,MAAM,KAAK,SAAS,IAAI;AACxC,WAAS,MAAM,KAAK,KAAK,SAAS,IAAI;AACtC,WAAK,MAAM;IACb;AAEA,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAC,EAAE,GAAG,IAAI,GAAG,GAAE,IAAS,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,SAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;EACzE;EACU,aAAU;AAClB,IAAAC,OAAM,YAAY,UAAU;EAC9B;EACA,UAAO;AACL,IAAAA,OAAM,KAAK,MAAM;AACjB,SAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACzD;;AAkGK,IAAM,SAAgC,6BAAa,MAAM,IAAI,OAAM,CAAE;AAKrE,IAAM,SAAgC,6BAAa,MAAM,IAAI,OAAM,CAAE;;;ANhY5E;AAOA,IAAM,qBAAqB,CAAC,cAAsB,UAAU,YAAY,EAAE,QAAQ,MAAM,EAAE;AAE1F,IAAM,UAAU,CAAC,cAAiC;AAChD,UAAQ,mBAAmB,SAAS,GAAG;AAAA,IACrC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI,MAAM,sCAAsC,SAAS,EAAE;AAAA,EACrE;AACF;AAEA,IAAMC,WAAU,CAAC,OAAoB,aAAsC;AACzE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAOC,QAAO,KAAK,OAAO,QAAQ;AAAA,EACpC;AAEA,SAAO,gBAAgB,KAAK;AAC9B;AAEA,IAAM,eAAe,CAAC,OAAmB,aAA8B;AACrE,QAAM,SAASA,QAAO,KAAK,KAAK;AAChC,SAAO,WAAW,OAAO,SAAS,QAAQ,IAAI;AAChD;AAEA,IAAM,gBAAN,MAAoB;AAAA,EACD;AAAA,EAEjB,YAAY,WAAmB;AAC7B,SAAK,MAAM,QAAQ,SAAS,EAAE,OAAO;AAAA,EACvC;AAAA,EAEA,OAAO,MAAmB,eAAgC;AACxD,SAAK,IAAI,OAAOD,SAAQ,MAAM,aAAa,CAAC;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,UAA2B;AAChC,WAAO,aAAa,KAAK,IAAI,OAAO,GAAG,QAAQ;AAAA,EACjD;AACF;AAEA,IAAM,gBAAN,MAAoB;AAAA,EACD;AAAA,EAEjB,YAAY,WAAmB,KAAkB;AAC/C,SAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAGA,SAAQ,GAAG,CAAC;AAAA,EACzD;AAAA,EAEA,OAAO,MAAmB,eAAgC;AACxD,SAAK,IAAI,OAAOA,SAAQ,MAAM,aAAa,CAAC;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,UAA2B;AAChC,WAAO,aAAa,KAAK,IAAI,OAAO,GAAG,QAAQ;AAAA,EACjD;AACF;AAEA,IAAM,wBAAN,MAA4B;AAAA,EAK1B,YACmB,KACA,IACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAFgB;AAAA,EACA;AAAA,EANX,MAAMC,QAAO,MAAM,CAAC;AAAA,EACX,SAAmB,CAAC;AAAA,EAC7B;AAAA,EAOR,OAAO,KAAkB;AACvB,SAAK,MAAMD,SAAQ,GAAG;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAmB,eAAgC;AACxD,SAAK,OAAO,KAAKA,SAAQ,MAAM,aAAa,CAAC;AAC7C,WAAOC,QAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,QAAQ;AACN,UAAM,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,EAAE,QAAQA,QAAO,OAAO,KAAK,MAAM,CAAC;AAClF,SAAK,UAAUA,QAAO,KAAK,OAAO,SAAS,OAAO,SAAS,EAAE,CAAC;AAC9D,WAAOA,QAAO,KAAK,OAAO,SAAS,GAAG,OAAO,SAAS,EAAE,CAAC;AAAA,EAC3D;AAAA,EAEA,aAAa;AACX,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,WAAO,KAAK;AAAA,EACd;AACF;AAEA,IAAM,0BAAN,MAA8B;AAAA,EAK5B,YACmB,KACA,IACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAFgB;AAAA,EACA;AAAA,EANX,MAAMA,QAAO,MAAM,CAAC;AAAA,EACX,SAAmB,CAAC;AAAA,EAC7B;AAAA,EAOR,OAAO,KAAkB;AACvB,SAAK,MAAMD,SAAQ,GAAG;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,SAAsB;AAC/B,SAAK,UAAUA,SAAQ,OAAO;AAC9B,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAmB,eAAgC;AACxD,SAAK,OAAO,KAAKA,SAAQ,MAAM,aAAa,CAAC;AAC7C,WAAOC,QAAO,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,QAAQ;AACN,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AACA,WAAOA,QAAO;AAAA,MACZ,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,EAAE,QAAQA,QAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,IACxF;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB,CAAC,cAAsB;AAC7C,MAAI,mBAAmB,SAAS,MAAM,aAAa;AACjD,UAAM,IAAI,MAAM,iCAAiC,SAAS,EAAE;AAAA,EAC9D;AACF;AAEO,IAAM,aAAa,CAAC,cAAsB,IAAI,cAAc,SAAS;AAErE,IAAM,aAAa,CAAC,WAAmB,QAC5C,IAAI,cAAc,WAAW,GAAG;AAE3B,IAAM,iBAAiB,CAAC,WAAmB,KAAkB,OAAoB;AACtF,kBAAgB,SAAS;AACzB,SAAO,IAAI,sBAAsBD,SAAQ,GAAG,GAAGA,SAAQ,EAAE,CAAC;AAC5D;AAEO,IAAM,mBAAmB,CAAC,WAAmB,KAAkB,OAAoB;AACxF,kBAAgB,SAAS;AACzB,SAAO,IAAI,wBAAwBA,SAAQ,GAAG,GAAGA,SAAQ,EAAE,CAAC;AAC9D;AAIO,SAAS,YACd,MACA,UACA;AACA,QAAM,YAAY,WAAW;AAC7B,MAAI,CAAC,WAAW,iBAAiB;AAC/B,UAAME,SAAQ,IAAI,MAAM,qCAAqC;AAC7D,QAAI,UAAU;AACZ,eAASA,QAAOD,QAAO,MAAM,CAAC,CAAC;AAC/B;AAAA,IACF;AACA,UAAMC;AAAA,EACR;AAEA,QAAM,QAAQD,QAAO,MAAM,IAAI;AAC/B,YAAU,gBAAgB,KAAK;AAC/B,MAAI,UAAU;AACZ,aAAS,MAAM,KAAK;AACpB;AAAA,EACF;AACA,SAAO;AACT;;;ADtLO,IAAME,UAAS,CAAC,KAAa,OAAe;AAC/C,QAAM,SAAgB,eAAe,eAAe,KAAK,EAAE;AAC3D,QAAM,WAAkB,iBAAiB,eAAe,KAAK,EAAE;AAE/D,SAAO;AAAA,IACH,MAAM,CAAC,aAAqB;AACxB,aAAO,OAAO,QAAQ;AACtB,eAAS,OAAO,QAAQ;AAAA,IAC5B;AAAA,IACA,SAAS,CAAC,cAAsB;AAC5B,YAAM,YAAY,OAAO,OAAO,SAAS;AAEzC,aAAOC,QAAO,OAAO,CAAC,WAAW,OAAO,MAAM,CAAC,CAAC;AAAA,IACpD;AAAA,IACA,SAAS,CAAC,YAAoB,YAAoB;AAC9C,eAAS,WAAW,OAAO;AAC3B,YAAM,YAAY,SAAS,OAAO,UAAU;AAE5C,aAAOA,QAAO,OAAO,CAAC,WAAW,SAAS,MAAM,CAAC,CAAC;AAAA,IACtD;AAAA,IACA,QAAQ,MAAM,OAAO,WAAW;AAAA,EACpC;AACJ;;;AUxBA;AAOA,IAAM,cAAc,MAChB,IAAI,WAAW;AAAA,EACX;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACxE;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAA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","names":["len","i","len2","isLE","Buffer","utf8ToBytes","i","byteLength","mul","name","Buffer","RuntimeBuffer","isMessage","ScalarType","ok","name","messageDesc","messageDesc","name","IMPLICIT","messageDesc","name","WireType","messageDesc","err","err","err","name","recurseDeps","EDITION_PROTO2","EDITION_PROTO3","IMPLICIT","_a","name","EDITION_PROTO2","EDITION_PROTO3","IMPLICIT","boot","ExtensionRangeOptions_VerificationState","FieldDescriptorProto_Type","FieldDescriptorProto_Label","FileOptions_OptimizeMode","FieldOptions_CType","FieldOptions_JSType","FieldOptions_OptionRetention","FieldOptions_OptionTargetType","MethodOptions_IdempotencyLevel","FeatureSet_VisibilityFeature_DefaultSymbolVisibility","FeatureSet_FieldPresence","FeatureSet_EnumType","FeatureSet_RepeatedFieldEncoding","FeatureSet_Utf8Validation","FeatureSet_MessageEncoding","FeatureSet_JsonFormat","FeatureSet_EnforceNamingStyle","GeneratedCodeInfo_Annotation_Semantic","Edition","SymbolVisibility","ok","LEGACY_REQUIRED","name","NullValue","value","desc","LEGACY_REQUIRED","IMPLICIT","makeWriteOptions","LEGACY_REQUIRED","IMPLICIT","makeReadOptions","readMessage","makeReadOptions","readMessage","readField","field","readMessageField","readListField","readMessage","Buffer","schemaKey","schema","encode","err","decode","Buffer","decode","encode","getHeaders","name","HEADER_SIZE","HEADER_SIZE","Buffer","getHeaders","encode","decode","Buffer","HEADER_SIZE","getHeaders","name","ThpPairingMethod","decode","encode","name","Buffer","isLE","_32n","BLOCK_SIZE","POLY","mul2","sbox","sbox2","mul2","t0","t1","t2","t3","isLE","BLOCK_SIZE","isLE","isBytes","abytes","aexists","aoutput","clean","createView","utf8ToBytes","toBytes","utf8ToBytes","abytes","Hash","toBytes","Hash","toBytes","clean","aexists","abytes","setBigUint64","isLE","_32n","Hash","createView","aexists","toBytes","abytes","aoutput","clean","clean","clean","toBytes","Buffer","error","aesgcm","Buffer","Buffer","sha256","Buffer","Buffer","randomBytes","ThpPairingMethod","Buffer","aesgcm","sha256","aesgcm","Buffer","error","decode","Buffer","error","Buffer","name","ThpPairingMethod","aesgcm","Buffer","name","encode","name","Buffer","name","data","error","Buffer","readResult","data","error","isAckExpected","name","response","Buffer","error"]}