@devvit/client 0.12.2-next-2025-10-14-19-55-49-9af23873b.0 → 0.12.2-next-2025-10-14-20-12-24-67ef9681c.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-meta.min.json +17 -4
- package/client.min.js +1 -1
- package/client.min.js.map +4 -4
- package/effects/web-view-mode.d.ts.map +1 -1
- package/effects/web-view-mode.js +9 -4
- package/package.json +7 -7
package/client.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/rpc/service.js", "../../../node_modules/protobufjs/src/rpc.js", "../../../node_modules/protobufjs/src/roots.js", "../../../node_modules/protobufjs/src/index-minimal.js", "../../../node_modules/protobufjs/minimal.js", "../src/clientContext.ts", "../../protos/dist/json/devvit/ui/effects/v1alpha/effect.js", "../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/post_message.js", "../../protos/dist/types/devvit/ui/events/v1alpha/web_view.js", "../../protos/dist/types/google/protobuf/struct.js", "../../protos/dist/types/typeRegistry.js", "../../protos/dist/types/devvit/ui/effect_types/v1alpha/show_form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/field.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/type.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/value.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/app_permission.js", "../../protos/dist/types/reddit/devvit/app_permission/v1/app_permission.js", "../../../node_modules/long/index.js", "../../protos/dist/types/google/protobuf/timestamp.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/realtime_subscriptions.js", "../../protos/dist/types/devvit/events/v1alpha/realtime.js", "../../protos/dist/types/google/protobuf/empty.js", "../../protos/dist/types/devvit/ui/effects/web_view/v1alpha/immersive_mode.js", "../../shared-types/dist/client/emit-effect.js", "../src/effects/navigate-to.ts", "../../protos/dist/json/reddit/devvit/app_permission/v1/app_permission.js", "../src/effects/run-as-user.ts", "../../shared-types/dist/constants.js", "../src/effects/share.ts", "../src/effects/helpers/assert-valid-form-fields.ts", "../src/effects/helpers/get-form-values.ts", "../src/effects/helpers/transform-form.ts", "../src/effects/show-form.ts", "../src/effects/show-toast.ts", "../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js", "../src/effects/web-view-mode.ts", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n", "\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n", "\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n", "\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n", "// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n", "import type { Context } from '@devvit/shared-types/client/client-context.js';\n\n// Use nullish coalescing for local development.\nexport const context: Context = globalThis.devvit?.context!;\n", "/**\n * #effect.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var EffectType;\n(function (EffectType) {\n /** EFFECT_REALTIME_SUB - Notify client to synchronize its realtime subscriptions */\n EffectType[EffectType[\"EFFECT_REALTIME_SUB\"] = 0] = \"EFFECT_REALTIME_SUB\";\n /** EFFECT_RERENDER_UI - Trigger a re-render for apps that have visible UI */\n EffectType[EffectType[\"EFFECT_RERENDER_UI\"] = 1] = \"EFFECT_RERENDER_UI\";\n /** EFFECT_RELOAD_PART - Notify the client that parts of a subreddit, post, or comment should be reloaded */\n EffectType[EffectType[\"EFFECT_RELOAD_PART\"] = 2] = \"EFFECT_RELOAD_PART\";\n /** EFFECT_SHOW_FORM - Display a user input form */\n EffectType[EffectType[\"EFFECT_SHOW_FORM\"] = 3] = \"EFFECT_SHOW_FORM\";\n /** EFFECT_SHOW_TOAST - Display a transient toast message */\n EffectType[EffectType[\"EFFECT_SHOW_TOAST\"] = 4] = \"EFFECT_SHOW_TOAST\";\n /** EFFECT_NAVIGATE_TO_URL - Notify the client to navigate to a URL */\n EffectType[EffectType[\"EFFECT_NAVIGATE_TO_URL\"] = 5] = \"EFFECT_NAVIGATE_TO_URL\";\n /** EFFECT_SET_INTERVALS - This updates the list of active timers. */\n EffectType[EffectType[\"EFFECT_SET_INTERVALS\"] = 7] = \"EFFECT_SET_INTERVALS\";\n /** EFFECT_CREATE_ORDER - This starts a purchase flow */\n EffectType[EffectType[\"EFFECT_CREATE_ORDER\"] = 8] = \"EFFECT_CREATE_ORDER\";\n /** EFFECT_WEB_VIEW - Control and communicate with WebViews */\n EffectType[EffectType[\"EFFECT_WEB_VIEW\"] = 9] = \"EFFECT_WEB_VIEW\";\n /** EFFECT_CAN_RUN_AS_USER - Check if the app can execute some actions as the user */\n EffectType[EffectType[\"EFFECT_CAN_RUN_AS_USER\"] = 11] = \"EFFECT_CAN_RUN_AS_USER\";\n EffectType[EffectType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(EffectType || (EffectType = {}));\n", "/**\n * #post_message.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var WebViewInternalMessageScope;\n(function (WebViewInternalMessageScope) {\n /** CLIENT - Message is intended for the client only */\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"CLIENT\"] = 0] = \"CLIENT\";\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewInternalMessageScope || (WebViewInternalMessageScope = {}));\n", "/**\n * #web_view.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Value } from \"../../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormCanceledEvent, FormSubmittedEvent } from \"../../effect_types/v1alpha/show_form.js\";\nimport { ConsentStatusEvent } from \"../../effects/v1alpha/app_permission.js\";\nimport { RealtimeSubscriptionEvent } from \"../../effects/v1alpha/realtime_subscriptions.js\";\nimport { webViewImmersiveModeFromJSON, webViewImmersiveModeToJSON, } from \"../../effects/web_view/v1alpha/immersive_mode.js\";\nexport var WebViewVisibility;\n(function (WebViewVisibility) {\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_VISIBLE\"] = 0] = \"WEBVIEW_VISIBLE\";\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_HIDDEN\"] = 1] = \"WEBVIEW_HIDDEN\";\n WebViewVisibility[WebViewVisibility[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewVisibility || (WebViewVisibility = {}));\nexport function webViewVisibilityFromJSON(object) {\n switch (object) {\n case 0:\n case \"WEBVIEW_VISIBLE\":\n return WebViewVisibility.WEBVIEW_VISIBLE;\n case 1:\n case \"WEBVIEW_HIDDEN\":\n return WebViewVisibility.WEBVIEW_HIDDEN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewVisibility.UNRECOGNIZED;\n }\n}\nexport function webViewVisibilityToJSON(object) {\n switch (object) {\n case WebViewVisibility.WEBVIEW_VISIBLE:\n return 0;\n case WebViewVisibility.WEBVIEW_HIDDEN:\n return 1;\n case WebViewVisibility.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewPostMessageEvent() {\n return { message: undefined, jsonString: \"\" };\n}\nexport const WebViewPostMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewPostMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== undefined) {\n Value.encode(Value.wrap(message.message), writer.uint32(10).fork()).ldelim();\n }\n if (message.jsonString !== \"\") {\n writer.uint32(18).string(message.jsonString);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewPostMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.jsonString = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n message: isSet(object?.message) ? object.message : undefined,\n jsonString: isSet(object.jsonString) ? globalThis.String(object.jsonString) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== undefined) {\n obj.message = message.message;\n }\n if (message.jsonString !== \"\") {\n obj.jsonString = message.jsonString;\n }\n return obj;\n },\n create(base) {\n return WebViewPostMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewPostMessageEvent();\n message.message = object.message ?? undefined;\n message.jsonString = object.jsonString ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewPostMessageEvent.$type, WebViewPostMessageEvent);\nfunction createBaseWebViewFullScreenEvent() {\n return { visibility: 0 };\n}\nexport const WebViewFullScreenEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewFullScreenEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.visibility !== 0) {\n writer.uint32(8).int32(message.visibility);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewFullScreenEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.visibility = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { visibility: isSet(object.visibility) ? webViewVisibilityFromJSON(object.visibility) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.visibility !== 0) {\n obj.visibility = webViewVisibilityToJSON(message.visibility);\n }\n return obj;\n },\n create(base) {\n return WebViewFullScreenEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewFullScreenEvent();\n message.visibility = object.visibility ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewFullScreenEvent.$type, WebViewFullScreenEvent);\nfunction createBaseWebViewEvent() {\n return { postMessage: undefined, fullScreen: undefined };\n}\nexport const WebViewEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postMessage !== undefined) {\n WebViewPostMessageEvent.encode(message.postMessage, writer.uint32(10).fork()).ldelim();\n }\n if (message.fullScreen !== undefined) {\n WebViewFullScreenEvent.encode(message.fullScreen, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postMessage = WebViewPostMessageEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.fullScreen = WebViewFullScreenEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postMessage: isSet(object.postMessage) ? WebViewPostMessageEvent.fromJSON(object.postMessage) : undefined,\n fullScreen: isSet(object.fullScreen) ? WebViewFullScreenEvent.fromJSON(object.fullScreen) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postMessage !== undefined) {\n obj.postMessage = WebViewPostMessageEvent.toJSON(message.postMessage);\n }\n if (message.fullScreen !== undefined) {\n obj.fullScreen = WebViewFullScreenEvent.toJSON(message.fullScreen);\n }\n return obj;\n },\n create(base) {\n return WebViewEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewEvent();\n message.postMessage = (object.postMessage !== undefined && object.postMessage !== null)\n ? WebViewPostMessageEvent.fromPartial(object.postMessage)\n : undefined;\n message.fullScreen = (object.fullScreen !== undefined && object.fullScreen !== null)\n ? WebViewFullScreenEvent.fromPartial(object.fullScreen)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewEvent.$type, WebViewEvent);\nfunction createBaseWebViewImmersiveModeChangedEvent() {\n return { immersiveMode: 0 };\n}\nexport const WebViewImmersiveModeChangedEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewImmersiveModeChangedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.immersiveMode !== 0) {\n writer.uint32(8).int32(message.immersiveMode);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewImmersiveModeChangedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.immersiveMode = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { immersiveMode: isSet(object.immersiveMode) ? webViewImmersiveModeFromJSON(object.immersiveMode) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.immersiveMode !== 0) {\n obj.immersiveMode = webViewImmersiveModeToJSON(message.immersiveMode);\n }\n return obj;\n },\n create(base) {\n return WebViewImmersiveModeChangedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewImmersiveModeChangedEvent();\n message.immersiveMode = object.immersiveMode ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewImmersiveModeChangedEvent.$type, WebViewImmersiveModeChangedEvent);\nfunction createBaseWebViewInternalEventMessage() {\n return {\n id: \"\",\n formCanceled: undefined,\n formSubmitted: undefined,\n realtimeEvent: undefined,\n immersiveModeEvent: undefined,\n consentStatus: undefined,\n };\n}\nexport const WebViewInternalEventMessage = {\n $type: \"devvit.ui.events.v1alpha.WebViewInternalEventMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.formCanceled !== undefined) {\n FormCanceledEvent.encode(message.formCanceled, writer.uint32(18).fork()).ldelim();\n }\n if (message.formSubmitted !== undefined) {\n FormSubmittedEvent.encode(message.formSubmitted, writer.uint32(26).fork()).ldelim();\n }\n if (message.realtimeEvent !== undefined) {\n RealtimeSubscriptionEvent.encode(message.realtimeEvent, writer.uint32(34).fork()).ldelim();\n }\n if (message.immersiveModeEvent !== undefined) {\n WebViewImmersiveModeChangedEvent.encode(message.immersiveModeEvent, writer.uint32(42).fork()).ldelim();\n }\n if (message.consentStatus !== undefined) {\n ConsentStatusEvent.encode(message.consentStatus, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewInternalEventMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.id = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formCanceled = FormCanceledEvent.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.formSubmitted = FormSubmittedEvent.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.realtimeEvent = RealtimeSubscriptionEvent.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.immersiveModeEvent = WebViewImmersiveModeChangedEvent.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.consentStatus = ConsentStatusEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n formCanceled: isSet(object.formCanceled) ? FormCanceledEvent.fromJSON(object.formCanceled) : undefined,\n formSubmitted: isSet(object.formSubmitted) ? FormSubmittedEvent.fromJSON(object.formSubmitted) : undefined,\n realtimeEvent: isSet(object.realtimeEvent) ? RealtimeSubscriptionEvent.fromJSON(object.realtimeEvent) : undefined,\n immersiveModeEvent: isSet(object.immersiveModeEvent)\n ? WebViewImmersiveModeChangedEvent.fromJSON(object.immersiveModeEvent)\n : undefined,\n consentStatus: isSet(object.consentStatus) ? ConsentStatusEvent.fromJSON(object.consentStatus) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.formCanceled !== undefined) {\n obj.formCanceled = FormCanceledEvent.toJSON(message.formCanceled);\n }\n if (message.formSubmitted !== undefined) {\n obj.formSubmitted = FormSubmittedEvent.toJSON(message.formSubmitted);\n }\n if (message.realtimeEvent !== undefined) {\n obj.realtimeEvent = RealtimeSubscriptionEvent.toJSON(message.realtimeEvent);\n }\n if (message.immersiveModeEvent !== undefined) {\n obj.immersiveModeEvent = WebViewImmersiveModeChangedEvent.toJSON(message.immersiveModeEvent);\n }\n if (message.consentStatus !== undefined) {\n obj.consentStatus = ConsentStatusEvent.toJSON(message.consentStatus);\n }\n return obj;\n },\n create(base) {\n return WebViewInternalEventMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewInternalEventMessage();\n message.id = object.id ?? \"\";\n message.formCanceled = (object.formCanceled !== undefined && object.formCanceled !== null)\n ? FormCanceledEvent.fromPartial(object.formCanceled)\n : undefined;\n message.formSubmitted = (object.formSubmitted !== undefined && object.formSubmitted !== null)\n ? FormSubmittedEvent.fromPartial(object.formSubmitted)\n : undefined;\n message.realtimeEvent = (object.realtimeEvent !== undefined && object.realtimeEvent !== null)\n ? RealtimeSubscriptionEvent.fromPartial(object.realtimeEvent)\n : undefined;\n message.immersiveModeEvent = (object.immersiveModeEvent !== undefined && object.immersiveModeEvent !== null)\n ? WebViewImmersiveModeChangedEvent.fromPartial(object.immersiveModeEvent)\n : undefined;\n message.consentStatus = (object.consentStatus !== undefined && object.consentStatus !== null)\n ? ConsentStatusEvent.fromPartial(object.consentStatus)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewInternalEventMessage.$type, WebViewInternalEventMessage);\nfunction createBaseWebViewMessageEvent() {\n return { data: undefined };\n}\nexport const WebViewMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.data !== undefined) {\n WebViewMessageEvent_MessageData.encode(message.data, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.data = WebViewMessageEvent_MessageData.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { data: isSet(object.data) ? WebViewMessageEvent_MessageData.fromJSON(object.data) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.data !== undefined) {\n obj.data = WebViewMessageEvent_MessageData.toJSON(message.data);\n }\n return obj;\n },\n create(base) {\n return WebViewMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewMessageEvent();\n message.data = (object.data !== undefined && object.data !== null)\n ? WebViewMessageEvent_MessageData.fromPartial(object.data)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewMessageEvent.$type, WebViewMessageEvent);\nfunction createBaseWebViewMessageEvent_MessageData() {\n return { type: \"\", data: undefined };\n}\nexport const WebViewMessageEvent_MessageData = {\n $type: \"devvit.ui.events.v1alpha.WebViewMessageEvent.MessageData\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.type !== \"\") {\n writer.uint32(10).string(message.type);\n }\n if (message.data !== undefined) {\n WebViewInternalEventMessage.encode(message.data, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewMessageEvent_MessageData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.type = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = WebViewInternalEventMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n data: isSet(object.data) ? WebViewInternalEventMessage.fromJSON(object.data) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.type !== \"\") {\n obj.type = message.type;\n }\n if (message.data !== undefined) {\n obj.data = WebViewInternalEventMessage.toJSON(message.data);\n }\n return obj;\n },\n create(base) {\n return WebViewMessageEvent_MessageData.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewMessageEvent_MessageData();\n message.type = object.type ?? \"\";\n message.data = (object.data !== undefined && object.data !== null)\n ? WebViewInternalEventMessage.fromPartial(object.data)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewMessageEvent_MessageData.$type, WebViewMessageEvent_MessageData);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #struct.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\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 */\nexport var NullValue;\n(function (NullValue) {\n /** NULL_VALUE - Null value. */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n NullValue[NullValue[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(NullValue || (NullValue = {}));\nexport function nullValueFromJSON(object) {\n switch (object) {\n case 0:\n case \"NULL_VALUE\":\n return NullValue.NULL_VALUE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return NullValue.UNRECOGNIZED;\n }\n}\nexport function nullValueToJSON(object) {\n switch (object) {\n case NullValue.NULL_VALUE:\n return 0;\n case NullValue.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseStruct() {\n return { fields: {} };\n}\nexport const Struct = {\n $type: \"google.protobuf.Struct\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.fields).forEach(([key, value]) => {\n if (value !== undefined) {\n Struct_FieldsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n }\n });\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = Struct_FieldsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.fields[entry1.key] = entry1.value;\n }\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: isObject(object.fields)\n ? Object.entries(object.fields).reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {})\n : {},\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields) {\n const entries = Object.entries(message.fields);\n if (entries.length > 0) {\n obj.fields = {};\n entries.forEach(([k, v]) => {\n obj.fields[k] = v;\n });\n }\n }\n return obj;\n },\n create(base) {\n return Struct.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct();\n message.fields = Object.entries(object.fields ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {});\n return message;\n },\n wrap(object) {\n const struct = createBaseStruct();\n if (object !== undefined) {\n for (const key of Object.keys(object)) {\n struct.fields[key] = object[key];\n }\n }\n return struct;\n },\n unwrap(message) {\n const object = {};\n if (message.fields) {\n for (const key of Object.keys(message.fields)) {\n object[key] = message.fields[key];\n }\n }\n return object;\n },\n};\nmessageTypeRegistry.set(Struct.$type, Struct);\nfunction createBaseStruct_FieldsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const Struct_FieldsEntry = {\n $type: \"google.protobuf.Struct.FieldsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct_FieldsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object?.value) ? object.value : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return Struct_FieldsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct_FieldsEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Struct_FieldsEntry.$type, Struct_FieldsEntry);\nfunction createBaseValue() {\n return {\n nullValue: undefined,\n numberValue: undefined,\n stringValue: undefined,\n boolValue: undefined,\n structValue: undefined,\n listValue: undefined,\n };\n}\nexport const Value = {\n $type: \"google.protobuf.Value\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.nullValue !== undefined) {\n writer.uint32(8).int32(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(17).double(message.numberValue);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(26).string(message.stringValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.structValue !== undefined) {\n Struct.encode(Struct.wrap(message.structValue), writer.uint32(42).fork()).ldelim();\n }\n if (message.listValue !== undefined) {\n ListValue.encode(ListValue.wrap(message.listValue), writer.uint32(50).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.nullValue = reader.int32();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n nullValue: isSet(object.nullValue) ? nullValueFromJSON(object.nullValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n structValue: isObject(object.structValue) ? object.structValue : undefined,\n listValue: globalThis.Array.isArray(object.listValue) ? [...object.listValue] : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.nullValue !== undefined) {\n obj.nullValue = nullValueToJSON(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.structValue !== undefined) {\n obj.structValue = message.structValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = message.listValue;\n }\n return obj;\n },\n create(base) {\n return Value.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseValue();\n message.nullValue = object.nullValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.structValue = object.structValue ?? undefined;\n message.listValue = object.listValue ?? undefined;\n return message;\n },\n wrap(value) {\n const result = createBaseValue();\n if (value === null) {\n result.nullValue = NullValue.NULL_VALUE;\n }\n else if (typeof value === \"boolean\") {\n result.boolValue = value;\n }\n else if (typeof value === \"number\") {\n result.numberValue = value;\n }\n else if (typeof value === \"string\") {\n result.stringValue = value;\n }\n else if (globalThis.Array.isArray(value)) {\n result.listValue = value;\n }\n else if (typeof value === \"object\") {\n result.structValue = value;\n }\n else if (typeof value !== \"undefined\") {\n throw new globalThis.Error(\"Unsupported any value type: \" + typeof value);\n }\n return result;\n },\n unwrap(message) {\n if (message.stringValue !== undefined) {\n return message.stringValue;\n }\n else if (message?.numberValue !== undefined) {\n return message.numberValue;\n }\n else if (message?.boolValue !== undefined) {\n return message.boolValue;\n }\n else if (message?.structValue !== undefined) {\n return message.structValue;\n }\n else if (message?.listValue !== undefined) {\n return message.listValue;\n }\n else if (message?.nullValue !== undefined) {\n return null;\n }\n return undefined;\n },\n};\nmessageTypeRegistry.set(Value.$type, Value);\nfunction createBaseListValue() {\n return { values: [] };\n}\nexport const ListValue = {\n $type: \"google.protobuf.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n Value.encode(Value.wrap(v), writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(Value.unwrap(Value.decode(reader, reader.uint32())));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { values: globalThis.Array.isArray(object?.values) ? [...object.values] : [] };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseListValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n wrap(array) {\n const result = createBaseListValue();\n result.values = array ?? [];\n return result;\n },\n unwrap(message) {\n if (message?.hasOwnProperty(\"values\") && globalThis.Array.isArray(message.values)) {\n return message.values;\n }\n else {\n return message;\n }\n },\n};\nmessageTypeRegistry.set(ListValue.$type, ListValue);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #typeRegistry.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport const messageTypeRegistry = new Map();\n", "/**\n * #show_form.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { Form } from \"../../form_builder/v1alpha/form.js\";\nimport { FormFieldValue } from \"../../form_builder/v1alpha/value.js\";\nfunction createBaseShowFormEffect() {\n return { form: undefined };\n}\nexport const ShowFormEffect = {\n $type: \"devvit.ui.effect_types.v1alpha.ShowFormEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.form !== undefined) {\n Form.encode(message.form, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseShowFormEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.form = Form.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { form: isSet(object.form) ? Form.fromJSON(object.form) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.form !== undefined) {\n obj.form = Form.toJSON(message.form);\n }\n return obj;\n },\n create(base) {\n return ShowFormEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseShowFormEffect();\n message.form = (object.form !== undefined && object.form !== null) ? Form.fromPartial(object.form) : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(ShowFormEffect.$type, ShowFormEffect);\nfunction createBaseFormSubmittedEvent() {\n return { results: {}, formId: undefined };\n}\nexport const FormSubmittedEvent = {\n $type: \"devvit.ui.effect_types.v1alpha.FormSubmittedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.results).forEach(([key, value]) => {\n FormSubmittedEvent_ResultsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n });\n if (message.formId !== undefined) {\n writer.uint32(18).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = FormSubmittedEvent_ResultsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.results[entry1.key] = entry1.value;\n }\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n results: isObject(object.results)\n ? Object.entries(object.results).reduce((acc, [key, value]) => {\n acc[key] = FormFieldValue.fromJSON(value);\n return acc;\n }, {})\n : {},\n formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.results) {\n const entries = Object.entries(message.results);\n if (entries.length > 0) {\n obj.results = {};\n entries.forEach(([k, v]) => {\n obj.results[k] = FormFieldValue.toJSON(v);\n });\n }\n }\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent();\n message.results = Object.entries(object.results ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = FormFieldValue.fromPartial(value);\n }\n return acc;\n }, {});\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent.$type, FormSubmittedEvent);\nfunction createBaseFormSubmittedEvent_ResultsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const FormSubmittedEvent_ResultsEntry = {\n $type: \"devvit.ui.effect_types.v1alpha.FormSubmittedEvent.ResultsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n FormFieldValue.encode(message.value, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = FormFieldValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? FormFieldValue.fromJSON(object.value) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = FormFieldValue.toJSON(message.value);\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent_ResultsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? FormFieldValue.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent_ResultsEntry.$type, FormSubmittedEvent_ResultsEntry);\nfunction createBaseFormCanceledEvent() {\n return { formId: undefined };\n}\nexport const FormCanceledEvent = {\n $type: \"devvit.ui.effect_types.v1alpha.FormCanceledEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.formId !== undefined) {\n writer.uint32(10).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormCanceledEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormCanceledEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormCanceledEvent();\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormCanceledEvent.$type, FormCanceledEvent);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #form.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormField } from \"./field.js\";\nfunction createBaseForm() {\n return {\n fields: [],\n title: undefined,\n shortDescription: undefined,\n acceptLabel: undefined,\n cancelLabel: undefined,\n id: undefined,\n };\n}\nexport const Form = {\n $type: \"devvit.ui.form_builder.v1alpha.Form\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.title !== undefined) {\n writer.uint32(18).string(message.title);\n }\n if (message.shortDescription !== undefined) {\n writer.uint32(26).string(message.shortDescription);\n }\n if (message.acceptLabel !== undefined) {\n writer.uint32(34).string(message.acceptLabel);\n }\n if (message.cancelLabel !== undefined) {\n writer.uint32(42).string(message.cancelLabel);\n }\n if (message.id !== undefined) {\n writer.uint32(50).string(message.id);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseForm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.title = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.shortDescription = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.acceptLabel = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.cancelLabel = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.id = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n shortDescription: isSet(object.shortDescription) ? globalThis.String(object.shortDescription) : undefined,\n acceptLabel: isSet(object.acceptLabel) ? globalThis.String(object.acceptLabel) : undefined,\n cancelLabel: isSet(object.cancelLabel) ? globalThis.String(object.cancelLabel) : undefined,\n id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n if (message.title !== undefined) {\n obj.title = message.title;\n }\n if (message.shortDescription !== undefined) {\n obj.shortDescription = message.shortDescription;\n }\n if (message.acceptLabel !== undefined) {\n obj.acceptLabel = message.acceptLabel;\n }\n if (message.cancelLabel !== undefined) {\n obj.cancelLabel = message.cancelLabel;\n }\n if (message.id !== undefined) {\n obj.id = message.id;\n }\n return obj;\n },\n create(base) {\n return Form.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseForm();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n message.title = object.title ?? undefined;\n message.shortDescription = object.shortDescription ?? undefined;\n message.acceptLabel = object.acceptLabel ?? undefined;\n message.cancelLabel = object.cancelLabel ?? undefined;\n message.id = object.id ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Form.$type, Form);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #field.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nimport { FormFieldValue } from \"./value.js\";\nfunction createBaseFormField() {\n return {\n fieldId: \"\",\n fieldType: 0,\n label: \"\",\n helpText: undefined,\n defaultValue: undefined,\n required: undefined,\n disabled: undefined,\n fieldConfig: undefined,\n isSecret: undefined,\n };\n}\nexport const FormField = {\n $type: \"devvit.ui.form_builder.v1alpha.FormField\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldId !== \"\") {\n writer.uint32(10).string(message.fieldId);\n }\n if (message.fieldType !== 0) {\n writer.uint32(16).int32(message.fieldType);\n }\n if (message.label !== \"\") {\n writer.uint32(26).string(message.label);\n }\n if (message.helpText !== undefined) {\n writer.uint32(34).string(message.helpText);\n }\n if (message.defaultValue !== undefined) {\n FormFieldValue.encode(message.defaultValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.required !== undefined) {\n writer.uint32(48).bool(message.required);\n }\n if (message.disabled !== undefined) {\n writer.uint32(56).bool(message.disabled);\n }\n if (message.fieldConfig !== undefined) {\n FieldConfig.encode(message.fieldConfig, writer.uint32(66).fork()).ldelim();\n }\n if (message.isSecret !== undefined) {\n writer.uint32(72).bool(message.isSecret);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormField();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fieldId = reader.string();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.label = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.helpText = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.defaultValue = FormFieldValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 48) {\n break;\n }\n message.required = reader.bool();\n continue;\n case 7:\n if (tag !== 56) {\n break;\n }\n message.disabled = reader.bool();\n continue;\n case 8:\n if (tag !== 66) {\n break;\n }\n message.fieldConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 9:\n if (tag !== 72) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldId: isSet(object.fieldId) ? globalThis.String(object.fieldId) : \"\",\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n helpText: isSet(object.helpText) ? globalThis.String(object.helpText) : undefined,\n defaultValue: isSet(object.defaultValue) ? FormFieldValue.fromJSON(object.defaultValue) : undefined,\n required: isSet(object.required) ? globalThis.Boolean(object.required) : undefined,\n disabled: isSet(object.disabled) ? globalThis.Boolean(object.disabled) : undefined,\n fieldConfig: isSet(object.fieldConfig) ? FieldConfig.fromJSON(object.fieldConfig) : undefined,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldId !== \"\") {\n obj.fieldId = message.fieldId;\n }\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.helpText !== undefined) {\n obj.helpText = message.helpText;\n }\n if (message.defaultValue !== undefined) {\n obj.defaultValue = FormFieldValue.toJSON(message.defaultValue);\n }\n if (message.required !== undefined) {\n obj.required = message.required;\n }\n if (message.disabled !== undefined) {\n obj.disabled = message.disabled;\n }\n if (message.fieldConfig !== undefined) {\n obj.fieldConfig = FieldConfig.toJSON(message.fieldConfig);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n return obj;\n },\n create(base) {\n return FormField.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormField();\n message.fieldId = object.fieldId ?? \"\";\n message.fieldType = object.fieldType ?? 0;\n message.label = object.label ?? \"\";\n message.helpText = object.helpText ?? undefined;\n message.defaultValue = (object.defaultValue !== undefined && object.defaultValue !== null)\n ? FormFieldValue.fromPartial(object.defaultValue)\n : undefined;\n message.required = object.required ?? undefined;\n message.disabled = object.disabled ?? undefined;\n message.fieldConfig = (object.fieldConfig !== undefined && object.fieldConfig !== null)\n ? FieldConfig.fromPartial(object.fieldConfig)\n : undefined;\n message.isSecret = object.isSecret ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormField.$type, FormField);\nfunction createBaseFieldConfig() {\n return {\n stringConfig: undefined,\n paragraphConfig: undefined,\n numberConfig: undefined,\n booleanConfig: undefined,\n listConfig: undefined,\n selectionConfig: undefined,\n groupConfig: undefined,\n };\n}\nexport const FieldConfig = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.stringConfig !== undefined) {\n FieldConfig_String.encode(message.stringConfig, writer.uint32(10).fork()).ldelim();\n }\n if (message.paragraphConfig !== undefined) {\n FieldConfig_Paragraph.encode(message.paragraphConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.numberConfig !== undefined) {\n FieldConfig_Number.encode(message.numberConfig, writer.uint32(26).fork()).ldelim();\n }\n if (message.booleanConfig !== undefined) {\n FieldConfig_Boolean.encode(message.booleanConfig, writer.uint32(34).fork()).ldelim();\n }\n if (message.listConfig !== undefined) {\n FieldConfig_List.encode(message.listConfig, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionConfig !== undefined) {\n FieldConfig_Selection.encode(message.selectionConfig, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupConfig !== undefined) {\n FieldConfig_Group.encode(message.groupConfig, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.stringConfig = FieldConfig_String.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.paragraphConfig = FieldConfig_Paragraph.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.numberConfig = FieldConfig_Number.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.booleanConfig = FieldConfig_Boolean.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listConfig = FieldConfig_List.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionConfig = FieldConfig_Selection.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupConfig = FieldConfig_Group.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n stringConfig: isSet(object.stringConfig) ? FieldConfig_String.fromJSON(object.stringConfig) : undefined,\n paragraphConfig: isSet(object.paragraphConfig)\n ? FieldConfig_Paragraph.fromJSON(object.paragraphConfig)\n : undefined,\n numberConfig: isSet(object.numberConfig) ? FieldConfig_Number.fromJSON(object.numberConfig) : undefined,\n booleanConfig: isSet(object.booleanConfig) ? FieldConfig_Boolean.fromJSON(object.booleanConfig) : undefined,\n listConfig: isSet(object.listConfig) ? FieldConfig_List.fromJSON(object.listConfig) : undefined,\n selectionConfig: isSet(object.selectionConfig)\n ? FieldConfig_Selection.fromJSON(object.selectionConfig)\n : undefined,\n groupConfig: isSet(object.groupConfig) ? FieldConfig_Group.fromJSON(object.groupConfig) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.stringConfig !== undefined) {\n obj.stringConfig = FieldConfig_String.toJSON(message.stringConfig);\n }\n if (message.paragraphConfig !== undefined) {\n obj.paragraphConfig = FieldConfig_Paragraph.toJSON(message.paragraphConfig);\n }\n if (message.numberConfig !== undefined) {\n obj.numberConfig = FieldConfig_Number.toJSON(message.numberConfig);\n }\n if (message.booleanConfig !== undefined) {\n obj.booleanConfig = FieldConfig_Boolean.toJSON(message.booleanConfig);\n }\n if (message.listConfig !== undefined) {\n obj.listConfig = FieldConfig_List.toJSON(message.listConfig);\n }\n if (message.selectionConfig !== undefined) {\n obj.selectionConfig = FieldConfig_Selection.toJSON(message.selectionConfig);\n }\n if (message.groupConfig !== undefined) {\n obj.groupConfig = FieldConfig_Group.toJSON(message.groupConfig);\n }\n return obj;\n },\n create(base) {\n return FieldConfig.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig();\n message.stringConfig = (object.stringConfig !== undefined && object.stringConfig !== null)\n ? FieldConfig_String.fromPartial(object.stringConfig)\n : undefined;\n message.paragraphConfig = (object.paragraphConfig !== undefined && object.paragraphConfig !== null)\n ? FieldConfig_Paragraph.fromPartial(object.paragraphConfig)\n : undefined;\n message.numberConfig = (object.numberConfig !== undefined && object.numberConfig !== null)\n ? FieldConfig_Number.fromPartial(object.numberConfig)\n : undefined;\n message.booleanConfig = (object.booleanConfig !== undefined && object.booleanConfig !== null)\n ? FieldConfig_Boolean.fromPartial(object.booleanConfig)\n : undefined;\n message.listConfig = (object.listConfig !== undefined && object.listConfig !== null)\n ? FieldConfig_List.fromPartial(object.listConfig)\n : undefined;\n message.selectionConfig = (object.selectionConfig !== undefined && object.selectionConfig !== null)\n ? FieldConfig_Selection.fromPartial(object.selectionConfig)\n : undefined;\n message.groupConfig = (object.groupConfig !== undefined && object.groupConfig !== null)\n ? FieldConfig_Group.fromPartial(object.groupConfig)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig.$type, FieldConfig);\nfunction createBaseFieldConfig_String() {\n return { minLength: undefined, maxLength: undefined, placeholder: undefined };\n}\nexport const FieldConfig_String = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.String\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.minLength !== undefined) {\n writer.uint32(8).int32(message.minLength);\n }\n if (message.maxLength !== undefined) {\n writer.uint32(16).int32(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_String();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.minLength = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.maxLength = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n minLength: isSet(object.minLength) ? globalThis.Number(object.minLength) : undefined,\n maxLength: isSet(object.maxLength) ? globalThis.Number(object.maxLength) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.minLength !== undefined) {\n obj.minLength = Math.round(message.minLength);\n }\n if (message.maxLength !== undefined) {\n obj.maxLength = Math.round(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_String.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_String();\n message.minLength = object.minLength ?? undefined;\n message.maxLength = object.maxLength ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_String.$type, FieldConfig_String);\nfunction createBaseFieldConfig_Paragraph() {\n return { maxCharacters: undefined, lineHeight: undefined, placeholder: undefined };\n}\nexport const FieldConfig_Paragraph = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Paragraph\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.maxCharacters !== undefined) {\n writer.uint32(8).int32(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n writer.uint32(16).int32(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Paragraph();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.maxCharacters = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.lineHeight = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n maxCharacters: isSet(object.maxCharacters) ? globalThis.Number(object.maxCharacters) : undefined,\n lineHeight: isSet(object.lineHeight) ? globalThis.Number(object.lineHeight) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.maxCharacters !== undefined) {\n obj.maxCharacters = Math.round(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n obj.lineHeight = Math.round(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Paragraph.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Paragraph();\n message.maxCharacters = object.maxCharacters ?? undefined;\n message.lineHeight = object.lineHeight ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Paragraph.$type, FieldConfig_Paragraph);\nfunction createBaseFieldConfig_Number() {\n return { step: undefined, min: undefined, max: undefined };\n}\nexport const FieldConfig_Number = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Number\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.step !== undefined) {\n writer.uint32(9).double(message.step);\n }\n if (message.min !== undefined) {\n writer.uint32(17).double(message.min);\n }\n if (message.max !== undefined) {\n writer.uint32(25).double(message.max);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Number();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 9) {\n break;\n }\n message.step = reader.double();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.min = reader.double();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.max = reader.double();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n step: isSet(object.step) ? globalThis.Number(object.step) : undefined,\n min: isSet(object.min) ? globalThis.Number(object.min) : undefined,\n max: isSet(object.max) ? globalThis.Number(object.max) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.step !== undefined) {\n obj.step = message.step;\n }\n if (message.min !== undefined) {\n obj.min = message.min;\n }\n if (message.max !== undefined) {\n obj.max = message.max;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Number.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Number();\n message.step = object.step ?? undefined;\n message.min = object.min ?? undefined;\n message.max = object.max ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Number.$type, FieldConfig_Number);\nfunction createBaseFieldConfig_Boolean() {\n return {};\n}\nexport const FieldConfig_Boolean = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Boolean\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Boolean();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FieldConfig_Boolean.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFieldConfig_Boolean();\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Boolean.$type, FieldConfig_Boolean);\nfunction createBaseFieldConfig_List() {\n return { itemType: 0, itemConfig: undefined, minEntries: undefined, maxEntries: undefined, entryLabel: undefined };\n}\nexport const FieldConfig_List = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.List\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n FieldConfig.encode(message.itemConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.minEntries !== undefined) {\n writer.uint32(24).int32(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n writer.uint32(32).int32(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n writer.uint32(42).string(message.entryLabel);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_List();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.itemConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minEntries = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxEntries = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.entryLabel = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n itemConfig: isSet(object.itemConfig) ? FieldConfig.fromJSON(object.itemConfig) : undefined,\n minEntries: isSet(object.minEntries) ? globalThis.Number(object.minEntries) : undefined,\n maxEntries: isSet(object.maxEntries) ? globalThis.Number(object.maxEntries) : undefined,\n entryLabel: isSet(object.entryLabel) ? globalThis.String(object.entryLabel) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n obj.itemConfig = FieldConfig.toJSON(message.itemConfig);\n }\n if (message.minEntries !== undefined) {\n obj.minEntries = Math.round(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n obj.maxEntries = Math.round(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n obj.entryLabel = message.entryLabel;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_List.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_List();\n message.itemType = object.itemType ?? 0;\n message.itemConfig = (object.itemConfig !== undefined && object.itemConfig !== null)\n ? FieldConfig.fromPartial(object.itemConfig)\n : undefined;\n message.minEntries = object.minEntries ?? undefined;\n message.maxEntries = object.maxEntries ?? undefined;\n message.entryLabel = object.entryLabel ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_List.$type, FieldConfig_List);\nfunction createBaseFieldConfig_Selection() {\n return {\n choices: [],\n multiSelect: undefined,\n minSelections: undefined,\n maxSelections: undefined,\n renderAsList: undefined,\n };\n}\nexport const FieldConfig_Selection = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.choices) {\n FieldConfig_Selection_Item.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.multiSelect !== undefined) {\n writer.uint32(16).bool(message.multiSelect);\n }\n if (message.minSelections !== undefined) {\n writer.uint32(24).int32(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n writer.uint32(32).int32(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n writer.uint32(40).bool(message.renderAsList);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.choices.push(FieldConfig_Selection_Item.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.multiSelect = reader.bool();\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minSelections = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxSelections = reader.int32();\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n message.renderAsList = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n choices: globalThis.Array.isArray(object?.choices)\n ? object.choices.map((e) => FieldConfig_Selection_Item.fromJSON(e))\n : [],\n multiSelect: isSet(object.multiSelect) ? globalThis.Boolean(object.multiSelect) : undefined,\n minSelections: isSet(object.minSelections) ? globalThis.Number(object.minSelections) : undefined,\n maxSelections: isSet(object.maxSelections) ? globalThis.Number(object.maxSelections) : undefined,\n renderAsList: isSet(object.renderAsList) ? globalThis.Boolean(object.renderAsList) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.choices?.length) {\n obj.choices = message.choices.map((e) => FieldConfig_Selection_Item.toJSON(e));\n }\n if (message.multiSelect !== undefined) {\n obj.multiSelect = message.multiSelect;\n }\n if (message.minSelections !== undefined) {\n obj.minSelections = Math.round(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n obj.maxSelections = Math.round(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n obj.renderAsList = message.renderAsList;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection();\n message.choices = object.choices?.map((e) => FieldConfig_Selection_Item.fromPartial(e)) || [];\n message.multiSelect = object.multiSelect ?? undefined;\n message.minSelections = object.minSelections ?? undefined;\n message.maxSelections = object.maxSelections ?? undefined;\n message.renderAsList = object.renderAsList ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection.$type, FieldConfig_Selection);\nfunction createBaseFieldConfig_Selection_Item() {\n return { label: \"\", value: \"\" };\n}\nexport const FieldConfig_Selection_Item = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection.Item\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.label !== \"\") {\n writer.uint32(10).string(message.label);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection_Item();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.label = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.value !== \"\") {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection_Item.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection_Item();\n message.label = object.label ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection_Item.$type, FieldConfig_Selection_Item);\nfunction createBaseFieldConfig_Group() {\n return { fields: [] };\n}\nexport const FieldConfig_Group = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Group\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Group();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Group.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Group();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Group.$type, FieldConfig_Group);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #type.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var FormFieldType;\n(function (FormFieldType) {\n /** STRING - Single-line string */\n FormFieldType[FormFieldType[\"STRING\"] = 0] = \"STRING\";\n /** PARAGRAPH - Multi-line string */\n FormFieldType[FormFieldType[\"PARAGRAPH\"] = 1] = \"PARAGRAPH\";\n /** NUMBER - Number input */\n FormFieldType[FormFieldType[\"NUMBER\"] = 2] = \"NUMBER\";\n /** BOOLEAN - Checkbox, switch */\n FormFieldType[FormFieldType[\"BOOLEAN\"] = 3] = \"BOOLEAN\";\n /** LIST - Collect multiple entries of a single type */\n FormFieldType[FormFieldType[\"LIST\"] = 4] = \"LIST\";\n /** SELECTION - Provide a list of options for the user to choose from */\n FormFieldType[FormFieldType[\"SELECTION\"] = 5] = \"SELECTION\";\n /** GROUP - Create a labeled subsection of the form with nested fields */\n FormFieldType[FormFieldType[\"GROUP\"] = 6] = \"GROUP\";\n /** IMAGE - Image upload - value is a URL for the uploaded image */\n FormFieldType[FormFieldType[\"IMAGE\"] = 7] = \"IMAGE\";\n FormFieldType[FormFieldType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FormFieldType || (FormFieldType = {}));\nexport function formFieldTypeFromJSON(object) {\n switch (object) {\n case 0:\n case \"STRING\":\n return FormFieldType.STRING;\n case 1:\n case \"PARAGRAPH\":\n return FormFieldType.PARAGRAPH;\n case 2:\n case \"NUMBER\":\n return FormFieldType.NUMBER;\n case 3:\n case \"BOOLEAN\":\n return FormFieldType.BOOLEAN;\n case 4:\n case \"LIST\":\n return FormFieldType.LIST;\n case 5:\n case \"SELECTION\":\n return FormFieldType.SELECTION;\n case 6:\n case \"GROUP\":\n return FormFieldType.GROUP;\n case 7:\n case \"IMAGE\":\n return FormFieldType.IMAGE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FormFieldType.UNRECOGNIZED;\n }\n}\nexport function formFieldTypeToJSON(object) {\n switch (object) {\n case FormFieldType.STRING:\n return 0;\n case FormFieldType.PARAGRAPH:\n return 1;\n case FormFieldType.NUMBER:\n return 2;\n case FormFieldType.BOOLEAN:\n return 3;\n case FormFieldType.LIST:\n return 4;\n case FormFieldType.SELECTION:\n return 5;\n case FormFieldType.GROUP:\n return 6;\n case FormFieldType.IMAGE:\n return 7;\n case FormFieldType.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n", "/**\n * #value.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nfunction createBaseFormFieldValue() {\n return {\n fieldType: 0,\n isSecret: undefined,\n stringValue: undefined,\n numberValue: undefined,\n boolValue: undefined,\n listValue: undefined,\n selectionValue: undefined,\n groupValue: undefined,\n };\n}\nexport const FormFieldValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldType !== 0) {\n writer.uint32(8).int32(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n writer.uint32(800).bool(message.isSecret);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(18).string(message.stringValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(25).double(message.numberValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.listValue !== undefined) {\n FormFieldValue_ListValue.encode(message.listValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionValue !== undefined) {\n FormFieldValue_SelectionValue.encode(message.selectionValue, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupValue !== undefined) {\n FormFieldValue_GroupValue.encode(message.groupValue, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 100:\n if (tag !== 800) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listValue = FormFieldValue_ListValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionValue = FormFieldValue_SelectionValue.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupValue = FormFieldValue_GroupValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n listValue: isSet(object.listValue) ? FormFieldValue_ListValue.fromJSON(object.listValue) : undefined,\n selectionValue: isSet(object.selectionValue)\n ? FormFieldValue_SelectionValue.fromJSON(object.selectionValue)\n : undefined,\n groupValue: isSet(object.groupValue) ? FormFieldValue_GroupValue.fromJSON(object.groupValue) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = FormFieldValue_ListValue.toJSON(message.listValue);\n }\n if (message.selectionValue !== undefined) {\n obj.selectionValue = FormFieldValue_SelectionValue.toJSON(message.selectionValue);\n }\n if (message.groupValue !== undefined) {\n obj.groupValue = FormFieldValue_GroupValue.toJSON(message.groupValue);\n }\n return obj;\n },\n create(base) {\n return FormFieldValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue();\n message.fieldType = object.fieldType ?? 0;\n message.isSecret = object.isSecret ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.listValue = (object.listValue !== undefined && object.listValue !== null)\n ? FormFieldValue_ListValue.fromPartial(object.listValue)\n : undefined;\n message.selectionValue = (object.selectionValue !== undefined && object.selectionValue !== null)\n ? FormFieldValue_SelectionValue.fromPartial(object.selectionValue)\n : undefined;\n message.groupValue = (object.groupValue !== undefined && object.groupValue !== null)\n ? FormFieldValue_GroupValue.fromPartial(object.groupValue)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue.$type, FormFieldValue);\nfunction createBaseFormFieldValue_ListValue() {\n return { itemType: 0, items: [] };\n}\nexport const FormFieldValue_ListValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n for (const v of message.items) {\n FormFieldValue.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_ListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.items.push(FormFieldValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n items: globalThis.Array.isArray(object?.items) ? object.items.map((e) => FormFieldValue.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.items?.length) {\n obj.items = message.items.map((e) => FormFieldValue.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_ListValue();\n message.itemType = object.itemType ?? 0;\n message.items = object.items?.map((e) => FormFieldValue.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_ListValue.$type, FormFieldValue_ListValue);\nfunction createBaseFormFieldValue_SelectionValue() {\n return { values: [] };\n}\nexport const FormFieldValue_SelectionValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.SelectionValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_SelectionValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n values: globalThis.Array.isArray(object?.values) ? object.values.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_SelectionValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_SelectionValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_SelectionValue.$type, FormFieldValue_SelectionValue);\nfunction createBaseFormFieldValue_GroupValue() {\n return {};\n}\nexport const FormFieldValue_GroupValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.GroupValue\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_GroupValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FormFieldValue_GroupValue.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFormFieldValue_GroupValue();\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_GroupValue.$type, FormFieldValue_GroupValue);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { consentStatusFromJSON, consentStatusToJSON, } from \"../../../../reddit/devvit/app_permission/v1/app_permission.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nfunction createBaseCanRunAsUserEffect() {\n return { postId: undefined, appSlug: undefined, subredditId: undefined };\n}\nexport const CanRunAsUserEffect = {\n $type: \"devvit.ui.effects.v1alpha.CanRunAsUserEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postId !== undefined) {\n writer.uint32(10).string(message.postId);\n }\n if (message.appSlug !== undefined) {\n writer.uint32(18).string(message.appSlug);\n }\n if (message.subredditId !== undefined) {\n writer.uint32(26).string(message.subredditId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCanRunAsUserEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postId: isSet(object.postId) ? globalThis.String(object.postId) : undefined,\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : undefined,\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postId !== undefined) {\n obj.postId = message.postId;\n }\n if (message.appSlug !== undefined) {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== undefined) {\n obj.subredditId = message.subredditId;\n }\n return obj;\n },\n create(base) {\n return CanRunAsUserEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseCanRunAsUserEffect();\n message.postId = object.postId ?? undefined;\n message.appSlug = object.appSlug ?? undefined;\n message.subredditId = object.subredditId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(CanRunAsUserEffect.$type, CanRunAsUserEffect);\nfunction createBaseConsentStatusEvent() {\n return { consentStatus: 0 };\n}\nexport const ConsentStatusEvent = {\n $type: \"devvit.ui.effects.v1alpha.ConsentStatusEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.consentStatus !== 0) {\n writer.uint32(8).int32(message.consentStatus);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseConsentStatusEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.consentStatus = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { consentStatus: isSet(object.consentStatus) ? consentStatusFromJSON(object.consentStatus) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.consentStatus !== 0) {\n obj.consentStatus = consentStatusToJSON(message.consentStatus);\n }\n return obj;\n },\n create(base) {\n return ConsentStatusEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseConsentStatusEvent();\n message.consentStatus = object.consentStatus ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(ConsentStatusEvent.$type, ConsentStatusEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Timestamp } from \"../../../../google/protobuf/timestamp.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\n/** This enum is used to represent the consent status of an app permission. */\nexport var ConsentStatus;\n(function (ConsentStatus) {\n /** CONSENT_STATUS_UNKNOWN - The consent status is unknown, which means it has not been set or is not applicable. */\n ConsentStatus[ConsentStatus[\"CONSENT_STATUS_UNKNOWN\"] = 0] = \"CONSENT_STATUS_UNKNOWN\";\n /** REVOKED - The user has explicitly denied consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"REVOKED\"] = 1] = \"REVOKED\";\n /** GRANTED - The user has granted consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"GRANTED\"] = 2] = \"GRANTED\";\n ConsentStatus[ConsentStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ConsentStatus || (ConsentStatus = {}));\nexport function consentStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"CONSENT_STATUS_UNKNOWN\":\n return ConsentStatus.CONSENT_STATUS_UNKNOWN;\n case 1:\n case \"REVOKED\":\n return ConsentStatus.REVOKED;\n case 2:\n case \"GRANTED\":\n return ConsentStatus.GRANTED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return ConsentStatus.UNRECOGNIZED;\n }\n}\nexport function consentStatusToJSON(object) {\n switch (object) {\n case ConsentStatus.CONSENT_STATUS_UNKNOWN:\n return 0;\n case ConsentStatus.REVOKED:\n return 1;\n case ConsentStatus.GRANTED:\n return 2;\n case ConsentStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n/** This enum is used to represent the scopes of permissions that can be granted to an app. */\nexport var Scope;\n(function (Scope) {\n /** SCOPE_UNKNOWN - The scope is unknown, which means it has not been set or is not applicable. */\n Scope[Scope[\"SCOPE_UNKNOWN\"] = 0] = \"SCOPE_UNKNOWN\";\n /** SUBMIT_POST - Allows the app to submit posts on behalf of the user. */\n Scope[Scope[\"SUBMIT_POST\"] = 1] = \"SUBMIT_POST\";\n /** SUBMIT_COMMENT - Allows the app to submit comments on behalf of the user. */\n Scope[Scope[\"SUBMIT_COMMENT\"] = 2] = \"SUBMIT_COMMENT\";\n /** SUBSCRIBE_TO_SUBREDDIT - Allows the app to subscribe the user to a subreddit. */\n Scope[Scope[\"SUBSCRIBE_TO_SUBREDDIT\"] = 3] = \"SUBSCRIBE_TO_SUBREDDIT\";\n Scope[Scope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Scope || (Scope = {}));\nexport function scopeFromJSON(object) {\n switch (object) {\n case 0:\n case \"SCOPE_UNKNOWN\":\n return Scope.SCOPE_UNKNOWN;\n case 1:\n case \"SUBMIT_POST\":\n return Scope.SUBMIT_POST;\n case 2:\n case \"SUBMIT_COMMENT\":\n return Scope.SUBMIT_COMMENT;\n case 3:\n case \"SUBSCRIBE_TO_SUBREDDIT\":\n return Scope.SUBSCRIBE_TO_SUBREDDIT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Scope.UNRECOGNIZED;\n }\n}\nexport function scopeToJSON(object) {\n switch (object) {\n case Scope.SCOPE_UNKNOWN:\n return 0;\n case Scope.SUBMIT_POST:\n return 1;\n case Scope.SUBMIT_COMMENT:\n return 2;\n case Scope.SUBSCRIBE_TO_SUBREDDIT:\n return 3;\n case Scope.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseAppPermission() {\n return { appSlug: \"\", subredditId: \"\", scopes: [], consentStatus: 0, updatedAt: undefined };\n}\nexport const AppPermission = {\n $type: \"reddit.devvit.app_permission.v1.AppPermission\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(18).string(message.subredditId);\n }\n writer.uint32(26).fork();\n for (const v of message.scopes) {\n writer.int32(v);\n }\n writer.ldelim();\n if (message.consentStatus !== 0) {\n writer.uint32(32).int32(message.consentStatus);\n }\n if (message.updatedAt !== undefined) {\n Timestamp.encode(toTimestamp(message.updatedAt), writer.uint32(42).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAppPermission();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 3:\n if (tag === 24) {\n message.scopes.push(reader.int32());\n continue;\n }\n if (tag === 26) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.scopes.push(reader.int32());\n }\n continue;\n }\n break;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.consentStatus = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.updatedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n scopes: globalThis.Array.isArray(object?.scopes) ? object.scopes.map((e) => scopeFromJSON(e)) : [],\n consentStatus: isSet(object.consentStatus) ? consentStatusFromJSON(object.consentStatus) : 0,\n updatedAt: isSet(object.updatedAt) ? fromJsonTimestamp(object.updatedAt) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.scopes?.length) {\n obj.scopes = message.scopes.map((e) => scopeToJSON(e));\n }\n if (message.consentStatus !== 0) {\n obj.consentStatus = consentStatusToJSON(message.consentStatus);\n }\n if (message.updatedAt !== undefined) {\n obj.updatedAt = message.updatedAt.toISOString();\n }\n return obj;\n },\n create(base) {\n return AppPermission.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseAppPermission();\n message.appSlug = object.appSlug ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n message.scopes = object.scopes?.map((e) => e) || [];\n message.consentStatus = object.consentStatus ?? 0;\n message.updatedAt = object.updatedAt ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(AppPermission.$type, AppPermission);\nfunction createBaseDevvitApp() {\n return { appSlug: \"\", appName: \"\" };\n}\nexport const DevvitApp = {\n $type: \"reddit.devvit.app_permission.v1.DevvitApp\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.appName !== \"\") {\n writer.uint32(18).string(message.appName);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDevvitApp();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appName = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n appName: isSet(object.appName) ? globalThis.String(object.appName) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.appName !== \"\") {\n obj.appName = message.appName;\n }\n return obj;\n },\n create(base) {\n return DevvitApp.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseDevvitApp();\n message.appSlug = object.appSlug ?? \"\";\n message.appName = object.appName ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(DevvitApp.$type, DevvitApp);\nfunction createBaseGetAppPermissionsByUserIdRequest() {\n return { userId: \"\" };\n}\nexport const GetAppPermissionsByUserIdRequest = {\n $type: \"reddit.devvit.app_permission.v1.GetAppPermissionsByUserIdRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.userId !== \"\") {\n writer.uint32(10).string(message.userId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetAppPermissionsByUserIdRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.userId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\" };\n },\n toJSON(message) {\n const obj = {};\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n return obj;\n },\n create(base) {\n return GetAppPermissionsByUserIdRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGetAppPermissionsByUserIdRequest();\n message.userId = object.userId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(GetAppPermissionsByUserIdRequest.$type, GetAppPermissionsByUserIdRequest);\nfunction createBaseGetAppPermissionsByUserIdResponse() {\n return { appPermissions: [], devvitApps: [] };\n}\nexport const GetAppPermissionsByUserIdResponse = {\n $type: \"reddit.devvit.app_permission.v1.GetAppPermissionsByUserIdResponse\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.appPermissions) {\n AppPermission.encode(v, writer.uint32(10).fork()).ldelim();\n }\n for (const v of message.devvitApps) {\n DevvitApp.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetAppPermissionsByUserIdResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appPermissions.push(AppPermission.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.devvitApps.push(DevvitApp.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appPermissions: globalThis.Array.isArray(object?.appPermissions)\n ? object.appPermissions.map((e) => AppPermission.fromJSON(e))\n : [],\n devvitApps: globalThis.Array.isArray(object?.devvitApps)\n ? object.devvitApps.map((e) => DevvitApp.fromJSON(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appPermissions?.length) {\n obj.appPermissions = message.appPermissions.map((e) => AppPermission.toJSON(e));\n }\n if (message.devvitApps?.length) {\n obj.devvitApps = message.devvitApps.map((e) => DevvitApp.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return GetAppPermissionsByUserIdResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGetAppPermissionsByUserIdResponse();\n message.appPermissions = object.appPermissions?.map((e) => AppPermission.fromPartial(e)) || [];\n message.devvitApps = object.devvitApps?.map((e) => DevvitApp.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(GetAppPermissionsByUserIdResponse.$type, GetAppPermissionsByUserIdResponse);\nfunction createBaseGrantAppPermissionRequest() {\n return { userId: \"\", appSlug: \"\", subredditId: \"\", scopes: [] };\n}\nexport const GrantAppPermissionRequest = {\n $type: \"reddit.devvit.app_permission.v1.GrantAppPermissionRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.userId !== \"\") {\n writer.uint32(10).string(message.userId);\n }\n if (message.appSlug !== \"\") {\n writer.uint32(18).string(message.appSlug);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(26).string(message.subredditId);\n }\n writer.uint32(34).fork();\n for (const v of message.scopes) {\n writer.int32(v);\n }\n writer.ldelim();\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGrantAppPermissionRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 4:\n if (tag === 32) {\n message.scopes.push(reader.int32());\n continue;\n }\n if (tag === 34) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.scopes.push(reader.int32());\n }\n continue;\n }\n break;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n scopes: globalThis.Array.isArray(object?.scopes) ? object.scopes.map((e) => scopeFromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.scopes?.length) {\n obj.scopes = message.scopes.map((e) => scopeToJSON(e));\n }\n return obj;\n },\n create(base) {\n return GrantAppPermissionRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGrantAppPermissionRequest();\n message.userId = object.userId ?? \"\";\n message.appSlug = object.appSlug ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n message.scopes = object.scopes?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(GrantAppPermissionRequest.$type, GrantAppPermissionRequest);\nfunction createBaseGrantAppPermissionResponse() {\n return { error: undefined };\n}\nexport const GrantAppPermissionResponse = {\n $type: \"reddit.devvit.app_permission.v1.GrantAppPermissionResponse\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.error !== undefined) {\n ErrorMessage.encode(message.error, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGrantAppPermissionResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.error = ErrorMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { error: isSet(object.error) ? ErrorMessage.fromJSON(object.error) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.error !== undefined) {\n obj.error = ErrorMessage.toJSON(message.error);\n }\n return obj;\n },\n create(base) {\n return GrantAppPermissionResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGrantAppPermissionResponse();\n message.error = (object.error !== undefined && object.error !== null)\n ? ErrorMessage.fromPartial(object.error)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(GrantAppPermissionResponse.$type, GrantAppPermissionResponse);\nfunction createBaseRevokeAppPermissionRequest() {\n return { appSlug: \"\", userId: \"\", subredditId: \"\" };\n}\nexport const RevokeAppPermissionRequest = {\n $type: \"reddit.devvit.app_permission.v1.RevokeAppPermissionRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.userId !== \"\") {\n writer.uint32(18).string(message.userId);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(26).string(message.subredditId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRevokeAppPermissionRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n return obj;\n },\n create(base) {\n return RevokeAppPermissionRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRevokeAppPermissionRequest();\n message.appSlug = object.appSlug ?? \"\";\n message.userId = object.userId ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(RevokeAppPermissionRequest.$type, RevokeAppPermissionRequest);\nfunction createBaseRevokeAppPermissionResponse() {\n return { error: undefined };\n}\nexport const RevokeAppPermissionResponse = {\n $type: \"reddit.devvit.app_permission.v1.RevokeAppPermissionResponse\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.error !== undefined) {\n ErrorMessage.encode(message.error, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRevokeAppPermissionResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.error = ErrorMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { error: isSet(object.error) ? ErrorMessage.fromJSON(object.error) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.error !== undefined) {\n obj.error = ErrorMessage.toJSON(message.error);\n }\n return obj;\n },\n create(base) {\n return RevokeAppPermissionResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRevokeAppPermissionResponse();\n message.error = (object.error !== undefined && object.error !== null)\n ? ErrorMessage.fromPartial(object.error)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RevokeAppPermissionResponse.$type, RevokeAppPermissionResponse);\nfunction createBaseErrorMessage() {\n return { message: \"\" };\n}\nexport const ErrorMessage = {\n $type: \"reddit.devvit.app_permission.v1.ErrorMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== \"\") {\n writer.uint32(10).string(message.message);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseErrorMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { message: isSet(object.message) ? globalThis.String(object.message) : \"\" };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== \"\") {\n obj.message = message.message;\n }\n return obj;\n },\n create(base) {\n return ErrorMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseErrorMessage();\n message.message = object.message ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(ErrorMessage.$type, ErrorMessage);\nfunction toTimestamp(date) {\n const seconds = Math.trunc(date.getTime() / 1000);\n const nanos = (date.getTime() % 1000) * 1000000;\n return { seconds, nanos };\n}\nfunction fromTimestamp(t) {\n let millis = (t.seconds || 0) * 1000;\n millis += (t.nanos || 0) / 1000000;\n return new globalThis.Date(millis);\n}\nfunction fromJsonTimestamp(o) {\n if (o instanceof globalThis.Date) {\n return o;\n }\n else if (typeof o === \"string\") {\n return new globalThis.Date(o);\n }\n else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\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 * SPDX-License-Identifier: Apache-2.0\n */\n\n// WebAssembly optimizations to do native i64 multiplication and divide\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(\n new WebAssembly.Module(\n new Uint8Array([\n // \\0asm\n 0, 97, 115, 109,\n // version 1\n 1, 0, 0, 0,\n\n // section \"type\"\n 1, 13, 2,\n // 0, () => i32\n 96, 0, 1, 127,\n // 1, (i32, i32, i32, i32) => i32\n 96, 4, 127, 127, 127, 127, 1, 127,\n\n // section \"function\"\n 3, 7, 6,\n // 0, type 0\n 0,\n // 1, type 1\n 1,\n // 2, type 1\n 1,\n // 3, type 1\n 1,\n // 4, type 1\n 1,\n // 5, type 1\n 1,\n\n // section \"global\"\n 6, 6, 1,\n // 0, \"high\", mutable i32\n 127, 1, 65, 0, 11,\n\n // section \"export\"\n 7, 50, 6,\n // 0, \"mul\"\n 3, 109, 117, 108, 0, 1,\n // 1, \"div_s\"\n 5, 100, 105, 118, 95, 115, 0, 2,\n // 2, \"div_u\"\n 5, 100, 105, 118, 95, 117, 0, 3,\n // 3, \"rem_s\"\n 5, 114, 101, 109, 95, 115, 0, 4,\n // 4, \"rem_u\"\n 5, 114, 101, 109, 95, 117, 0, 5,\n // 5, \"get_high\"\n 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0,\n\n // section \"code\"\n 10, 191, 1, 6,\n // 0, \"get_high\"\n 4, 0, 35, 0, 11,\n // 1, \"mul\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 2, \"div_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 3, \"div_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 4, \"rem_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 5, \"rem_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n ]),\n ),\n {},\n ).exports;\n} catch {\n // no wasm support :(\n}\n\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nfunction Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\n\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\n\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nfunction isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n\n/**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\nfunction ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n}\n\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\nLong.isLong = isLong;\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if ((cache = 0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, 0, true);\n if (cache) UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n if ((cache = -128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache) INT_CACHE[value] = obj;\n return obj;\n }\n}\n\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromInt = fromInt;\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromNumber(value, unsigned) {\n if (isNaN(value)) return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n }\n if (value < 0) return fromNumber(-value, unsigned).neg();\n return fromBits(\n value % TWO_PWR_32_DBL | 0,\n (value / TWO_PWR_32_DBL) | 0,\n unsigned,\n );\n}\n\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromNumber = fromNumber;\n\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromBits = fromBits;\n\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nfunction fromString(str, unsigned, radix) {\n if (str.length === 0) throw Error(\"empty string\");\n if (typeof unsigned === \"number\") {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n if (\n str === \"NaN\" ||\n str === \"Infinity\" ||\n str === \"+Infinity\" ||\n str === \"-Infinity\"\n )\n return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n\n var p;\n if ((p = str.indexOf(\"-\")) > 0) throw Error(\"interior hyphen\");\n else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\nLong.fromString = fromString;\n\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromValue(val, unsigned) {\n if (typeof val === \"number\") return fromNumber(val, unsigned);\n if (typeof val === \"string\") return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(\n val.low,\n val.high,\n typeof unsigned === \"boolean\" ? unsigned : val.unsigned,\n );\n}\n\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|bigint|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\nLong.fromValue = fromValue;\n\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ZERO = fromInt(0);\n\n/**\n * Signed zero.\n * @type {!Long}\n */\nLong.ZERO = ZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UZERO = fromInt(0, true);\n\n/**\n * Unsigned zero.\n * @type {!Long}\n */\nLong.UZERO = UZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ONE = fromInt(1);\n\n/**\n * Signed one.\n * @type {!Long}\n */\nLong.ONE = ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UONE = fromInt(1, true);\n\n/**\n * Unsigned one.\n * @type {!Long}\n */\nLong.UONE = UONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar NEG_ONE = fromInt(-1);\n\n/**\n * Signed negative one.\n * @type {!Long}\n */\nLong.NEG_ONE = NEG_ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_VALUE = fromBits(0xffffffff | 0, 0x7fffffff | 0, false);\n\n/**\n * Maximum signed value.\n * @type {!Long}\n */\nLong.MAX_VALUE = MAX_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_UNSIGNED_VALUE = fromBits(0xffffffff | 0, 0xffffffff | 0, true);\n\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n/**\n * Minimum signed value.\n * @type {!Long}\n */\nLong.MIN_VALUE = MIN_VALUE;\n\n/**\n * @alias Long.prototype\n * @inner\n */\nvar LongPrototype = Long.prototype;\n\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n};\n\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toNumber = function toNumber() {\n if (this.unsigned)\n return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n};\n\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nLongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n if (this.isZero()) return \"0\";\n if (this.isNegative()) {\n // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else return \"-\" + this.neg().toString(radix);\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = \"\";\n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero()) return digits + result;\n else {\n while (digits.length < 6) digits = \"0\" + digits;\n result = \"\" + digits + result;\n }\n }\n};\n\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nLongPrototype.getHighBits = function getHighBits() {\n return this.high;\n};\n\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n};\n\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nLongPrototype.getLowBits = function getLowBits() {\n return this.low;\n};\n\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n};\n\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative())\n // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n for (var bit = 31; bit > 0; bit--) if ((val & (1 << bit)) != 0) break;\n return this.high != 0 ? bit + 33 : bit + 1;\n};\n\n/**\n * Tests if this Long can be safely represented as a JavaScript number.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isSafeInteger = function isSafeInteger() {\n // 2^53-1 is the maximum safe value\n var top11Bits = this.high >> 21;\n // [0, 2^53-1]\n if (!top11Bits) return true;\n // > 2^53-1\n if (this.unsigned) return false;\n // [-2^53, -1] except -2^53\n return top11Bits === -1 && !(this.low === 0 && this.high === -0x200000);\n};\n\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n};\n\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\nLongPrototype.eqz = LongPrototype.isZero;\n\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n};\n\n/**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n};\n\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n};\n\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n};\n\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.equals = function equals(other) {\n if (!isLong(other)) other = fromValue(other);\n if (\n this.unsigned !== other.unsigned &&\n this.high >>> 31 === 1 &&\n other.high >>> 31 === 1\n )\n return false;\n return this.high === other.high && this.low === other.low;\n};\n\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.eq = LongPrototype.equals;\n\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.notEquals = function notEquals(other) {\n return !this.eq(/* validates */ other);\n};\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.neq = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ne = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThan = function lessThan(other) {\n return this.comp(/* validates */ other) < 0;\n};\n\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lt = LongPrototype.lessThan;\n\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(/* validates */ other) <= 0;\n};\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.le = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(/* validates */ other) > 0;\n};\n\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gt = LongPrototype.greaterThan;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(/* validates */ other) >= 0;\n};\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.compare = function compare(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.eq(other)) return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) return -1;\n if (!thisNeg && otherNeg) return 1;\n // At this point the sign bits are the same\n if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;\n // Both are positive if at least one is unsigned\n return other.high >>> 0 > this.high >>> 0 ||\n (other.high === this.high && other.low >>> 0 > this.low >>> 0)\n ? -1\n : 1;\n};\n\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.comp = LongPrototype.compare;\n\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nLongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n return this.not().add(ONE);\n};\n\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\nLongPrototype.neg = LongPrototype.negate;\n\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} addend Addend\n * @returns {!Long} Sum\n */\nLongPrototype.add = function add(addend) {\n if (!isLong(addend)) addend = fromValue(addend);\n\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xffff;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 + b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n};\n\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.sub = LongPrototype.subtract;\n\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero()) return this;\n if (!isLong(multiplier)) multiplier = fromValue(multiplier);\n\n // use wasm support if present\n if (wasm) {\n var low = wasm[\"mul\"](this.low, this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n\n if (this.isNegative()) {\n if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());\n else return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();\n\n // If both longs are small, use float multiplication\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xffff;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.mul = LongPrototype.multiply;\n\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n if (divisor.isZero()) throw Error(\"division by zero\");\n\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (\n !this.unsigned &&\n this.high === -0x80000000 &&\n divisor.low === -1 &&\n divisor.high === -1\n ) {\n // be consistent with non-wasm code path\n return this;\n }\n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE)) return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n if (this.isNegative()) {\n if (divisor.isNegative()) return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned) divisor = divisor.toUnsigned();\n if (divisor.gt(this)) return UZERO;\n if (divisor.gt(this.shru(1)))\n // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = this;\n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) approxRes = ONE;\n\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n return res;\n};\n\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.div = LongPrototype.divide;\n\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n\n // use wasm support if present\n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n return this.sub(this.div(divisor).mul(divisor));\n};\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.mod = LongPrototype.modulo;\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.rem = LongPrototype.modulo;\n\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nLongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n};\n\n/**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n};\n\n/**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.clz = LongPrototype.countLeadingZeros;\n\n/**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n};\n\n/**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.and = function and(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.or = function or(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.xor = function xor(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n this.low << numBits,\n (this.high << numBits) | (this.low >>> (32 - numBits)),\n this.unsigned,\n );\n else return fromBits(0, this.low << (numBits - 32), this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shl = LongPrototype.shiftLeft;\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >> numBits,\n this.unsigned,\n );\n else\n return fromBits(\n this.high >> (numBits - 32),\n this.high >= 0 ? 0 : -1,\n this.unsigned,\n );\n};\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr = LongPrototype.shiftRight;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >>> numBits,\n this.unsigned,\n );\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n};\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.low << numBits) | (this.high >>> b),\n (this.high << numBits) | (this.low >>> b),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.high << numBits) | (this.low >>> b),\n (this.low << numBits) | (this.high >>> b),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotl = LongPrototype.rotateLeft;\n\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.high << b) | (this.low >>> numBits),\n (this.low << b) | (this.high >>> numBits),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.low << b) | (this.high >>> numBits),\n (this.high << b) | (this.low >>> numBits),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotr = LongPrototype.rotateRight;\n\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nLongPrototype.toSigned = function toSigned() {\n if (!this.unsigned) return this;\n return fromBits(this.low, this.high, false);\n};\n\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nLongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned) return this;\n return fromBits(this.low, this.high, true);\n};\n\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.<number>} Byte representation\n */\nLongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n};\n\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Little endian byte representation\n */\nLongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [\n lo & 0xff,\n (lo >>> 8) & 0xff,\n (lo >>> 16) & 0xff,\n lo >>> 24,\n hi & 0xff,\n (hi >>> 8) & 0xff,\n (hi >>> 16) & 0xff,\n hi >>> 24,\n ];\n};\n\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Big endian byte representation\n */\nLongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [\n hi >>> 24,\n (hi >>> 16) & 0xff,\n (hi >>> 8) & 0xff,\n hi & 0xff,\n lo >>> 24,\n (lo >>> 16) & 0xff,\n (lo >>> 8) & 0xff,\n lo & 0xff,\n ];\n};\n\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.<number>} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le\n ? Long.fromBytesLE(bytes, unsigned)\n : Long.fromBytesBE(bytes, unsigned);\n};\n\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.<number>} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(\n bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),\n bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),\n unsigned,\n );\n};\n\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.<number>} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(\n (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],\n (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],\n unsigned,\n );\n};\n\n// Support conversion to/from BigInt where available\nif (typeof BigInt === \"function\") {\n /**\n * Returns a Long representing the given big integer.\n * @function\n * @param {number} value The big integer value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n Long.fromBigInt = function fromBigInt(value, unsigned) {\n var lowBits = Number(BigInt.asIntN(32, value));\n var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));\n return fromBits(lowBits, highBits, unsigned);\n };\n\n // Override\n Long.fromValue = function fromValueWithBigInt(value, unsigned) {\n if (typeof value === \"bigint\") return Long.fromBigInt(value, unsigned);\n return fromValue(value, unsigned);\n };\n\n /**\n * Converts the Long to its big integer representation.\n * @this {!Long}\n * @returns {bigint}\n */\n LongPrototype.toBigInt = function toBigInt() {\n var lowBigInt = BigInt(this.low >>> 0);\n var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);\n return (highBigInt << BigInt(32)) | lowBigInt;\n };\n}\n\nexport default Long;\n", "/**\n * #timestamp.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseTimestamp() {\n return { seconds: 0, nanos: 0 };\n}\nexport const Timestamp = {\n $type: \"google.protobuf.Timestamp\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.seconds !== 0) {\n writer.uint32(8).int64(message.seconds);\n }\n if (message.nanos !== 0) {\n writer.uint32(16).int32(message.nanos);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTimestamp();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.seconds = longToNumber(reader.int64());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.nanos = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : 0,\n nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.seconds !== 0) {\n obj.seconds = Math.round(message.seconds);\n }\n if (message.nanos !== 0) {\n obj.nanos = Math.round(message.nanos);\n }\n return obj;\n },\n create(base) {\n return Timestamp.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseTimestamp();\n message.seconds = object.seconds ?? 0;\n message.nanos = object.nanos ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(Timestamp.$type, Timestamp);\nfunction longToNumber(long) {\n if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) {\n throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n }\n return long.toNumber();\n}\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long;\n _m0.configure();\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime_subscriptions.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeEvent } from \"../../../events/v1alpha/realtime.js\";\nexport var RealtimeSubscriptionStatus;\n(function (RealtimeSubscriptionStatus) {\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_SUBSCRIBED\"] = 0] = \"REALTIME_SUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_UNSUBSCRIBED\"] = 1] = \"REALTIME_UNSUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(RealtimeSubscriptionStatus || (RealtimeSubscriptionStatus = {}));\nexport function realtimeSubscriptionStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"REALTIME_SUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED;\n case 1:\n case \"REALTIME_UNSUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return RealtimeSubscriptionStatus.UNRECOGNIZED;\n }\n}\nexport function realtimeSubscriptionStatusToJSON(object) {\n switch (object) {\n case RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED:\n return 0;\n case RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED:\n return 1;\n case RealtimeSubscriptionStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseRealtimeSubscriptionsEffect() {\n return { subscriptionIds: [] };\n}\nexport const RealtimeSubscriptionsEffect = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionsEffect\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.subscriptionIds) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionsEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subscriptionIds.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subscriptionIds: globalThis.Array.isArray(object?.subscriptionIds)\n ? object.subscriptionIds.map((e) => globalThis.String(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subscriptionIds?.length) {\n obj.subscriptionIds = message.subscriptionIds;\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionsEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionsEffect();\n message.subscriptionIds = object.subscriptionIds?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionsEffect.$type, RealtimeSubscriptionsEffect);\nfunction createBaseRealtimeSubscriptionEvent() {\n return { event: undefined, status: undefined };\n}\nexport const RealtimeSubscriptionEvent = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.event !== undefined) {\n RealtimeEvent.encode(message.event, writer.uint32(10).fork()).ldelim();\n }\n if (message.status !== undefined) {\n writer.uint32(16).int32(message.status);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.event = RealtimeEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.status = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n event: isSet(object.event) ? RealtimeEvent.fromJSON(object.event) : undefined,\n status: isSet(object.status) ? realtimeSubscriptionStatusFromJSON(object.status) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.event !== undefined) {\n obj.event = RealtimeEvent.toJSON(message.event);\n }\n if (message.status !== undefined) {\n obj.status = realtimeSubscriptionStatusToJSON(message.status);\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionEvent();\n message.event = (object.event !== undefined && object.event !== null)\n ? RealtimeEvent.fromPartial(object.event)\n : undefined;\n message.status = object.status ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionEvent.$type, RealtimeSubscriptionEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { map } from \"rxjs/operators\";\nimport { Empty } from \"../../../google/protobuf/empty.js\";\nimport { Struct } from \"../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../typeRegistry.js\";\nfunction createBaseRealtimeRequest() {\n return { channels: [] };\n}\nexport const RealtimeRequest = {\n $type: \"devvit.events.v1alpha.RealtimeRequest\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.channels) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channels.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channels: globalThis.Array.isArray(object?.channels) ? object.channels.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channels?.length) {\n obj.channels = message.channels;\n }\n return obj;\n },\n create(base) {\n return RealtimeRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeRequest();\n message.channels = object.channels?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeRequest.$type, RealtimeRequest);\nfunction createBaseRealtimeEvent() {\n return { channel: \"\", data: undefined };\n}\nexport const RealtimeEvent = {\n $type: \"devvit.events.v1alpha.RealtimeEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.channel !== \"\") {\n writer.uint32(10).string(message.channel);\n }\n if (message.data !== undefined) {\n Struct.encode(Struct.wrap(message.data), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channel = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channel: isSet(object.channel) ? globalThis.String(object.channel) : \"\",\n data: isObject(object.data) ? object.data : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channel !== \"\") {\n obj.channel = message.channel;\n }\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n create(base) {\n return RealtimeEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeEvent();\n message.channel = object.channel ?? \"\";\n message.data = object.data ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeEvent.$type, RealtimeEvent);\nexport const RealtimeServiceName = \"devvit.events.v1alpha.Realtime\";\nexport class RealtimeClientImpl {\n constructor(rpc, opts) {\n this.service = opts?.service || RealtimeServiceName;\n this.rpc = rpc;\n this.Subscribe = this.Subscribe.bind(this);\n this.Send = this.Send.bind(this);\n }\n Subscribe(request, metadata) {\n const data = RealtimeRequest.encode(request).finish();\n const result = this.rpc.serverStreamingRequest(this.service, \"Subscribe\", data, metadata);\n return result.pipe(map((data) => RealtimeEvent.decode(_m0.Reader.create(data))));\n }\n Send(request, metadata) {\n const data = RealtimeEvent.encode(request).finish();\n const promise = this.rpc.request(this.service, \"Send\", data, metadata);\n return promise.then((data) => Empty.decode(_m0.Reader.create(data)));\n }\n}\nexport const RealtimeDefinition = {\n name: \"Realtime\",\n fullName: \"devvit.events.v1alpha.Realtime\",\n methods: {\n subscribe: {\n name: \"Subscribe\",\n requestType: RealtimeRequest,\n requestStream: false,\n responseType: RealtimeEvent,\n responseStream: true,\n options: {},\n },\n send: {\n name: \"Send\",\n requestType: RealtimeEvent,\n requestStream: false,\n responseType: Empty,\n responseStream: false,\n options: {},\n },\n },\n};\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #empty.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseEmpty() {\n return {};\n}\nexport const Empty = {\n $type: \"google.protobuf.Empty\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseEmpty();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return Empty.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseEmpty();\n return message;\n },\n};\nmessageTypeRegistry.set(Empty.$type, Empty);\n", "/**\n * #immersive_mode.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../../typeRegistry.js\";\n/** How a Devvit app is presented. */\nexport var WebViewImmersiveMode;\n(function (WebViewImmersiveMode) {\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n /**\n * INLINE_MODE - Conventional post presentation. May appear adjacent other posts in a feed\n * or with comments.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"INLINE_MODE\"] = 1] = \"INLINE_MODE\";\n /**\n * IMMERSIVE_MODE - Large modal expanded presentation. Appears popped out from the rest of the\n * Reddit experience which is disabled.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"IMMERSIVE_MODE\"] = 2] = \"IMMERSIVE_MODE\";\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewImmersiveMode || (WebViewImmersiveMode = {}));\nexport function webViewImmersiveModeFromJSON(object) {\n switch (object) {\n case 0:\n case \"UNSPECIFIED\":\n return WebViewImmersiveMode.UNSPECIFIED;\n case 1:\n case \"INLINE_MODE\":\n return WebViewImmersiveMode.INLINE_MODE;\n case 2:\n case \"IMMERSIVE_MODE\":\n return WebViewImmersiveMode.IMMERSIVE_MODE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewImmersiveMode.UNRECOGNIZED;\n }\n}\nexport function webViewImmersiveModeToJSON(object) {\n switch (object) {\n case WebViewImmersiveMode.UNSPECIFIED:\n return 0;\n case WebViewImmersiveMode.INLINE_MODE:\n return 1;\n case WebViewImmersiveMode.IMMERSIVE_MODE:\n return 2;\n case WebViewImmersiveMode.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewImmersiveModeEffect() {\n return { immersiveMode: 0, entryUrl: undefined };\n}\nexport const WebViewImmersiveModeEffect = {\n $type: \"devvit.ui.effects.web_view.v1alpha.WebViewImmersiveModeEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.immersiveMode !== 0) {\n writer.uint32(8).int32(message.immersiveMode);\n }\n if (message.entryUrl !== undefined) {\n writer.uint32(18).string(message.entryUrl);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewImmersiveModeEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.immersiveMode = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.entryUrl = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n immersiveMode: isSet(object.immersiveMode) ? webViewImmersiveModeFromJSON(object.immersiveMode) : 0,\n entryUrl: isSet(object.entryUrl) ? globalThis.String(object.entryUrl) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.immersiveMode !== 0) {\n obj.immersiveMode = webViewImmersiveModeToJSON(message.immersiveMode);\n }\n if (message.entryUrl !== undefined) {\n obj.entryUrl = message.entryUrl;\n }\n return obj;\n },\n create(base) {\n return WebViewImmersiveModeEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewImmersiveModeEffect();\n message.immersiveMode = object.immersiveMode ?? 0;\n message.entryUrl = object.entryUrl ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewImmersiveModeEffect.$type, WebViewImmersiveModeEffect);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "import { EffectType, } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewInternalMessageScope, } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/post_message.js';\nimport { WebViewInternalEventMessage, WebViewMessageEvent_MessageData, } from '@devvit/protos/types/devvit/ui/events/v1alpha/web_view.js'; // to-do: use /json/ not /types/.\nconst EFFECTS_WITH_RESPONSE = [\n EffectType.EFFECT_SHOW_FORM,\n EffectType.EFFECT_CAN_RUN_AS_USER,\n];\n/**\n * Emits an effect to the parent window and handles the response if required.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message for effects that require\n * a response, or resolves immediately with undefined for effects that don't\n *\n * @description\n * This function handles two types of effects:\n * 1. Effects that require a response: Creates a unique ID, sets up a message listener,\n * and resolves the promise when a matching response is received\n * 2. Effects that don't require a response: Posts the message and resolves immediately\n */\nexport const emitEffect = (effect) => {\n return new Promise((resolve) => {\n const message = {\n scope: WebViewInternalMessageScope.CLIENT,\n type: 'devvit-internal',\n };\n if (effect.realtimeSubscriptions) {\n message.realtimeEffect = effect.realtimeSubscriptions;\n }\n else if (effect.immersiveMode) {\n message.immersiveMode = effect.immersiveMode;\n }\n else if (effect.share) {\n message.share = effect.share;\n }\n else if (effect.showToast) {\n message.showToast = effect.showToast;\n }\n else if (effect.navigateToUrl) {\n message.navigateToUrl = effect.navigateToUrl;\n }\n else if (effect.showForm) {\n message.showForm = effect.showForm;\n }\n // For temporary backward compatibility, we set both `message.effect_type` above, its types counterpart, below\n // Once mobile clients are updated to consume the strongly typed properties above, and apps, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showToast ||\n effect.navigateToUrl ||\n effect.showForm ||\n effect.type === EffectType.EFFECT_CAN_RUN_AS_USER) {\n message.effect = effect;\n }\n // Only set message id and add a listener for effects which require a response\n if (EFFECTS_WITH_RESPONSE.includes(effect.type)) {\n const id = self.crypto.randomUUID();\n message.id = id;\n const handleEffect = (event) => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n const serializedMessage = WebViewInternalEventMessage.fromJSON(event.data.data);\n resolve(serializedMessage);\n window.removeEventListener('message', handleEffect);\n }\n };\n window.addEventListener('message', handleEffect);\n // Post message to the parent window, handled by client web view component\n window.parent.postMessage(message, '*');\n }\n else {\n window.parent.postMessage(message, '*');\n // Resolve immediately for effects that don't expect a response.\n resolve(undefined);\n }\n });\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * Navigates to a URL, subreddit, post, comment, or user.\n *\n * @param thingOrUrl - The URL, subreddit, post, comment, or user to navigate to\n */\nexport function navigateTo(thingOrUrl: string | { readonly url: string }): void {\n const inputUrl = typeof thingOrUrl === 'string' ? thingOrUrl : thingOrUrl.url;\n if (!URL.canParse(inputUrl)) {\n throw new TypeError(`Invalid URL: ${inputUrl}`);\n }\n const normalizedUrl = new URL(inputUrl).toString();\n void emitEffect({\n navigateToUrl: {\n url: normalizedUrl,\n },\n type: 5 satisfies EffectType.EFFECT_NAVIGATE_TO_URL,\n });\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** This enum is used to represent the consent status of an app permission. */\nexport var ConsentStatus;\n(function (ConsentStatus) {\n /** CONSENT_STATUS_UNKNOWN - The consent status is unknown, which means it has not been set or is not applicable. */\n ConsentStatus[ConsentStatus[\"CONSENT_STATUS_UNKNOWN\"] = 0] = \"CONSENT_STATUS_UNKNOWN\";\n /** REVOKED - The user has explicitly denied consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"REVOKED\"] = 1] = \"REVOKED\";\n /** GRANTED - The user has granted consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"GRANTED\"] = 2] = \"GRANTED\";\n ConsentStatus[ConsentStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ConsentStatus || (ConsentStatus = {}));\n/** This enum is used to represent the scopes of permissions that can be granted to an app. */\nexport var Scope;\n(function (Scope) {\n /** SCOPE_UNKNOWN - The scope is unknown, which means it has not been set or is not applicable. */\n Scope[Scope[\"SCOPE_UNKNOWN\"] = 0] = \"SCOPE_UNKNOWN\";\n /** SUBMIT_POST - Allows the app to submit posts on behalf of the user. */\n Scope[Scope[\"SUBMIT_POST\"] = 1] = \"SUBMIT_POST\";\n /** SUBMIT_COMMENT - Allows the app to submit comments on behalf of the user. */\n Scope[Scope[\"SUBMIT_COMMENT\"] = 2] = \"SUBMIT_COMMENT\";\n /** SUBSCRIBE_TO_SUBREDDIT - Allows the app to subscribe the user to a subreddit. */\n Scope[Scope[\"SUBSCRIBE_TO_SUBREDDIT\"] = 3] = \"SUBSCRIBE_TO_SUBREDDIT\";\n Scope[Scope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Scope || (Scope = {}));\n", "import { ConsentStatus } from '@devvit/protos/json/reddit/devvit/app_permission/v1/app_permission.js';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * This method is used to check if the app has been granted all the requested scopes.\n *\n * @experimental\n * @returns true if the app has been granted all the requested scopes, false otherwise.\n */\nexport const canRunAsUser = async (): Promise<boolean> => {\n const appPermissionState = devvit.appPermissionState;\n\n if (!appPermissionState) {\n // Note: The app permission state will be missing when the app runs on clients that haven't implemented this feature yet.\n // \"true\" is the correct value for the time being, until we have all clients supporting this feature.\n return true;\n }\n\n if (appPermissionState.requestedScopes.length === 0) {\n // the app does not have permission to do anything as the user\n return false;\n }\n\n switch (appPermissionState.consentStatus) {\n case ConsentStatus.REVOKED:\n return false;\n case ConsentStatus.GRANTED:\n // If the app has been granted all the requested scopes, return true\n if (\n appPermissionState.requestedScopes.every((scope) =>\n appPermissionState.grantedScopes.includes(scope)\n )\n ) {\n return true;\n }\n // Otherwise, the sets of scopes do not overlap we emit the effect to request the scopes; continue\n break;\n case ConsentStatus.CONSENT_STATUS_UNKNOWN:\n case ConsentStatus.UNRECOGNIZED:\n // We don't know the status, so we'll have to ask.\n break;\n default: {\n appPermissionState.consentStatus satisfies never;\n break;\n }\n }\n\n const response = await emitEffect({\n canRunAsUser: {\n postId: devvit.context.postId,\n appSlug: devvit.context.appName,\n subredditId: devvit.context.subredditId,\n },\n type: 11 satisfies EffectType.EFFECT_CAN_RUN_AS_USER,\n });\n\n return response?.consentStatus?.consentStatus === ConsentStatus.GRANTED;\n};\n", "// to-do: move to service + CLI package.\n// Do not use in @devvit/public-api. Protos not in externalized @devvit/protos\n// barrel.\nexport const ACTOR_SRC_DIR = 'src';\nexport const ACTOR_SRC_PRIMARY_NAME = 'main';\n/** payments stuff. */\nexport const PRODUCTS_JSON_FILE = 'products.json';\n/**\n * The hashing algorithm used - pass this to `createHash`\n */\nexport const ASSET_HASHING_ALGO = 'sha256';\n/**\n * The max number of subscribers allowed in a test subreddit (ie where a user can install an uploaded, private app\n * Determines if a PRIVATE (unpublished) version of an app can be installed or playtested\n *\n * TODO: turn this off before we go live - see DX-1336\n * */\nexport const MAX_ALLOWED_SUBSCRIBER_COUNT = 200;\n/**\n * How many assets to upload at once. Sending too many at once can cause the\n * server to become overwhelmed and start erroring clients out.\n * @type {number}\n */\nexport const ASSET_UPLOAD_BATCH_SIZE = 10;\nexport const REDDIT_OAUTH_COPY_PASTE_CLIENT_ID = 'TWTsqXa53CexlrYGBWaesQ';\n/** All server endpoints must start with this prefix. */\nexport const apiPathPrefix = '/api/';\n/** All unexposed APIs must start with this prefix. */\nexport const internalPathPrefix = '/internal/';\n/** When an app's icon is present in the media assets list, it'll be with this special name. */\nexport const ICON_FILE_PATH = '$devvit_icon.png'; // Uses special characters intentionally to avoid conflicts with real asset paths\nexport const REDDIT_DISCORD_INVITE_URL = 'https://discord.gg/Cd43ExtEFS';\nexport const REDDIT_SUBREDDIT_URL = 'https://www.reddit.com/r/devvit';\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport { maxShareParamUserDataChars } from '@devvit/shared-types/client/share.js';\nimport { ICON_FILE_PATH } from '@devvit/shared-types/constants.js';\n\nexport type ShareSheetOpts = {\n /** Data to share. Must be 1024 characters or less. */\n data?: string | undefined;\n /** Title of share sheet. */\n title?: string | undefined;\n /** Body text of share sheet. */\n text?: string | undefined;\n};\n\n// to-do: unit test.\n// to-do: move to web view scripts.\n/** Show the native share sheet or copy to clipboard depending on device. */\nexport async function showShareSheet(opts: Readonly<ShareSheetOpts>): Promise<void> {\n if (opts.data && opts.data.length > maxShareParamUserDataChars)\n throw Error(\n `data must be <= ${maxShareParamUserDataChars} characters but was ${opts.data.length} characters`\n );\n\n const iconURL = `${new URL(ICON_FILE_PATH, location.origin)}`;\n let iconRsp;\n try {\n iconRsp = await fetch(iconURL, { method: 'HEAD' });\n } catch {\n //\n }\n\n await emitEffect({\n type: 9 satisfies EffectType.EFFECT_WEB_VIEW,\n share: {\n appIconUri: iconRsp?.ok ? iconURL : undefined,\n userData: opts.data,\n text: opts.text,\n title: opts.title,\n },\n });\n}\n\nexport function getShareData(): string | undefined {\n return devvit.share?.userData;\n}\n", "import type { FormField, SettingScope } from './form-types.js';\n\n/**\n * Make sure that the form fields have unique names.\n *\n * This is a carbon copy of the assertValidFormFields function in the public-api package\n * We copy it here so that @devvit/client does not need to depend on public-api\n * Any changes to this function should be reflected in the public-api version\n */\nexport function assertValidFormFields(\n fields: readonly FormField[],\n seenNames: Set<string> = new Set()\n): void {\n for (const field of fields) {\n if (field.type === 'group') {\n assertValidFormFields(field.fields, seenNames);\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldName = (field as any).name as string;\n\n if (seenNames.has(fieldName)) {\n throw new Error(`Duplicate field name: ${fieldName}`);\n }\n\n seenNames.add(fieldName);\n }\n assertAppSecretsOnly(fields);\n}\n\nexport function assertAppSecretsOnly(fields: readonly FormField[]): void {\n for (const field of fields) {\n if (field.type === 'string' && field.isSecret && field.scope !== ('app' as SettingScope.App)) {\n throw `Invalid setting: only app settings can be secrets. Add \"scope: SettingScope.App\" to field \"${field.name}\"`;\n }\n }\n}\n", "import type { FormFieldType, FormFieldValue } from '@devvit/protos';\n\nimport type { FormValues } from './form-types.js';\n\nfunction flattenFormFieldValue(\n value: FormFieldValue\n): undefined | string | string[] | number | boolean {\n switch (value.fieldType) {\n case 0 satisfies FormFieldType.STRING:\n return value.stringValue;\n case 7 satisfies FormFieldType.IMAGE:\n // the string value is the URL\n return value.stringValue;\n case 1 satisfies FormFieldType.PARAGRAPH:\n return value.stringValue;\n case 2 satisfies FormFieldType.NUMBER:\n return value.numberValue;\n case 3 satisfies FormFieldType.BOOLEAN:\n return value.boolValue;\n case 5 satisfies FormFieldType.SELECTION:\n return value.selectionValue?.values ?? [];\n default:\n return undefined;\n }\n}\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function getFormValues(results: { [key: string]: FormFieldValue }): FormValues {\n return Object.keys(results).reduce((acc, key) => {\n const val = flattenFormFieldValue(results[key]);\n if (val !== undefined) acc[key] = val;\n return acc;\n }, {} as FormValues);\n}\n", "import type { FormField as FormFieldProto, FormFieldType } from '@devvit/protos';\n\nimport type {\n BooleanField,\n FormField,\n FormFieldGroup,\n ImageField,\n NumberField,\n ParagraphField,\n SelectField,\n StringField,\n} from './form-types.js';\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function transformFormFields(fields: readonly FormField[]): FormFieldProto[] {\n return fields.map((field) => {\n switch (field.type) {\n case 'string':\n return transformStringField(field);\n case 'image':\n return transformImageField(field);\n case 'paragraph':\n return transformParagraphField(field);\n case 'number':\n return transformNumberField(field);\n case 'select':\n return transformSelectField(field);\n case 'boolean':\n return transformBooleanField(field);\n case 'group':\n return transformGroupField(field);\n default:\n throw new Error('Unknown field type.');\n }\n });\n}\n\nfunction transformStringField(field: StringField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 0 satisfies FormFieldType.STRING,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n stringConfig: {\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 0 satisfies FormFieldType.STRING,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n isSecret: field.isSecret,\n };\n}\n\nfunction transformImageField(field: ImageField): FormFieldProto {\n return {\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 7 satisfies FormFieldType.IMAGE,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformParagraphField(field: ParagraphField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n paragraphConfig: {\n lineHeight: field.lineHeight,\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformNumberField(field: NumberField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 2 satisfies FormFieldType.NUMBER,\n numberValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n numberConfig: {},\n },\n fieldId: field.name,\n fieldType: 2 satisfies FormFieldType.NUMBER,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformSelectField(field: SelectField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 5 satisfies FormFieldType.SELECTION,\n selectionValue: {\n values: field.defaultValue ?? [],\n },\n },\n disabled: field.disabled,\n fieldConfig: {\n selectionConfig: {\n choices: field.options,\n multiSelect: field.multiSelect,\n },\n },\n fieldId: field.name,\n fieldType: 5 satisfies FormFieldType.SELECTION,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformBooleanField(field: BooleanField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n boolValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n helpText: field.helpText,\n label: field.label,\n };\n}\n\nfunction transformGroupField(field: FormFieldGroup): FormFieldProto {\n return {\n fieldId: '',\n fieldType: 6 satisfies FormFieldType.GROUP,\n fieldConfig: {\n groupConfig: {\n fields: transformFormFields(field.fields),\n },\n },\n label: field.label,\n helpText: field.helpText,\n };\n}\n", "import type { Form as FormProto } from '@devvit/protos';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport type { FormKey } from '@devvit/shared-types/useForm.js';\n\nimport { assertValidFormFields } from './helpers/assert-valid-form-fields.js';\nimport type { Form, FormToFormValues } from './helpers/form-types.js';\nimport type { FormEffectResponse } from './helpers/form-types.js';\nimport { getFormValues } from './helpers/get-form-values.js';\nimport { transformFormFields } from './helpers/transform-form.js';\n\nlet _formKey = 1;\n\nconst getNextFormKey = (): FormKey => {\n _formKey++;\n return `form.${_formKey}`;\n};\n\n/**\n * Opens a form in a modal.\n * Returns a promise that resolves with the form submission results.\n * The form can be submitted or canceled by the user.\n *\n * @param formDefinition - The form configuration\n * @returns A promise that resolves to either:\n * - An object with `action: FormAction.SUBMITTED` and the submitted form values\n * - An object with `action: FormAction.CANCELED` if the user canceled the form\n * @throws Will throw if the form fields are invalid\n */\nexport const showForm = async <const T extends Form>(\n formDefinition: T\n): Promise<FormEffectResponse<FormToFormValues<T>>> => {\n const form: FormProto = {\n fields: [],\n id: getNextFormKey(),\n title: formDefinition.title,\n acceptLabel: formDefinition.acceptLabel,\n cancelLabel: formDefinition.cancelLabel,\n shortDescription: formDefinition.description,\n };\n\n assertValidFormFields(formDefinition.fields);\n form.fields = transformFormFields(formDefinition.fields);\n\n const response = await emitEffect({\n showForm: {\n form,\n },\n type: 3 satisfies EffectType.EFFECT_SHOW_FORM,\n });\n\n if (!response || !response.formSubmitted) {\n return {\n action: 'CANCELED',\n };\n }\n\n const formResults = getFormValues(response.formSubmitted.results);\n\n return {\n action: 'SUBMITTED',\n values: formResults as FormToFormValues<T>,\n };\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n Toast as ToastProto,\n ToastAppearance,\n} from '@devvit/protos/types/devvit/ui/toast/toast.js';\nimport type { Toast } from '@devvit/shared';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * Shows a toast message.\n *\n * @param textOrToast - The text or toast object to display\n */\nexport function showToast(text: string): void;\nexport function showToast(toast: Toast): void;\nexport function showToast(textOrToast: string | Toast): void {\n let toast: ToastProto;\n\n if (textOrToast instanceof Object) {\n toast = {\n text: textOrToast.text,\n appearance:\n textOrToast.appearance === 'success'\n ? (1 satisfies ToastAppearance.SUCCESS)\n : (0 satisfies ToastAppearance.NEUTRAL),\n };\n } else {\n toast = {\n text: textOrToast,\n };\n }\n\n void emitEffect({\n showToast: {\n toast,\n },\n type: 4 satisfies EffectType.EFFECT_SHOW_TOAST,\n });\n}\n", "/**\n * #immersive_mode.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** How a Devvit app is presented. */\nexport var WebViewImmersiveMode;\n(function (WebViewImmersiveMode) {\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n /**\n * INLINE_MODE - Conventional post presentation. May appear adjacent other posts in a feed\n * or with comments.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"INLINE_MODE\"] = 1] = \"INLINE_MODE\";\n /**\n * IMMERSIVE_MODE - Large modal expanded presentation. Appears popped out from the rest of the\n * Reddit experience which is disabled.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"IMMERSIVE_MODE\"] = 2] = \"IMMERSIVE_MODE\";\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewImmersiveMode || (WebViewImmersiveMode = {}));\n", "import type { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewImmersiveMode } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js';\nimport type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * The presentation mode of the web view.\n * 'inline' The web view is displayed inline within a feed or post detail page\n * 'expanded' The web view is displayed in a larger modal presentation\n * @experimental\n */\nexport type WebViewMode = 'inline' | 'expanded';\n\n/**\n * A listener that is called when the web view mode changes.\n * @param mode The new mode, either 'inline' or 'expanded'.\n * @experimental\n */\nexport type WebViewModeListener = (mode: WebViewMode) => void;\n\nconst modeListeners = new Set<WebViewModeListener>();\n\n/**\n * Represents the current web view mode state for the application.\n *\n * @experimental\n */\nexport const getWebViewMode = (): WebViewMode => webViewMode(devvit.webViewMode);\n\n/**\n * Requests expanded mode for the web view.\n * This will display the web view in a larger modal presentation.\n *\n * @param event The gesture that triggered the request, must be a trusted event.\n * @param entry The destination URI name. Eg, `'splash'` or `'default'`. Entry\n * names are the `devvit.json` `post.entrypoints` keys. Passing the\n * same entrypoint as currently loaded causes a reload.\n * @returns A promise that resolves request has been received.\n *\n * @experimental\n * @example\n * ```ts\n * button.addEventListener('click', async (event) => {\n * await requestExpandedMode(event);\n * });\n * ```\n */\nexport function requestExpandedMode(event: PointerEvent, entry: string): Promise<void> {\n return emitModeEffect(WebViewImmersiveMode.IMMERSIVE_MODE, event, entry);\n}\n\n/**\n * Exits expanded mode for the web view.\n * This will display the web view in an inline presentation.\n *\n * @param event The event that triggered the request, must be a trusted event.\n * @returns A promise that resolves request has been received.\n *\n * @experimental\n * @example\n * ```ts\n * button.addEventListener('click', async (event) => {\n * await exitExpandedMode(event);\n * });\n * ```\n */\nexport function exitExpandedMode(event: PointerEvent): Promise<void> {\n return emitModeEffect(WebViewImmersiveMode.INLINE_MODE, event, undefined);\n}\n\n/**\n * Adds a listener that is called when the web view mode changes.\n * The listener will be called with the new mode, either 'inline' or 'expanded'.\n *\n * @param callback The callback to be called when the mode changes.\n * @experimental\n */\nexport function addWebViewModeListener(callback: WebViewModeListener): void {\n modeListeners.add(callback);\n}\n\n/**\n * Removes a listener that was previously added with `addWebViewModeListener`.\n *\n * @param callback The callback to be removed.\n * @experimental\n */\nexport function removeWebViewModeListener(callback: WebViewModeListener): void {\n modeListeners.delete(callback);\n}\n\nasync function emitModeEffect(\n mode: WebViewImmersiveMode,\n event: PointerEvent,\n entry: string | undefined\n): Promise<void> {\n if (!event.isTrusted || event.type !== 'click') {\n console.error('Expanded mode effect ignored due to untrusted event');\n throw new Error('Untrusted event');\n }\n\n if (entry != null && !devvit.entrypoints[entry])\n throw Error(\n `no entrypoint named \"${entry}\"; all entrypoints must appear in \\`devvit.json\\` \\`post.entrypoints\\``\n );\n\n const type = 9 satisfies EffectType.EFFECT_WEB_VIEW;\n await emitEffect({\n type,\n immersiveMode: {\n entryUrl: devvit.entrypoints[entry ?? ''],\n immersiveMode: mode,\n },\n });\n}\n\n/**\n * @internal\n * Handles incoming messages from the client, like when the user closes the immersive modal\n */\nexport function registerListener() {\n addEventListener('message', (event: MessageEvent<WebViewMessageEvent_MessageData>) => {\n const { type, data } = event.data;\n\n if (type !== 'devvit-message') {\n return;\n }\n if (!data?.immersiveModeEvent) {\n return;\n }\n\n devvit.webViewMode = data.immersiveModeEvent.immersiveMode;\n\n const webViewModeString = webViewMode(data.immersiveModeEvent.immersiveMode);\n modeListeners.forEach((listener) => listener(webViewModeString));\n });\n}\n\nfunction webViewMode(mode: WebViewImmersiveMode | undefined): WebViewMode {\n switch (mode) {\n case WebViewImmersiveMode.IMMERSIVE_MODE:\n return 'expanded';\n case WebViewImmersiveMode.INLINE_MODE:\n case WebViewImmersiveMode.UNRECOGNIZED:\n case WebViewImmersiveMode.UNSPECIFIED:\n case undefined:\n return 'inline';\n default:\n mode satisfies never;\n throw Error(`${mode} not a WebViewImmersiveMode`);\n }\n}\n", "export * from './clientContext.js';\nexport * from './effects/navigate-to.js';\nexport * from './effects/run-as-user.js';\nexport * from './effects/share.js';\nexport * from './effects/show-form.js';\nexport * from './effects/show-toast.js';\nexport * from './effects/web-view-mode.js';\nexport type { Context } from '@devvit/shared-types/client/client-context.js';\nexport * from '@devvit/shared-types/PostData.js';\n\nimport { registerListener } from './effects/web-view-mode.js';\nregisterListener();\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["require_aspromise", "__commonJSMin", "exports", "module", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "base64", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "c", "require_eventemitter", "__commonJSMin", "exports", "module", "EventEmitter", "evt", "fn", "ctx", "listeners", "args", "require_float", "__commonJSMin", "exports", "module", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "val", "buf", "pos", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "lo", "hi", "require_inquire", "__commonJSMin", "require_utf8", "__commonJSMin", "exports", "utf8", "string", "len", "c", "buffer", "start", "end", "parts", "chunk", "i", "t", "offset", "c1", "c2", "require_pool", "__commonJSMin", "exports", "module", "pool", "alloc", "slice", "size", "SIZE", "MAX", "slab", "offset", "buf", "require_longbits", "__commonJSMin", "exports", "module", "LongBits", "util", "lo", "hi", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "util", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "i", "encoding", "size", "require_writer", "__commonJSMin", "exports", "module", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "noop", "State", "writer", "create", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "BufferWriter", "Writer", "util", "val", "buf", "pos", "value", "len", "writeStringBuffer", "require_reader", "__commonJSMin", "exports", "module", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "buffer", "create_array", "create", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "nativeBuffer", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "BufferReader", "Reader", "util", "buffer", "len", "require_service", "__commonJSMin", "exports", "module", "Service", "util", "rpcImpl", "requestDelimited", "responseDelimited", "rpcCall", "method", "requestCtor", "responseCtor", "request", "callback", "self", "err", "response", "endedByRPC", "require_rpc", "__commonJSMin", "exports", "rpc", "require_roots", "__commonJSMin", "exports", "module", "require_index_minimal", "__commonJSMin", "exports", "protobuf", "configure", "require_minimal", "__commonJSMin", "exports", "module", "context", "EffectType", "WebViewInternalMessageScope", "import_minimal", "import_minimal", "messageTypeRegistry", "NullValue", "nullValueFromJSON", "object", "nullValueToJSON", "createBaseStruct", "Struct", "message", "writer", "_m0", "key", "value", "Struct_FieldsEntry", "input", "length", "reader", "end", "tag", "entry1", "isObject", "acc", "obj", "entries", "k", "v", "base", "struct", "messageTypeRegistry", "createBaseStruct_FieldsEntry", "Value", "isSet", "createBaseValue", "ListValue", "result", "createBaseListValue", "e", "array", "import_minimal", "import_minimal", "import_minimal", "FormFieldType", "formFieldTypeFromJSON", "object", "formFieldTypeToJSON", "import_minimal", "createBaseFormFieldValue", "FormFieldValue", "message", "writer", "_m0", "FormFieldValue_ListValue", "FormFieldValue_SelectionValue", "FormFieldValue_GroupValue", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFormFieldValue_ListValue", "v", "e", "createBaseFormFieldValue_SelectionValue", "createBaseFormFieldValue_GroupValue", "_", "value", "createBaseFormField", "FormField", "message", "writer", "_m0", "FormFieldValue", "FieldConfig", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFieldConfig", "FieldConfig_String", "FieldConfig_Paragraph", "FieldConfig_Number", "FieldConfig_Boolean", "FieldConfig_List", "FieldConfig_Selection", "FieldConfig_Group", "createBaseFieldConfig_String", "createBaseFieldConfig_Paragraph", "createBaseFieldConfig_Number", "createBaseFieldConfig_Boolean", "_", "createBaseFieldConfig_List", "createBaseFieldConfig_Selection", "v", "FieldConfig_Selection_Item", "e", "createBaseFieldConfig_Selection_Item", "createBaseFieldConfig_Group", "value", "createBaseForm", "Form", "message", "writer", "_m0", "v", "FormField", "input", "length", "reader", "end", "tag", "object", "e", "isSet", "obj", "base", "messageTypeRegistry", "value", "createBaseShowFormEffect", "ShowFormEffect", "message", "writer", "_m0", "Form", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseFormSubmittedEvent", "FormSubmittedEvent", "key", "value", "FormSubmittedEvent_ResultsEntry", "entry1", "isObject", "acc", "FormFieldValue", "entries", "k", "v", "createBaseFormSubmittedEvent_ResultsEntry", "createBaseFormCanceledEvent", "FormCanceledEvent", "import_minimal", "import_minimal", "wasm", "Long", "low", "high", "unsigned", "isLong", "obj", "ctz32", "value", "c", "INT_CACHE", "UINT_CACHE", "fromInt", "cachedObj", "cache", "fromBits", "fromNumber", "UZERO", "ZERO", "TWO_PWR_64_DBL", "MAX_UNSIGNED_VALUE", "TWO_PWR_63_DBL", "MIN_VALUE", "MAX_VALUE", "TWO_PWR_32_DBL", "lowBits", "highBits", "pow_dbl", "fromString", "str", "radix", "p", "radixToPower", "result", "i", "size", "power", "fromValue", "val", "TWO_PWR_16_DBL", "TWO_PWR_24_DBL", "TWO_PWR_24", "ONE", "UONE", "NEG_ONE", "LongPrototype", "radixLong", "div", "rem1", "rem", "remDiv", "intval", "digits", "bit", "top11Bits", "other", "thisNeg", "otherNeg", "addend", "a48", "a32", "a16", "a00", "b48", "b32", "b16", "b00", "c48", "c32", "c16", "c00", "subtrahend", "multiplier", "divisor", "approx", "res", "halfThis", "log2", "delta", "approxRes", "approxRem", "numBits", "b", "le", "hi", "lo", "bytes", "lowBigInt", "highBigInt", "long_default", "import_minimal", "createBaseTimestamp", "Timestamp", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "longToNumber", "object", "isSet", "obj", "base", "messageTypeRegistry", "long", "long_default", "value", "ConsentStatus", "consentStatusFromJSON", "object", "consentStatusToJSON", "Scope", "scopeFromJSON", "scopeToJSON", "createBaseAppPermission", "AppPermission", "message", "writer", "_m0", "v", "Timestamp", "toTimestamp", "input", "length", "reader", "end", "tag", "end2", "fromTimestamp", "isSet", "e", "fromJsonTimestamp", "obj", "base", "messageTypeRegistry", "createBaseDevvitApp", "DevvitApp", "createBaseGetAppPermissionsByUserIdRequest", "GetAppPermissionsByUserIdRequest", "createBaseGetAppPermissionsByUserIdResponse", "GetAppPermissionsByUserIdResponse", "createBaseGrantAppPermissionRequest", "GrantAppPermissionRequest", "createBaseGrantAppPermissionResponse", "GrantAppPermissionResponse", "ErrorMessage", "createBaseRevokeAppPermissionRequest", "RevokeAppPermissionRequest", "createBaseRevokeAppPermissionResponse", "RevokeAppPermissionResponse", "createBaseErrorMessage", "date", "seconds", "nanos", "t", "millis", "o", "value", "createBaseCanRunAsUserEffect", "CanRunAsUserEffect", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseConsentStatusEvent", "ConsentStatusEvent", "consentStatusFromJSON", "consentStatusToJSON", "value", "import_minimal", "import_minimal", "import_minimal", "createBaseEmpty", "Empty", "_", "writer", "_m0", "input", "length", "reader", "end", "message", "tag", "base", "messageTypeRegistry", "createBaseRealtimeRequest", "RealtimeRequest", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "object", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeEvent", "RealtimeEvent", "Struct", "isSet", "isObject", "isObject", "value", "isSet", "RealtimeSubscriptionStatus", "realtimeSubscriptionStatusFromJSON", "object", "realtimeSubscriptionStatusToJSON", "createBaseRealtimeSubscriptionsEffect", "RealtimeSubscriptionsEffect", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeSubscriptionEvent", "RealtimeSubscriptionEvent", "RealtimeEvent", "isSet", "value", "import_minimal", "WebViewImmersiveMode", "webViewImmersiveModeFromJSON", "object", "webViewImmersiveModeToJSON", "createBaseWebViewImmersiveModeEffect", "WebViewImmersiveModeEffect", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "messageTypeRegistry", "value", "WebViewVisibility", "webViewVisibilityFromJSON", "object", "webViewVisibilityToJSON", "createBaseWebViewPostMessageEvent", "WebViewPostMessageEvent", "message", "writer", "_m0", "Value", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "messageTypeRegistry", "createBaseWebViewFullScreenEvent", "WebViewFullScreenEvent", "createBaseWebViewEvent", "WebViewEvent", "createBaseWebViewImmersiveModeChangedEvent", "WebViewImmersiveModeChangedEvent", "webViewImmersiveModeFromJSON", "webViewImmersiveModeToJSON", "createBaseWebViewInternalEventMessage", "WebViewInternalEventMessage", "FormCanceledEvent", "FormSubmittedEvent", "RealtimeSubscriptionEvent", "ConsentStatusEvent", "createBaseWebViewMessageEvent", "WebViewMessageEvent", "WebViewMessageEvent_MessageData", "createBaseWebViewMessageEvent_MessageData", "value", "EFFECTS_WITH_RESPONSE", "EffectType", "emitEffect", "effect", "resolve", "message", "WebViewInternalMessageScope", "id", "handleEffect", "event", "serializedMessage", "WebViewInternalEventMessage", "navigateTo", "thingOrUrl", "inputUrl", "normalizedUrl", "emitEffect", "ConsentStatus", "Scope", "canRunAsUser", "appPermissionState", "ConsentStatus", "scope", "emitEffect", "ICON_FILE_PATH", "showShareSheet", "opts", "iconURL", "ICON_FILE_PATH", "iconRsp", "emitEffect", "getShareData", "assertValidFormFields", "fields", "seenNames", "field", "fieldName", "assertAppSecretsOnly", "flattenFormFieldValue", "value", "getFormValues", "results", "acc", "key", "val", "transformFormFields", "fields", "field", "transformStringField", "transformImageField", "transformParagraphField", "transformNumberField", "transformSelectField", "transformBooleanField", "transformGroupField", "_formKey", "getNextFormKey", "showForm", "formDefinition", "form", "assertValidFormFields", "transformFormFields", "response", "emitEffect", "getFormValues", "showToast", "textOrToast", "toast", "emitEffect", "WebViewImmersiveMode", "modeListeners", "getWebViewMode", "webViewMode", "requestExpandedMode", "event", "entry", "emitModeEffect", "WebViewImmersiveMode", "exitExpandedMode", "addWebViewModeListener", "callback", "removeWebViewModeListener", "mode", "emitEffect", "registerListener", "type", "data", "webViewModeString", "listener", "registerListener"]
|
|
3
|
+
"sources": ["../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/rpc/service.js", "../../../node_modules/protobufjs/src/rpc.js", "../../../node_modules/protobufjs/src/roots.js", "../../../node_modules/protobufjs/src/index-minimal.js", "../../../node_modules/protobufjs/minimal.js", "../src/clientContext.ts", "../../protos/dist/json/devvit/ui/effects/v1alpha/effect.js", "../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/post_message.js", "../../protos/dist/types/devvit/ui/events/v1alpha/web_view.js", "../../protos/dist/types/google/protobuf/struct.js", "../../protos/dist/types/typeRegistry.js", "../../protos/dist/types/devvit/ui/effect_types/v1alpha/show_form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/field.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/type.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/value.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/app_permission.js", "../../protos/dist/types/reddit/devvit/app_permission/v1/app_permission.js", "../../../node_modules/long/index.js", "../../protos/dist/types/google/protobuf/timestamp.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/realtime_subscriptions.js", "../../protos/dist/types/devvit/events/v1alpha/realtime.js", "../../protos/dist/types/google/protobuf/empty.js", "../../protos/dist/types/devvit/ui/effects/web_view/v1alpha/immersive_mode.js", "../../shared-types/dist/client/emit-effect.js", "../src/effects/navigate-to.ts", "../../protos/dist/json/reddit/devvit/app_permission/v1/app_permission.js", "../src/effects/run-as-user.ts", "../../shared-types/dist/constants.js", "../src/effects/share.ts", "../src/effects/helpers/assert-valid-form-fields.ts", "../src/effects/helpers/get-form-values.ts", "../src/effects/helpers/transform-form.ts", "../src/effects/show-form.ts", "../src/effects/show-toast.ts", "../../protos/dist/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js", "../../shared-types/dist/webbit.js", "../src/effects/web-view-mode.ts", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n", "\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n", "\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n", "\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n", "// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n", "import type { Context } from '@devvit/shared-types/client/client-context.js';\n\n// Use nullish coalescing for local development.\nexport const context: Context = globalThis.devvit?.context!;\n", "/**\n * #effect.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var EffectType;\n(function (EffectType) {\n /** EFFECT_REALTIME_SUB - Notify client to synchronize its realtime subscriptions */\n EffectType[EffectType[\"EFFECT_REALTIME_SUB\"] = 0] = \"EFFECT_REALTIME_SUB\";\n /** EFFECT_RERENDER_UI - Trigger a re-render for apps that have visible UI */\n EffectType[EffectType[\"EFFECT_RERENDER_UI\"] = 1] = \"EFFECT_RERENDER_UI\";\n /** EFFECT_RELOAD_PART - Notify the client that parts of a subreddit, post, or comment should be reloaded */\n EffectType[EffectType[\"EFFECT_RELOAD_PART\"] = 2] = \"EFFECT_RELOAD_PART\";\n /** EFFECT_SHOW_FORM - Display a user input form */\n EffectType[EffectType[\"EFFECT_SHOW_FORM\"] = 3] = \"EFFECT_SHOW_FORM\";\n /** EFFECT_SHOW_TOAST - Display a transient toast message */\n EffectType[EffectType[\"EFFECT_SHOW_TOAST\"] = 4] = \"EFFECT_SHOW_TOAST\";\n /** EFFECT_NAVIGATE_TO_URL - Notify the client to navigate to a URL */\n EffectType[EffectType[\"EFFECT_NAVIGATE_TO_URL\"] = 5] = \"EFFECT_NAVIGATE_TO_URL\";\n /** EFFECT_SET_INTERVALS - This updates the list of active timers. */\n EffectType[EffectType[\"EFFECT_SET_INTERVALS\"] = 7] = \"EFFECT_SET_INTERVALS\";\n /** EFFECT_CREATE_ORDER - This starts a purchase flow */\n EffectType[EffectType[\"EFFECT_CREATE_ORDER\"] = 8] = \"EFFECT_CREATE_ORDER\";\n /** EFFECT_WEB_VIEW - Control and communicate with WebViews */\n EffectType[EffectType[\"EFFECT_WEB_VIEW\"] = 9] = \"EFFECT_WEB_VIEW\";\n /** EFFECT_CAN_RUN_AS_USER - Check if the app can execute some actions as the user */\n EffectType[EffectType[\"EFFECT_CAN_RUN_AS_USER\"] = 11] = \"EFFECT_CAN_RUN_AS_USER\";\n EffectType[EffectType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(EffectType || (EffectType = {}));\n", "/**\n * #post_message.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var WebViewInternalMessageScope;\n(function (WebViewInternalMessageScope) {\n /** CLIENT - Message is intended for the client only */\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"CLIENT\"] = 0] = \"CLIENT\";\n WebViewInternalMessageScope[WebViewInternalMessageScope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewInternalMessageScope || (WebViewInternalMessageScope = {}));\n", "/**\n * #web_view.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Value } from \"../../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormCanceledEvent, FormSubmittedEvent } from \"../../effect_types/v1alpha/show_form.js\";\nimport { ConsentStatusEvent } from \"../../effects/v1alpha/app_permission.js\";\nimport { RealtimeSubscriptionEvent } from \"../../effects/v1alpha/realtime_subscriptions.js\";\nimport { webViewImmersiveModeFromJSON, webViewImmersiveModeToJSON, } from \"../../effects/web_view/v1alpha/immersive_mode.js\";\nexport var WebViewVisibility;\n(function (WebViewVisibility) {\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_VISIBLE\"] = 0] = \"WEBVIEW_VISIBLE\";\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_HIDDEN\"] = 1] = \"WEBVIEW_HIDDEN\";\n WebViewVisibility[WebViewVisibility[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewVisibility || (WebViewVisibility = {}));\nexport function webViewVisibilityFromJSON(object) {\n switch (object) {\n case 0:\n case \"WEBVIEW_VISIBLE\":\n return WebViewVisibility.WEBVIEW_VISIBLE;\n case 1:\n case \"WEBVIEW_HIDDEN\":\n return WebViewVisibility.WEBVIEW_HIDDEN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewVisibility.UNRECOGNIZED;\n }\n}\nexport function webViewVisibilityToJSON(object) {\n switch (object) {\n case WebViewVisibility.WEBVIEW_VISIBLE:\n return 0;\n case WebViewVisibility.WEBVIEW_HIDDEN:\n return 1;\n case WebViewVisibility.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewPostMessageEvent() {\n return { message: undefined, jsonString: \"\" };\n}\nexport const WebViewPostMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewPostMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== undefined) {\n Value.encode(Value.wrap(message.message), writer.uint32(10).fork()).ldelim();\n }\n if (message.jsonString !== \"\") {\n writer.uint32(18).string(message.jsonString);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewPostMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.jsonString = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n message: isSet(object?.message) ? object.message : undefined,\n jsonString: isSet(object.jsonString) ? globalThis.String(object.jsonString) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== undefined) {\n obj.message = message.message;\n }\n if (message.jsonString !== \"\") {\n obj.jsonString = message.jsonString;\n }\n return obj;\n },\n create(base) {\n return WebViewPostMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewPostMessageEvent();\n message.message = object.message ?? undefined;\n message.jsonString = object.jsonString ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewPostMessageEvent.$type, WebViewPostMessageEvent);\nfunction createBaseWebViewFullScreenEvent() {\n return { visibility: 0 };\n}\nexport const WebViewFullScreenEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewFullScreenEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.visibility !== 0) {\n writer.uint32(8).int32(message.visibility);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewFullScreenEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.visibility = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { visibility: isSet(object.visibility) ? webViewVisibilityFromJSON(object.visibility) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.visibility !== 0) {\n obj.visibility = webViewVisibilityToJSON(message.visibility);\n }\n return obj;\n },\n create(base) {\n return WebViewFullScreenEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewFullScreenEvent();\n message.visibility = object.visibility ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewFullScreenEvent.$type, WebViewFullScreenEvent);\nfunction createBaseWebViewEvent() {\n return { postMessage: undefined, fullScreen: undefined };\n}\nexport const WebViewEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postMessage !== undefined) {\n WebViewPostMessageEvent.encode(message.postMessage, writer.uint32(10).fork()).ldelim();\n }\n if (message.fullScreen !== undefined) {\n WebViewFullScreenEvent.encode(message.fullScreen, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postMessage = WebViewPostMessageEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.fullScreen = WebViewFullScreenEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postMessage: isSet(object.postMessage) ? WebViewPostMessageEvent.fromJSON(object.postMessage) : undefined,\n fullScreen: isSet(object.fullScreen) ? WebViewFullScreenEvent.fromJSON(object.fullScreen) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postMessage !== undefined) {\n obj.postMessage = WebViewPostMessageEvent.toJSON(message.postMessage);\n }\n if (message.fullScreen !== undefined) {\n obj.fullScreen = WebViewFullScreenEvent.toJSON(message.fullScreen);\n }\n return obj;\n },\n create(base) {\n return WebViewEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewEvent();\n message.postMessage = (object.postMessage !== undefined && object.postMessage !== null)\n ? WebViewPostMessageEvent.fromPartial(object.postMessage)\n : undefined;\n message.fullScreen = (object.fullScreen !== undefined && object.fullScreen !== null)\n ? WebViewFullScreenEvent.fromPartial(object.fullScreen)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewEvent.$type, WebViewEvent);\nfunction createBaseWebViewImmersiveModeChangedEvent() {\n return { immersiveMode: 0 };\n}\nexport const WebViewImmersiveModeChangedEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewImmersiveModeChangedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.immersiveMode !== 0) {\n writer.uint32(8).int32(message.immersiveMode);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewImmersiveModeChangedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.immersiveMode = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { immersiveMode: isSet(object.immersiveMode) ? webViewImmersiveModeFromJSON(object.immersiveMode) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.immersiveMode !== 0) {\n obj.immersiveMode = webViewImmersiveModeToJSON(message.immersiveMode);\n }\n return obj;\n },\n create(base) {\n return WebViewImmersiveModeChangedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewImmersiveModeChangedEvent();\n message.immersiveMode = object.immersiveMode ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewImmersiveModeChangedEvent.$type, WebViewImmersiveModeChangedEvent);\nfunction createBaseWebViewInternalEventMessage() {\n return {\n id: \"\",\n formCanceled: undefined,\n formSubmitted: undefined,\n realtimeEvent: undefined,\n immersiveModeEvent: undefined,\n consentStatus: undefined,\n };\n}\nexport const WebViewInternalEventMessage = {\n $type: \"devvit.ui.events.v1alpha.WebViewInternalEventMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.formCanceled !== undefined) {\n FormCanceledEvent.encode(message.formCanceled, writer.uint32(18).fork()).ldelim();\n }\n if (message.formSubmitted !== undefined) {\n FormSubmittedEvent.encode(message.formSubmitted, writer.uint32(26).fork()).ldelim();\n }\n if (message.realtimeEvent !== undefined) {\n RealtimeSubscriptionEvent.encode(message.realtimeEvent, writer.uint32(34).fork()).ldelim();\n }\n if (message.immersiveModeEvent !== undefined) {\n WebViewImmersiveModeChangedEvent.encode(message.immersiveModeEvent, writer.uint32(42).fork()).ldelim();\n }\n if (message.consentStatus !== undefined) {\n ConsentStatusEvent.encode(message.consentStatus, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewInternalEventMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.id = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formCanceled = FormCanceledEvent.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.formSubmitted = FormSubmittedEvent.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.realtimeEvent = RealtimeSubscriptionEvent.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.immersiveModeEvent = WebViewImmersiveModeChangedEvent.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.consentStatus = ConsentStatusEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n formCanceled: isSet(object.formCanceled) ? FormCanceledEvent.fromJSON(object.formCanceled) : undefined,\n formSubmitted: isSet(object.formSubmitted) ? FormSubmittedEvent.fromJSON(object.formSubmitted) : undefined,\n realtimeEvent: isSet(object.realtimeEvent) ? RealtimeSubscriptionEvent.fromJSON(object.realtimeEvent) : undefined,\n immersiveModeEvent: isSet(object.immersiveModeEvent)\n ? WebViewImmersiveModeChangedEvent.fromJSON(object.immersiveModeEvent)\n : undefined,\n consentStatus: isSet(object.consentStatus) ? ConsentStatusEvent.fromJSON(object.consentStatus) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.formCanceled !== undefined) {\n obj.formCanceled = FormCanceledEvent.toJSON(message.formCanceled);\n }\n if (message.formSubmitted !== undefined) {\n obj.formSubmitted = FormSubmittedEvent.toJSON(message.formSubmitted);\n }\n if (message.realtimeEvent !== undefined) {\n obj.realtimeEvent = RealtimeSubscriptionEvent.toJSON(message.realtimeEvent);\n }\n if (message.immersiveModeEvent !== undefined) {\n obj.immersiveModeEvent = WebViewImmersiveModeChangedEvent.toJSON(message.immersiveModeEvent);\n }\n if (message.consentStatus !== undefined) {\n obj.consentStatus = ConsentStatusEvent.toJSON(message.consentStatus);\n }\n return obj;\n },\n create(base) {\n return WebViewInternalEventMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewInternalEventMessage();\n message.id = object.id ?? \"\";\n message.formCanceled = (object.formCanceled !== undefined && object.formCanceled !== null)\n ? FormCanceledEvent.fromPartial(object.formCanceled)\n : undefined;\n message.formSubmitted = (object.formSubmitted !== undefined && object.formSubmitted !== null)\n ? FormSubmittedEvent.fromPartial(object.formSubmitted)\n : undefined;\n message.realtimeEvent = (object.realtimeEvent !== undefined && object.realtimeEvent !== null)\n ? RealtimeSubscriptionEvent.fromPartial(object.realtimeEvent)\n : undefined;\n message.immersiveModeEvent = (object.immersiveModeEvent !== undefined && object.immersiveModeEvent !== null)\n ? WebViewImmersiveModeChangedEvent.fromPartial(object.immersiveModeEvent)\n : undefined;\n message.consentStatus = (object.consentStatus !== undefined && object.consentStatus !== null)\n ? ConsentStatusEvent.fromPartial(object.consentStatus)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewInternalEventMessage.$type, WebViewInternalEventMessage);\nfunction createBaseWebViewMessageEvent() {\n return { data: undefined };\n}\nexport const WebViewMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.data !== undefined) {\n WebViewMessageEvent_MessageData.encode(message.data, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.data = WebViewMessageEvent_MessageData.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { data: isSet(object.data) ? WebViewMessageEvent_MessageData.fromJSON(object.data) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.data !== undefined) {\n obj.data = WebViewMessageEvent_MessageData.toJSON(message.data);\n }\n return obj;\n },\n create(base) {\n return WebViewMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewMessageEvent();\n message.data = (object.data !== undefined && object.data !== null)\n ? WebViewMessageEvent_MessageData.fromPartial(object.data)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewMessageEvent.$type, WebViewMessageEvent);\nfunction createBaseWebViewMessageEvent_MessageData() {\n return { type: \"\", data: undefined };\n}\nexport const WebViewMessageEvent_MessageData = {\n $type: \"devvit.ui.events.v1alpha.WebViewMessageEvent.MessageData\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.type !== \"\") {\n writer.uint32(10).string(message.type);\n }\n if (message.data !== undefined) {\n WebViewInternalEventMessage.encode(message.data, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewMessageEvent_MessageData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.type = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = WebViewInternalEventMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n type: isSet(object.type) ? globalThis.String(object.type) : \"\",\n data: isSet(object.data) ? WebViewInternalEventMessage.fromJSON(object.data) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.type !== \"\") {\n obj.type = message.type;\n }\n if (message.data !== undefined) {\n obj.data = WebViewInternalEventMessage.toJSON(message.data);\n }\n return obj;\n },\n create(base) {\n return WebViewMessageEvent_MessageData.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewMessageEvent_MessageData();\n message.type = object.type ?? \"\";\n message.data = (object.data !== undefined && object.data !== null)\n ? WebViewInternalEventMessage.fromPartial(object.data)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewMessageEvent_MessageData.$type, WebViewMessageEvent_MessageData);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #struct.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\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 */\nexport var NullValue;\n(function (NullValue) {\n /** NULL_VALUE - Null value. */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n NullValue[NullValue[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(NullValue || (NullValue = {}));\nexport function nullValueFromJSON(object) {\n switch (object) {\n case 0:\n case \"NULL_VALUE\":\n return NullValue.NULL_VALUE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return NullValue.UNRECOGNIZED;\n }\n}\nexport function nullValueToJSON(object) {\n switch (object) {\n case NullValue.NULL_VALUE:\n return 0;\n case NullValue.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseStruct() {\n return { fields: {} };\n}\nexport const Struct = {\n $type: \"google.protobuf.Struct\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.fields).forEach(([key, value]) => {\n if (value !== undefined) {\n Struct_FieldsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n }\n });\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = Struct_FieldsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.fields[entry1.key] = entry1.value;\n }\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: isObject(object.fields)\n ? Object.entries(object.fields).reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {})\n : {},\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields) {\n const entries = Object.entries(message.fields);\n if (entries.length > 0) {\n obj.fields = {};\n entries.forEach(([k, v]) => {\n obj.fields[k] = v;\n });\n }\n }\n return obj;\n },\n create(base) {\n return Struct.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct();\n message.fields = Object.entries(object.fields ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {});\n return message;\n },\n wrap(object) {\n const struct = createBaseStruct();\n if (object !== undefined) {\n for (const key of Object.keys(object)) {\n struct.fields[key] = object[key];\n }\n }\n return struct;\n },\n unwrap(message) {\n const object = {};\n if (message.fields) {\n for (const key of Object.keys(message.fields)) {\n object[key] = message.fields[key];\n }\n }\n return object;\n },\n};\nmessageTypeRegistry.set(Struct.$type, Struct);\nfunction createBaseStruct_FieldsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const Struct_FieldsEntry = {\n $type: \"google.protobuf.Struct.FieldsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct_FieldsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object?.value) ? object.value : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return Struct_FieldsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct_FieldsEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Struct_FieldsEntry.$type, Struct_FieldsEntry);\nfunction createBaseValue() {\n return {\n nullValue: undefined,\n numberValue: undefined,\n stringValue: undefined,\n boolValue: undefined,\n structValue: undefined,\n listValue: undefined,\n };\n}\nexport const Value = {\n $type: \"google.protobuf.Value\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.nullValue !== undefined) {\n writer.uint32(8).int32(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(17).double(message.numberValue);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(26).string(message.stringValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.structValue !== undefined) {\n Struct.encode(Struct.wrap(message.structValue), writer.uint32(42).fork()).ldelim();\n }\n if (message.listValue !== undefined) {\n ListValue.encode(ListValue.wrap(message.listValue), writer.uint32(50).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.nullValue = reader.int32();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n nullValue: isSet(object.nullValue) ? nullValueFromJSON(object.nullValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n structValue: isObject(object.structValue) ? object.structValue : undefined,\n listValue: globalThis.Array.isArray(object.listValue) ? [...object.listValue] : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.nullValue !== undefined) {\n obj.nullValue = nullValueToJSON(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.structValue !== undefined) {\n obj.structValue = message.structValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = message.listValue;\n }\n return obj;\n },\n create(base) {\n return Value.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseValue();\n message.nullValue = object.nullValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.structValue = object.structValue ?? undefined;\n message.listValue = object.listValue ?? undefined;\n return message;\n },\n wrap(value) {\n const result = createBaseValue();\n if (value === null) {\n result.nullValue = NullValue.NULL_VALUE;\n }\n else if (typeof value === \"boolean\") {\n result.boolValue = value;\n }\n else if (typeof value === \"number\") {\n result.numberValue = value;\n }\n else if (typeof value === \"string\") {\n result.stringValue = value;\n }\n else if (globalThis.Array.isArray(value)) {\n result.listValue = value;\n }\n else if (typeof value === \"object\") {\n result.structValue = value;\n }\n else if (typeof value !== \"undefined\") {\n throw new globalThis.Error(\"Unsupported any value type: \" + typeof value);\n }\n return result;\n },\n unwrap(message) {\n if (message.stringValue !== undefined) {\n return message.stringValue;\n }\n else if (message?.numberValue !== undefined) {\n return message.numberValue;\n }\n else if (message?.boolValue !== undefined) {\n return message.boolValue;\n }\n else if (message?.structValue !== undefined) {\n return message.structValue;\n }\n else if (message?.listValue !== undefined) {\n return message.listValue;\n }\n else if (message?.nullValue !== undefined) {\n return null;\n }\n return undefined;\n },\n};\nmessageTypeRegistry.set(Value.$type, Value);\nfunction createBaseListValue() {\n return { values: [] };\n}\nexport const ListValue = {\n $type: \"google.protobuf.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n Value.encode(Value.wrap(v), writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(Value.unwrap(Value.decode(reader, reader.uint32())));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { values: globalThis.Array.isArray(object?.values) ? [...object.values] : [] };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseListValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n wrap(array) {\n const result = createBaseListValue();\n result.values = array ?? [];\n return result;\n },\n unwrap(message) {\n if (message?.hasOwnProperty(\"values\") && globalThis.Array.isArray(message.values)) {\n return message.values;\n }\n else {\n return message;\n }\n },\n};\nmessageTypeRegistry.set(ListValue.$type, ListValue);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #typeRegistry.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport const messageTypeRegistry = new Map();\n", "/**\n * #show_form.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { Form } from \"../../form_builder/v1alpha/form.js\";\nimport { FormFieldValue } from \"../../form_builder/v1alpha/value.js\";\nfunction createBaseShowFormEffect() {\n return { form: undefined };\n}\nexport const ShowFormEffect = {\n $type: \"devvit.ui.effect_types.v1alpha.ShowFormEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.form !== undefined) {\n Form.encode(message.form, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseShowFormEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.form = Form.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { form: isSet(object.form) ? Form.fromJSON(object.form) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.form !== undefined) {\n obj.form = Form.toJSON(message.form);\n }\n return obj;\n },\n create(base) {\n return ShowFormEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseShowFormEffect();\n message.form = (object.form !== undefined && object.form !== null) ? Form.fromPartial(object.form) : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(ShowFormEffect.$type, ShowFormEffect);\nfunction createBaseFormSubmittedEvent() {\n return { results: {}, formId: undefined };\n}\nexport const FormSubmittedEvent = {\n $type: \"devvit.ui.effect_types.v1alpha.FormSubmittedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.results).forEach(([key, value]) => {\n FormSubmittedEvent_ResultsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n });\n if (message.formId !== undefined) {\n writer.uint32(18).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = FormSubmittedEvent_ResultsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.results[entry1.key] = entry1.value;\n }\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n results: isObject(object.results)\n ? Object.entries(object.results).reduce((acc, [key, value]) => {\n acc[key] = FormFieldValue.fromJSON(value);\n return acc;\n }, {})\n : {},\n formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.results) {\n const entries = Object.entries(message.results);\n if (entries.length > 0) {\n obj.results = {};\n entries.forEach(([k, v]) => {\n obj.results[k] = FormFieldValue.toJSON(v);\n });\n }\n }\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent();\n message.results = Object.entries(object.results ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = FormFieldValue.fromPartial(value);\n }\n return acc;\n }, {});\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent.$type, FormSubmittedEvent);\nfunction createBaseFormSubmittedEvent_ResultsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const FormSubmittedEvent_ResultsEntry = {\n $type: \"devvit.ui.effect_types.v1alpha.FormSubmittedEvent.ResultsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n FormFieldValue.encode(message.value, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = FormFieldValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? FormFieldValue.fromJSON(object.value) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = FormFieldValue.toJSON(message.value);\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent_ResultsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? FormFieldValue.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent_ResultsEntry.$type, FormSubmittedEvent_ResultsEntry);\nfunction createBaseFormCanceledEvent() {\n return { formId: undefined };\n}\nexport const FormCanceledEvent = {\n $type: \"devvit.ui.effect_types.v1alpha.FormCanceledEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.formId !== undefined) {\n writer.uint32(10).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormCanceledEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormCanceledEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormCanceledEvent();\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormCanceledEvent.$type, FormCanceledEvent);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #form.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormField } from \"./field.js\";\nfunction createBaseForm() {\n return {\n fields: [],\n title: undefined,\n shortDescription: undefined,\n acceptLabel: undefined,\n cancelLabel: undefined,\n id: undefined,\n };\n}\nexport const Form = {\n $type: \"devvit.ui.form_builder.v1alpha.Form\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.title !== undefined) {\n writer.uint32(18).string(message.title);\n }\n if (message.shortDescription !== undefined) {\n writer.uint32(26).string(message.shortDescription);\n }\n if (message.acceptLabel !== undefined) {\n writer.uint32(34).string(message.acceptLabel);\n }\n if (message.cancelLabel !== undefined) {\n writer.uint32(42).string(message.cancelLabel);\n }\n if (message.id !== undefined) {\n writer.uint32(50).string(message.id);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseForm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.title = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.shortDescription = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.acceptLabel = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.cancelLabel = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.id = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n shortDescription: isSet(object.shortDescription) ? globalThis.String(object.shortDescription) : undefined,\n acceptLabel: isSet(object.acceptLabel) ? globalThis.String(object.acceptLabel) : undefined,\n cancelLabel: isSet(object.cancelLabel) ? globalThis.String(object.cancelLabel) : undefined,\n id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n if (message.title !== undefined) {\n obj.title = message.title;\n }\n if (message.shortDescription !== undefined) {\n obj.shortDescription = message.shortDescription;\n }\n if (message.acceptLabel !== undefined) {\n obj.acceptLabel = message.acceptLabel;\n }\n if (message.cancelLabel !== undefined) {\n obj.cancelLabel = message.cancelLabel;\n }\n if (message.id !== undefined) {\n obj.id = message.id;\n }\n return obj;\n },\n create(base) {\n return Form.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseForm();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n message.title = object.title ?? undefined;\n message.shortDescription = object.shortDescription ?? undefined;\n message.acceptLabel = object.acceptLabel ?? undefined;\n message.cancelLabel = object.cancelLabel ?? undefined;\n message.id = object.id ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Form.$type, Form);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #field.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nimport { FormFieldValue } from \"./value.js\";\nfunction createBaseFormField() {\n return {\n fieldId: \"\",\n fieldType: 0,\n label: \"\",\n helpText: undefined,\n defaultValue: undefined,\n required: undefined,\n disabled: undefined,\n fieldConfig: undefined,\n isSecret: undefined,\n };\n}\nexport const FormField = {\n $type: \"devvit.ui.form_builder.v1alpha.FormField\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldId !== \"\") {\n writer.uint32(10).string(message.fieldId);\n }\n if (message.fieldType !== 0) {\n writer.uint32(16).int32(message.fieldType);\n }\n if (message.label !== \"\") {\n writer.uint32(26).string(message.label);\n }\n if (message.helpText !== undefined) {\n writer.uint32(34).string(message.helpText);\n }\n if (message.defaultValue !== undefined) {\n FormFieldValue.encode(message.defaultValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.required !== undefined) {\n writer.uint32(48).bool(message.required);\n }\n if (message.disabled !== undefined) {\n writer.uint32(56).bool(message.disabled);\n }\n if (message.fieldConfig !== undefined) {\n FieldConfig.encode(message.fieldConfig, writer.uint32(66).fork()).ldelim();\n }\n if (message.isSecret !== undefined) {\n writer.uint32(72).bool(message.isSecret);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormField();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fieldId = reader.string();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.label = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.helpText = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.defaultValue = FormFieldValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 48) {\n break;\n }\n message.required = reader.bool();\n continue;\n case 7:\n if (tag !== 56) {\n break;\n }\n message.disabled = reader.bool();\n continue;\n case 8:\n if (tag !== 66) {\n break;\n }\n message.fieldConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 9:\n if (tag !== 72) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldId: isSet(object.fieldId) ? globalThis.String(object.fieldId) : \"\",\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n helpText: isSet(object.helpText) ? globalThis.String(object.helpText) : undefined,\n defaultValue: isSet(object.defaultValue) ? FormFieldValue.fromJSON(object.defaultValue) : undefined,\n required: isSet(object.required) ? globalThis.Boolean(object.required) : undefined,\n disabled: isSet(object.disabled) ? globalThis.Boolean(object.disabled) : undefined,\n fieldConfig: isSet(object.fieldConfig) ? FieldConfig.fromJSON(object.fieldConfig) : undefined,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldId !== \"\") {\n obj.fieldId = message.fieldId;\n }\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.helpText !== undefined) {\n obj.helpText = message.helpText;\n }\n if (message.defaultValue !== undefined) {\n obj.defaultValue = FormFieldValue.toJSON(message.defaultValue);\n }\n if (message.required !== undefined) {\n obj.required = message.required;\n }\n if (message.disabled !== undefined) {\n obj.disabled = message.disabled;\n }\n if (message.fieldConfig !== undefined) {\n obj.fieldConfig = FieldConfig.toJSON(message.fieldConfig);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n return obj;\n },\n create(base) {\n return FormField.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormField();\n message.fieldId = object.fieldId ?? \"\";\n message.fieldType = object.fieldType ?? 0;\n message.label = object.label ?? \"\";\n message.helpText = object.helpText ?? undefined;\n message.defaultValue = (object.defaultValue !== undefined && object.defaultValue !== null)\n ? FormFieldValue.fromPartial(object.defaultValue)\n : undefined;\n message.required = object.required ?? undefined;\n message.disabled = object.disabled ?? undefined;\n message.fieldConfig = (object.fieldConfig !== undefined && object.fieldConfig !== null)\n ? FieldConfig.fromPartial(object.fieldConfig)\n : undefined;\n message.isSecret = object.isSecret ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormField.$type, FormField);\nfunction createBaseFieldConfig() {\n return {\n stringConfig: undefined,\n paragraphConfig: undefined,\n numberConfig: undefined,\n booleanConfig: undefined,\n listConfig: undefined,\n selectionConfig: undefined,\n groupConfig: undefined,\n };\n}\nexport const FieldConfig = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.stringConfig !== undefined) {\n FieldConfig_String.encode(message.stringConfig, writer.uint32(10).fork()).ldelim();\n }\n if (message.paragraphConfig !== undefined) {\n FieldConfig_Paragraph.encode(message.paragraphConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.numberConfig !== undefined) {\n FieldConfig_Number.encode(message.numberConfig, writer.uint32(26).fork()).ldelim();\n }\n if (message.booleanConfig !== undefined) {\n FieldConfig_Boolean.encode(message.booleanConfig, writer.uint32(34).fork()).ldelim();\n }\n if (message.listConfig !== undefined) {\n FieldConfig_List.encode(message.listConfig, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionConfig !== undefined) {\n FieldConfig_Selection.encode(message.selectionConfig, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupConfig !== undefined) {\n FieldConfig_Group.encode(message.groupConfig, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.stringConfig = FieldConfig_String.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.paragraphConfig = FieldConfig_Paragraph.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.numberConfig = FieldConfig_Number.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.booleanConfig = FieldConfig_Boolean.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listConfig = FieldConfig_List.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionConfig = FieldConfig_Selection.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupConfig = FieldConfig_Group.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n stringConfig: isSet(object.stringConfig) ? FieldConfig_String.fromJSON(object.stringConfig) : undefined,\n paragraphConfig: isSet(object.paragraphConfig)\n ? FieldConfig_Paragraph.fromJSON(object.paragraphConfig)\n : undefined,\n numberConfig: isSet(object.numberConfig) ? FieldConfig_Number.fromJSON(object.numberConfig) : undefined,\n booleanConfig: isSet(object.booleanConfig) ? FieldConfig_Boolean.fromJSON(object.booleanConfig) : undefined,\n listConfig: isSet(object.listConfig) ? FieldConfig_List.fromJSON(object.listConfig) : undefined,\n selectionConfig: isSet(object.selectionConfig)\n ? FieldConfig_Selection.fromJSON(object.selectionConfig)\n : undefined,\n groupConfig: isSet(object.groupConfig) ? FieldConfig_Group.fromJSON(object.groupConfig) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.stringConfig !== undefined) {\n obj.stringConfig = FieldConfig_String.toJSON(message.stringConfig);\n }\n if (message.paragraphConfig !== undefined) {\n obj.paragraphConfig = FieldConfig_Paragraph.toJSON(message.paragraphConfig);\n }\n if (message.numberConfig !== undefined) {\n obj.numberConfig = FieldConfig_Number.toJSON(message.numberConfig);\n }\n if (message.booleanConfig !== undefined) {\n obj.booleanConfig = FieldConfig_Boolean.toJSON(message.booleanConfig);\n }\n if (message.listConfig !== undefined) {\n obj.listConfig = FieldConfig_List.toJSON(message.listConfig);\n }\n if (message.selectionConfig !== undefined) {\n obj.selectionConfig = FieldConfig_Selection.toJSON(message.selectionConfig);\n }\n if (message.groupConfig !== undefined) {\n obj.groupConfig = FieldConfig_Group.toJSON(message.groupConfig);\n }\n return obj;\n },\n create(base) {\n return FieldConfig.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig();\n message.stringConfig = (object.stringConfig !== undefined && object.stringConfig !== null)\n ? FieldConfig_String.fromPartial(object.stringConfig)\n : undefined;\n message.paragraphConfig = (object.paragraphConfig !== undefined && object.paragraphConfig !== null)\n ? FieldConfig_Paragraph.fromPartial(object.paragraphConfig)\n : undefined;\n message.numberConfig = (object.numberConfig !== undefined && object.numberConfig !== null)\n ? FieldConfig_Number.fromPartial(object.numberConfig)\n : undefined;\n message.booleanConfig = (object.booleanConfig !== undefined && object.booleanConfig !== null)\n ? FieldConfig_Boolean.fromPartial(object.booleanConfig)\n : undefined;\n message.listConfig = (object.listConfig !== undefined && object.listConfig !== null)\n ? FieldConfig_List.fromPartial(object.listConfig)\n : undefined;\n message.selectionConfig = (object.selectionConfig !== undefined && object.selectionConfig !== null)\n ? FieldConfig_Selection.fromPartial(object.selectionConfig)\n : undefined;\n message.groupConfig = (object.groupConfig !== undefined && object.groupConfig !== null)\n ? FieldConfig_Group.fromPartial(object.groupConfig)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig.$type, FieldConfig);\nfunction createBaseFieldConfig_String() {\n return { minLength: undefined, maxLength: undefined, placeholder: undefined };\n}\nexport const FieldConfig_String = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.String\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.minLength !== undefined) {\n writer.uint32(8).int32(message.minLength);\n }\n if (message.maxLength !== undefined) {\n writer.uint32(16).int32(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_String();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.minLength = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.maxLength = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n minLength: isSet(object.minLength) ? globalThis.Number(object.minLength) : undefined,\n maxLength: isSet(object.maxLength) ? globalThis.Number(object.maxLength) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.minLength !== undefined) {\n obj.minLength = Math.round(message.minLength);\n }\n if (message.maxLength !== undefined) {\n obj.maxLength = Math.round(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_String.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_String();\n message.minLength = object.minLength ?? undefined;\n message.maxLength = object.maxLength ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_String.$type, FieldConfig_String);\nfunction createBaseFieldConfig_Paragraph() {\n return { maxCharacters: undefined, lineHeight: undefined, placeholder: undefined };\n}\nexport const FieldConfig_Paragraph = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Paragraph\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.maxCharacters !== undefined) {\n writer.uint32(8).int32(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n writer.uint32(16).int32(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Paragraph();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.maxCharacters = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.lineHeight = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n maxCharacters: isSet(object.maxCharacters) ? globalThis.Number(object.maxCharacters) : undefined,\n lineHeight: isSet(object.lineHeight) ? globalThis.Number(object.lineHeight) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.maxCharacters !== undefined) {\n obj.maxCharacters = Math.round(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n obj.lineHeight = Math.round(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Paragraph.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Paragraph();\n message.maxCharacters = object.maxCharacters ?? undefined;\n message.lineHeight = object.lineHeight ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Paragraph.$type, FieldConfig_Paragraph);\nfunction createBaseFieldConfig_Number() {\n return { step: undefined, min: undefined, max: undefined };\n}\nexport const FieldConfig_Number = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Number\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.step !== undefined) {\n writer.uint32(9).double(message.step);\n }\n if (message.min !== undefined) {\n writer.uint32(17).double(message.min);\n }\n if (message.max !== undefined) {\n writer.uint32(25).double(message.max);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Number();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 9) {\n break;\n }\n message.step = reader.double();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.min = reader.double();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.max = reader.double();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n step: isSet(object.step) ? globalThis.Number(object.step) : undefined,\n min: isSet(object.min) ? globalThis.Number(object.min) : undefined,\n max: isSet(object.max) ? globalThis.Number(object.max) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.step !== undefined) {\n obj.step = message.step;\n }\n if (message.min !== undefined) {\n obj.min = message.min;\n }\n if (message.max !== undefined) {\n obj.max = message.max;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Number.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Number();\n message.step = object.step ?? undefined;\n message.min = object.min ?? undefined;\n message.max = object.max ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Number.$type, FieldConfig_Number);\nfunction createBaseFieldConfig_Boolean() {\n return {};\n}\nexport const FieldConfig_Boolean = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Boolean\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Boolean();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FieldConfig_Boolean.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFieldConfig_Boolean();\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Boolean.$type, FieldConfig_Boolean);\nfunction createBaseFieldConfig_List() {\n return { itemType: 0, itemConfig: undefined, minEntries: undefined, maxEntries: undefined, entryLabel: undefined };\n}\nexport const FieldConfig_List = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.List\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n FieldConfig.encode(message.itemConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.minEntries !== undefined) {\n writer.uint32(24).int32(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n writer.uint32(32).int32(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n writer.uint32(42).string(message.entryLabel);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_List();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.itemConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minEntries = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxEntries = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.entryLabel = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n itemConfig: isSet(object.itemConfig) ? FieldConfig.fromJSON(object.itemConfig) : undefined,\n minEntries: isSet(object.minEntries) ? globalThis.Number(object.minEntries) : undefined,\n maxEntries: isSet(object.maxEntries) ? globalThis.Number(object.maxEntries) : undefined,\n entryLabel: isSet(object.entryLabel) ? globalThis.String(object.entryLabel) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n obj.itemConfig = FieldConfig.toJSON(message.itemConfig);\n }\n if (message.minEntries !== undefined) {\n obj.minEntries = Math.round(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n obj.maxEntries = Math.round(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n obj.entryLabel = message.entryLabel;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_List.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_List();\n message.itemType = object.itemType ?? 0;\n message.itemConfig = (object.itemConfig !== undefined && object.itemConfig !== null)\n ? FieldConfig.fromPartial(object.itemConfig)\n : undefined;\n message.minEntries = object.minEntries ?? undefined;\n message.maxEntries = object.maxEntries ?? undefined;\n message.entryLabel = object.entryLabel ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_List.$type, FieldConfig_List);\nfunction createBaseFieldConfig_Selection() {\n return {\n choices: [],\n multiSelect: undefined,\n minSelections: undefined,\n maxSelections: undefined,\n renderAsList: undefined,\n };\n}\nexport const FieldConfig_Selection = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.choices) {\n FieldConfig_Selection_Item.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.multiSelect !== undefined) {\n writer.uint32(16).bool(message.multiSelect);\n }\n if (message.minSelections !== undefined) {\n writer.uint32(24).int32(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n writer.uint32(32).int32(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n writer.uint32(40).bool(message.renderAsList);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.choices.push(FieldConfig_Selection_Item.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.multiSelect = reader.bool();\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minSelections = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxSelections = reader.int32();\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n message.renderAsList = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n choices: globalThis.Array.isArray(object?.choices)\n ? object.choices.map((e) => FieldConfig_Selection_Item.fromJSON(e))\n : [],\n multiSelect: isSet(object.multiSelect) ? globalThis.Boolean(object.multiSelect) : undefined,\n minSelections: isSet(object.minSelections) ? globalThis.Number(object.minSelections) : undefined,\n maxSelections: isSet(object.maxSelections) ? globalThis.Number(object.maxSelections) : undefined,\n renderAsList: isSet(object.renderAsList) ? globalThis.Boolean(object.renderAsList) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.choices?.length) {\n obj.choices = message.choices.map((e) => FieldConfig_Selection_Item.toJSON(e));\n }\n if (message.multiSelect !== undefined) {\n obj.multiSelect = message.multiSelect;\n }\n if (message.minSelections !== undefined) {\n obj.minSelections = Math.round(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n obj.maxSelections = Math.round(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n obj.renderAsList = message.renderAsList;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection();\n message.choices = object.choices?.map((e) => FieldConfig_Selection_Item.fromPartial(e)) || [];\n message.multiSelect = object.multiSelect ?? undefined;\n message.minSelections = object.minSelections ?? undefined;\n message.maxSelections = object.maxSelections ?? undefined;\n message.renderAsList = object.renderAsList ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection.$type, FieldConfig_Selection);\nfunction createBaseFieldConfig_Selection_Item() {\n return { label: \"\", value: \"\" };\n}\nexport const FieldConfig_Selection_Item = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection.Item\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.label !== \"\") {\n writer.uint32(10).string(message.label);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection_Item();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.label = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.value !== \"\") {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection_Item.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection_Item();\n message.label = object.label ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection_Item.$type, FieldConfig_Selection_Item);\nfunction createBaseFieldConfig_Group() {\n return { fields: [] };\n}\nexport const FieldConfig_Group = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Group\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Group();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Group.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Group();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Group.$type, FieldConfig_Group);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #type.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var FormFieldType;\n(function (FormFieldType) {\n /** STRING - Single-line string */\n FormFieldType[FormFieldType[\"STRING\"] = 0] = \"STRING\";\n /** PARAGRAPH - Multi-line string */\n FormFieldType[FormFieldType[\"PARAGRAPH\"] = 1] = \"PARAGRAPH\";\n /** NUMBER - Number input */\n FormFieldType[FormFieldType[\"NUMBER\"] = 2] = \"NUMBER\";\n /** BOOLEAN - Checkbox, switch */\n FormFieldType[FormFieldType[\"BOOLEAN\"] = 3] = \"BOOLEAN\";\n /** LIST - Collect multiple entries of a single type */\n FormFieldType[FormFieldType[\"LIST\"] = 4] = \"LIST\";\n /** SELECTION - Provide a list of options for the user to choose from */\n FormFieldType[FormFieldType[\"SELECTION\"] = 5] = \"SELECTION\";\n /** GROUP - Create a labeled subsection of the form with nested fields */\n FormFieldType[FormFieldType[\"GROUP\"] = 6] = \"GROUP\";\n /** IMAGE - Image upload - value is a URL for the uploaded image */\n FormFieldType[FormFieldType[\"IMAGE\"] = 7] = \"IMAGE\";\n FormFieldType[FormFieldType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FormFieldType || (FormFieldType = {}));\nexport function formFieldTypeFromJSON(object) {\n switch (object) {\n case 0:\n case \"STRING\":\n return FormFieldType.STRING;\n case 1:\n case \"PARAGRAPH\":\n return FormFieldType.PARAGRAPH;\n case 2:\n case \"NUMBER\":\n return FormFieldType.NUMBER;\n case 3:\n case \"BOOLEAN\":\n return FormFieldType.BOOLEAN;\n case 4:\n case \"LIST\":\n return FormFieldType.LIST;\n case 5:\n case \"SELECTION\":\n return FormFieldType.SELECTION;\n case 6:\n case \"GROUP\":\n return FormFieldType.GROUP;\n case 7:\n case \"IMAGE\":\n return FormFieldType.IMAGE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FormFieldType.UNRECOGNIZED;\n }\n}\nexport function formFieldTypeToJSON(object) {\n switch (object) {\n case FormFieldType.STRING:\n return 0;\n case FormFieldType.PARAGRAPH:\n return 1;\n case FormFieldType.NUMBER:\n return 2;\n case FormFieldType.BOOLEAN:\n return 3;\n case FormFieldType.LIST:\n return 4;\n case FormFieldType.SELECTION:\n return 5;\n case FormFieldType.GROUP:\n return 6;\n case FormFieldType.IMAGE:\n return 7;\n case FormFieldType.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n", "/**\n * #value.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nfunction createBaseFormFieldValue() {\n return {\n fieldType: 0,\n isSecret: undefined,\n stringValue: undefined,\n numberValue: undefined,\n boolValue: undefined,\n listValue: undefined,\n selectionValue: undefined,\n groupValue: undefined,\n };\n}\nexport const FormFieldValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldType !== 0) {\n writer.uint32(8).int32(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n writer.uint32(800).bool(message.isSecret);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(18).string(message.stringValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(25).double(message.numberValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.listValue !== undefined) {\n FormFieldValue_ListValue.encode(message.listValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionValue !== undefined) {\n FormFieldValue_SelectionValue.encode(message.selectionValue, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupValue !== undefined) {\n FormFieldValue_GroupValue.encode(message.groupValue, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 100:\n if (tag !== 800) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listValue = FormFieldValue_ListValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionValue = FormFieldValue_SelectionValue.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupValue = FormFieldValue_GroupValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n listValue: isSet(object.listValue) ? FormFieldValue_ListValue.fromJSON(object.listValue) : undefined,\n selectionValue: isSet(object.selectionValue)\n ? FormFieldValue_SelectionValue.fromJSON(object.selectionValue)\n : undefined,\n groupValue: isSet(object.groupValue) ? FormFieldValue_GroupValue.fromJSON(object.groupValue) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = FormFieldValue_ListValue.toJSON(message.listValue);\n }\n if (message.selectionValue !== undefined) {\n obj.selectionValue = FormFieldValue_SelectionValue.toJSON(message.selectionValue);\n }\n if (message.groupValue !== undefined) {\n obj.groupValue = FormFieldValue_GroupValue.toJSON(message.groupValue);\n }\n return obj;\n },\n create(base) {\n return FormFieldValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue();\n message.fieldType = object.fieldType ?? 0;\n message.isSecret = object.isSecret ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.listValue = (object.listValue !== undefined && object.listValue !== null)\n ? FormFieldValue_ListValue.fromPartial(object.listValue)\n : undefined;\n message.selectionValue = (object.selectionValue !== undefined && object.selectionValue !== null)\n ? FormFieldValue_SelectionValue.fromPartial(object.selectionValue)\n : undefined;\n message.groupValue = (object.groupValue !== undefined && object.groupValue !== null)\n ? FormFieldValue_GroupValue.fromPartial(object.groupValue)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue.$type, FormFieldValue);\nfunction createBaseFormFieldValue_ListValue() {\n return { itemType: 0, items: [] };\n}\nexport const FormFieldValue_ListValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n for (const v of message.items) {\n FormFieldValue.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_ListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.items.push(FormFieldValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n items: globalThis.Array.isArray(object?.items) ? object.items.map((e) => FormFieldValue.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.items?.length) {\n obj.items = message.items.map((e) => FormFieldValue.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_ListValue();\n message.itemType = object.itemType ?? 0;\n message.items = object.items?.map((e) => FormFieldValue.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_ListValue.$type, FormFieldValue_ListValue);\nfunction createBaseFormFieldValue_SelectionValue() {\n return { values: [] };\n}\nexport const FormFieldValue_SelectionValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.SelectionValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_SelectionValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n values: globalThis.Array.isArray(object?.values) ? object.values.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_SelectionValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_SelectionValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_SelectionValue.$type, FormFieldValue_SelectionValue);\nfunction createBaseFormFieldValue_GroupValue() {\n return {};\n}\nexport const FormFieldValue_GroupValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.GroupValue\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_GroupValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FormFieldValue_GroupValue.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFormFieldValue_GroupValue();\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_GroupValue.$type, FormFieldValue_GroupValue);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { consentStatusFromJSON, consentStatusToJSON, } from \"../../../../reddit/devvit/app_permission/v1/app_permission.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nfunction createBaseCanRunAsUserEffect() {\n return { postId: undefined, appSlug: undefined, subredditId: undefined };\n}\nexport const CanRunAsUserEffect = {\n $type: \"devvit.ui.effects.v1alpha.CanRunAsUserEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postId !== undefined) {\n writer.uint32(10).string(message.postId);\n }\n if (message.appSlug !== undefined) {\n writer.uint32(18).string(message.appSlug);\n }\n if (message.subredditId !== undefined) {\n writer.uint32(26).string(message.subredditId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCanRunAsUserEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postId: isSet(object.postId) ? globalThis.String(object.postId) : undefined,\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : undefined,\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postId !== undefined) {\n obj.postId = message.postId;\n }\n if (message.appSlug !== undefined) {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== undefined) {\n obj.subredditId = message.subredditId;\n }\n return obj;\n },\n create(base) {\n return CanRunAsUserEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseCanRunAsUserEffect();\n message.postId = object.postId ?? undefined;\n message.appSlug = object.appSlug ?? undefined;\n message.subredditId = object.subredditId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(CanRunAsUserEffect.$type, CanRunAsUserEffect);\nfunction createBaseConsentStatusEvent() {\n return { consentStatus: 0 };\n}\nexport const ConsentStatusEvent = {\n $type: \"devvit.ui.effects.v1alpha.ConsentStatusEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.consentStatus !== 0) {\n writer.uint32(8).int32(message.consentStatus);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseConsentStatusEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.consentStatus = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { consentStatus: isSet(object.consentStatus) ? consentStatusFromJSON(object.consentStatus) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.consentStatus !== 0) {\n obj.consentStatus = consentStatusToJSON(message.consentStatus);\n }\n return obj;\n },\n create(base) {\n return ConsentStatusEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseConsentStatusEvent();\n message.consentStatus = object.consentStatus ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(ConsentStatusEvent.$type, ConsentStatusEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Timestamp } from \"../../../../google/protobuf/timestamp.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\n/** This enum is used to represent the consent status of an app permission. */\nexport var ConsentStatus;\n(function (ConsentStatus) {\n /** CONSENT_STATUS_UNKNOWN - The consent status is unknown, which means it has not been set or is not applicable. */\n ConsentStatus[ConsentStatus[\"CONSENT_STATUS_UNKNOWN\"] = 0] = \"CONSENT_STATUS_UNKNOWN\";\n /** REVOKED - The user has explicitly denied consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"REVOKED\"] = 1] = \"REVOKED\";\n /** GRANTED - The user has granted consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"GRANTED\"] = 2] = \"GRANTED\";\n ConsentStatus[ConsentStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ConsentStatus || (ConsentStatus = {}));\nexport function consentStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"CONSENT_STATUS_UNKNOWN\":\n return ConsentStatus.CONSENT_STATUS_UNKNOWN;\n case 1:\n case \"REVOKED\":\n return ConsentStatus.REVOKED;\n case 2:\n case \"GRANTED\":\n return ConsentStatus.GRANTED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return ConsentStatus.UNRECOGNIZED;\n }\n}\nexport function consentStatusToJSON(object) {\n switch (object) {\n case ConsentStatus.CONSENT_STATUS_UNKNOWN:\n return 0;\n case ConsentStatus.REVOKED:\n return 1;\n case ConsentStatus.GRANTED:\n return 2;\n case ConsentStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n/** This enum is used to represent the scopes of permissions that can be granted to an app. */\nexport var Scope;\n(function (Scope) {\n /** SCOPE_UNKNOWN - The scope is unknown, which means it has not been set or is not applicable. */\n Scope[Scope[\"SCOPE_UNKNOWN\"] = 0] = \"SCOPE_UNKNOWN\";\n /** SUBMIT_POST - Allows the app to submit posts on behalf of the user. */\n Scope[Scope[\"SUBMIT_POST\"] = 1] = \"SUBMIT_POST\";\n /** SUBMIT_COMMENT - Allows the app to submit comments on behalf of the user. */\n Scope[Scope[\"SUBMIT_COMMENT\"] = 2] = \"SUBMIT_COMMENT\";\n /** SUBSCRIBE_TO_SUBREDDIT - Allows the app to subscribe the user to a subreddit. */\n Scope[Scope[\"SUBSCRIBE_TO_SUBREDDIT\"] = 3] = \"SUBSCRIBE_TO_SUBREDDIT\";\n Scope[Scope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Scope || (Scope = {}));\nexport function scopeFromJSON(object) {\n switch (object) {\n case 0:\n case \"SCOPE_UNKNOWN\":\n return Scope.SCOPE_UNKNOWN;\n case 1:\n case \"SUBMIT_POST\":\n return Scope.SUBMIT_POST;\n case 2:\n case \"SUBMIT_COMMENT\":\n return Scope.SUBMIT_COMMENT;\n case 3:\n case \"SUBSCRIBE_TO_SUBREDDIT\":\n return Scope.SUBSCRIBE_TO_SUBREDDIT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Scope.UNRECOGNIZED;\n }\n}\nexport function scopeToJSON(object) {\n switch (object) {\n case Scope.SCOPE_UNKNOWN:\n return 0;\n case Scope.SUBMIT_POST:\n return 1;\n case Scope.SUBMIT_COMMENT:\n return 2;\n case Scope.SUBSCRIBE_TO_SUBREDDIT:\n return 3;\n case Scope.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseAppPermission() {\n return { appSlug: \"\", subredditId: \"\", scopes: [], consentStatus: 0, updatedAt: undefined };\n}\nexport const AppPermission = {\n $type: \"reddit.devvit.app_permission.v1.AppPermission\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(18).string(message.subredditId);\n }\n writer.uint32(26).fork();\n for (const v of message.scopes) {\n writer.int32(v);\n }\n writer.ldelim();\n if (message.consentStatus !== 0) {\n writer.uint32(32).int32(message.consentStatus);\n }\n if (message.updatedAt !== undefined) {\n Timestamp.encode(toTimestamp(message.updatedAt), writer.uint32(42).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAppPermission();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 3:\n if (tag === 24) {\n message.scopes.push(reader.int32());\n continue;\n }\n if (tag === 26) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.scopes.push(reader.int32());\n }\n continue;\n }\n break;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.consentStatus = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.updatedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n scopes: globalThis.Array.isArray(object?.scopes) ? object.scopes.map((e) => scopeFromJSON(e)) : [],\n consentStatus: isSet(object.consentStatus) ? consentStatusFromJSON(object.consentStatus) : 0,\n updatedAt: isSet(object.updatedAt) ? fromJsonTimestamp(object.updatedAt) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.scopes?.length) {\n obj.scopes = message.scopes.map((e) => scopeToJSON(e));\n }\n if (message.consentStatus !== 0) {\n obj.consentStatus = consentStatusToJSON(message.consentStatus);\n }\n if (message.updatedAt !== undefined) {\n obj.updatedAt = message.updatedAt.toISOString();\n }\n return obj;\n },\n create(base) {\n return AppPermission.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseAppPermission();\n message.appSlug = object.appSlug ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n message.scopes = object.scopes?.map((e) => e) || [];\n message.consentStatus = object.consentStatus ?? 0;\n message.updatedAt = object.updatedAt ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(AppPermission.$type, AppPermission);\nfunction createBaseDevvitApp() {\n return { appSlug: \"\", appName: \"\" };\n}\nexport const DevvitApp = {\n $type: \"reddit.devvit.app_permission.v1.DevvitApp\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.appName !== \"\") {\n writer.uint32(18).string(message.appName);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDevvitApp();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appName = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n appName: isSet(object.appName) ? globalThis.String(object.appName) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.appName !== \"\") {\n obj.appName = message.appName;\n }\n return obj;\n },\n create(base) {\n return DevvitApp.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseDevvitApp();\n message.appSlug = object.appSlug ?? \"\";\n message.appName = object.appName ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(DevvitApp.$type, DevvitApp);\nfunction createBaseGetAppPermissionsByUserIdRequest() {\n return { userId: \"\" };\n}\nexport const GetAppPermissionsByUserIdRequest = {\n $type: \"reddit.devvit.app_permission.v1.GetAppPermissionsByUserIdRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.userId !== \"\") {\n writer.uint32(10).string(message.userId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetAppPermissionsByUserIdRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.userId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\" };\n },\n toJSON(message) {\n const obj = {};\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n return obj;\n },\n create(base) {\n return GetAppPermissionsByUserIdRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGetAppPermissionsByUserIdRequest();\n message.userId = object.userId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(GetAppPermissionsByUserIdRequest.$type, GetAppPermissionsByUserIdRequest);\nfunction createBaseGetAppPermissionsByUserIdResponse() {\n return { appPermissions: [], devvitApps: [] };\n}\nexport const GetAppPermissionsByUserIdResponse = {\n $type: \"reddit.devvit.app_permission.v1.GetAppPermissionsByUserIdResponse\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.appPermissions) {\n AppPermission.encode(v, writer.uint32(10).fork()).ldelim();\n }\n for (const v of message.devvitApps) {\n DevvitApp.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGetAppPermissionsByUserIdResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appPermissions.push(AppPermission.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.devvitApps.push(DevvitApp.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appPermissions: globalThis.Array.isArray(object?.appPermissions)\n ? object.appPermissions.map((e) => AppPermission.fromJSON(e))\n : [],\n devvitApps: globalThis.Array.isArray(object?.devvitApps)\n ? object.devvitApps.map((e) => DevvitApp.fromJSON(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appPermissions?.length) {\n obj.appPermissions = message.appPermissions.map((e) => AppPermission.toJSON(e));\n }\n if (message.devvitApps?.length) {\n obj.devvitApps = message.devvitApps.map((e) => DevvitApp.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return GetAppPermissionsByUserIdResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGetAppPermissionsByUserIdResponse();\n message.appPermissions = object.appPermissions?.map((e) => AppPermission.fromPartial(e)) || [];\n message.devvitApps = object.devvitApps?.map((e) => DevvitApp.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(GetAppPermissionsByUserIdResponse.$type, GetAppPermissionsByUserIdResponse);\nfunction createBaseGrantAppPermissionRequest() {\n return { userId: \"\", appSlug: \"\", subredditId: \"\", scopes: [] };\n}\nexport const GrantAppPermissionRequest = {\n $type: \"reddit.devvit.app_permission.v1.GrantAppPermissionRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.userId !== \"\") {\n writer.uint32(10).string(message.userId);\n }\n if (message.appSlug !== \"\") {\n writer.uint32(18).string(message.appSlug);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(26).string(message.subredditId);\n }\n writer.uint32(34).fork();\n for (const v of message.scopes) {\n writer.int32(v);\n }\n writer.ldelim();\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGrantAppPermissionRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 4:\n if (tag === 32) {\n message.scopes.push(reader.int32());\n continue;\n }\n if (tag === 34) {\n const end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) {\n message.scopes.push(reader.int32());\n }\n continue;\n }\n break;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n scopes: globalThis.Array.isArray(object?.scopes) ? object.scopes.map((e) => scopeFromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.scopes?.length) {\n obj.scopes = message.scopes.map((e) => scopeToJSON(e));\n }\n return obj;\n },\n create(base) {\n return GrantAppPermissionRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGrantAppPermissionRequest();\n message.userId = object.userId ?? \"\";\n message.appSlug = object.appSlug ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n message.scopes = object.scopes?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(GrantAppPermissionRequest.$type, GrantAppPermissionRequest);\nfunction createBaseGrantAppPermissionResponse() {\n return { error: undefined };\n}\nexport const GrantAppPermissionResponse = {\n $type: \"reddit.devvit.app_permission.v1.GrantAppPermissionResponse\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.error !== undefined) {\n ErrorMessage.encode(message.error, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseGrantAppPermissionResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.error = ErrorMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { error: isSet(object.error) ? ErrorMessage.fromJSON(object.error) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.error !== undefined) {\n obj.error = ErrorMessage.toJSON(message.error);\n }\n return obj;\n },\n create(base) {\n return GrantAppPermissionResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseGrantAppPermissionResponse();\n message.error = (object.error !== undefined && object.error !== null)\n ? ErrorMessage.fromPartial(object.error)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(GrantAppPermissionResponse.$type, GrantAppPermissionResponse);\nfunction createBaseRevokeAppPermissionRequest() {\n return { appSlug: \"\", userId: \"\", subredditId: \"\" };\n}\nexport const RevokeAppPermissionRequest = {\n $type: \"reddit.devvit.app_permission.v1.RevokeAppPermissionRequest\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.appSlug !== \"\") {\n writer.uint32(10).string(message.appSlug);\n }\n if (message.userId !== \"\") {\n writer.uint32(18).string(message.userId);\n }\n if (message.subredditId !== \"\") {\n writer.uint32(26).string(message.subredditId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRevokeAppPermissionRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.appSlug = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n appSlug: isSet(object.appSlug) ? globalThis.String(object.appSlug) : \"\",\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.appSlug !== \"\") {\n obj.appSlug = message.appSlug;\n }\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n return obj;\n },\n create(base) {\n return RevokeAppPermissionRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRevokeAppPermissionRequest();\n message.appSlug = object.appSlug ?? \"\";\n message.userId = object.userId ?? \"\";\n message.subredditId = object.subredditId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(RevokeAppPermissionRequest.$type, RevokeAppPermissionRequest);\nfunction createBaseRevokeAppPermissionResponse() {\n return { error: undefined };\n}\nexport const RevokeAppPermissionResponse = {\n $type: \"reddit.devvit.app_permission.v1.RevokeAppPermissionResponse\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.error !== undefined) {\n ErrorMessage.encode(message.error, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRevokeAppPermissionResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.error = ErrorMessage.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { error: isSet(object.error) ? ErrorMessage.fromJSON(object.error) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.error !== undefined) {\n obj.error = ErrorMessage.toJSON(message.error);\n }\n return obj;\n },\n create(base) {\n return RevokeAppPermissionResponse.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRevokeAppPermissionResponse();\n message.error = (object.error !== undefined && object.error !== null)\n ? ErrorMessage.fromPartial(object.error)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RevokeAppPermissionResponse.$type, RevokeAppPermissionResponse);\nfunction createBaseErrorMessage() {\n return { message: \"\" };\n}\nexport const ErrorMessage = {\n $type: \"reddit.devvit.app_permission.v1.ErrorMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== \"\") {\n writer.uint32(10).string(message.message);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseErrorMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { message: isSet(object.message) ? globalThis.String(object.message) : \"\" };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== \"\") {\n obj.message = message.message;\n }\n return obj;\n },\n create(base) {\n return ErrorMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseErrorMessage();\n message.message = object.message ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(ErrorMessage.$type, ErrorMessage);\nfunction toTimestamp(date) {\n const seconds = Math.trunc(date.getTime() / 1000);\n const nanos = (date.getTime() % 1000) * 1000000;\n return { seconds, nanos };\n}\nfunction fromTimestamp(t) {\n let millis = (t.seconds || 0) * 1000;\n millis += (t.nanos || 0) / 1000000;\n return new globalThis.Date(millis);\n}\nfunction fromJsonTimestamp(o) {\n if (o instanceof globalThis.Date) {\n return o;\n }\n else if (typeof o === \"string\") {\n return new globalThis.Date(o);\n }\n else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\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 * SPDX-License-Identifier: Apache-2.0\n */\n\n// WebAssembly optimizations to do native i64 multiplication and divide\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(\n new WebAssembly.Module(\n new Uint8Array([\n // \\0asm\n 0, 97, 115, 109,\n // version 1\n 1, 0, 0, 0,\n\n // section \"type\"\n 1, 13, 2,\n // 0, () => i32\n 96, 0, 1, 127,\n // 1, (i32, i32, i32, i32) => i32\n 96, 4, 127, 127, 127, 127, 1, 127,\n\n // section \"function\"\n 3, 7, 6,\n // 0, type 0\n 0,\n // 1, type 1\n 1,\n // 2, type 1\n 1,\n // 3, type 1\n 1,\n // 4, type 1\n 1,\n // 5, type 1\n 1,\n\n // section \"global\"\n 6, 6, 1,\n // 0, \"high\", mutable i32\n 127, 1, 65, 0, 11,\n\n // section \"export\"\n 7, 50, 6,\n // 0, \"mul\"\n 3, 109, 117, 108, 0, 1,\n // 1, \"div_s\"\n 5, 100, 105, 118, 95, 115, 0, 2,\n // 2, \"div_u\"\n 5, 100, 105, 118, 95, 117, 0, 3,\n // 3, \"rem_s\"\n 5, 114, 101, 109, 95, 115, 0, 4,\n // 4, \"rem_u\"\n 5, 114, 101, 109, 95, 117, 0, 5,\n // 5, \"get_high\"\n 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0,\n\n // section \"code\"\n 10, 191, 1, 6,\n // 0, \"get_high\"\n 4, 0, 35, 0, 11,\n // 1, \"mul\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 2, \"div_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 3, \"div_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 4, \"rem_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 5, \"rem_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n ]),\n ),\n {},\n ).exports;\n} catch {\n // no wasm support :(\n}\n\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nfunction Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\n\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\n\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nfunction isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n\n/**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\nfunction ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n}\n\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\nLong.isLong = isLong;\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if ((cache = 0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, 0, true);\n if (cache) UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n if ((cache = -128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache) INT_CACHE[value] = obj;\n return obj;\n }\n}\n\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromInt = fromInt;\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromNumber(value, unsigned) {\n if (isNaN(value)) return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n }\n if (value < 0) return fromNumber(-value, unsigned).neg();\n return fromBits(\n value % TWO_PWR_32_DBL | 0,\n (value / TWO_PWR_32_DBL) | 0,\n unsigned,\n );\n}\n\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromNumber = fromNumber;\n\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromBits = fromBits;\n\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nfunction fromString(str, unsigned, radix) {\n if (str.length === 0) throw Error(\"empty string\");\n if (typeof unsigned === \"number\") {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n if (\n str === \"NaN\" ||\n str === \"Infinity\" ||\n str === \"+Infinity\" ||\n str === \"-Infinity\"\n )\n return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n\n var p;\n if ((p = str.indexOf(\"-\")) > 0) throw Error(\"interior hyphen\");\n else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\nLong.fromString = fromString;\n\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromValue(val, unsigned) {\n if (typeof val === \"number\") return fromNumber(val, unsigned);\n if (typeof val === \"string\") return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(\n val.low,\n val.high,\n typeof unsigned === \"boolean\" ? unsigned : val.unsigned,\n );\n}\n\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|bigint|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\nLong.fromValue = fromValue;\n\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ZERO = fromInt(0);\n\n/**\n * Signed zero.\n * @type {!Long}\n */\nLong.ZERO = ZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UZERO = fromInt(0, true);\n\n/**\n * Unsigned zero.\n * @type {!Long}\n */\nLong.UZERO = UZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ONE = fromInt(1);\n\n/**\n * Signed one.\n * @type {!Long}\n */\nLong.ONE = ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UONE = fromInt(1, true);\n\n/**\n * Unsigned one.\n * @type {!Long}\n */\nLong.UONE = UONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar NEG_ONE = fromInt(-1);\n\n/**\n * Signed negative one.\n * @type {!Long}\n */\nLong.NEG_ONE = NEG_ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_VALUE = fromBits(0xffffffff | 0, 0x7fffffff | 0, false);\n\n/**\n * Maximum signed value.\n * @type {!Long}\n */\nLong.MAX_VALUE = MAX_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_UNSIGNED_VALUE = fromBits(0xffffffff | 0, 0xffffffff | 0, true);\n\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n/**\n * Minimum signed value.\n * @type {!Long}\n */\nLong.MIN_VALUE = MIN_VALUE;\n\n/**\n * @alias Long.prototype\n * @inner\n */\nvar LongPrototype = Long.prototype;\n\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n};\n\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toNumber = function toNumber() {\n if (this.unsigned)\n return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n};\n\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nLongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n if (this.isZero()) return \"0\";\n if (this.isNegative()) {\n // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else return \"-\" + this.neg().toString(radix);\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = \"\";\n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero()) return digits + result;\n else {\n while (digits.length < 6) digits = \"0\" + digits;\n result = \"\" + digits + result;\n }\n }\n};\n\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nLongPrototype.getHighBits = function getHighBits() {\n return this.high;\n};\n\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n};\n\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nLongPrototype.getLowBits = function getLowBits() {\n return this.low;\n};\n\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n};\n\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative())\n // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n for (var bit = 31; bit > 0; bit--) if ((val & (1 << bit)) != 0) break;\n return this.high != 0 ? bit + 33 : bit + 1;\n};\n\n/**\n * Tests if this Long can be safely represented as a JavaScript number.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isSafeInteger = function isSafeInteger() {\n // 2^53-1 is the maximum safe value\n var top11Bits = this.high >> 21;\n // [0, 2^53-1]\n if (!top11Bits) return true;\n // > 2^53-1\n if (this.unsigned) return false;\n // [-2^53, -1] except -2^53\n return top11Bits === -1 && !(this.low === 0 && this.high === -0x200000);\n};\n\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n};\n\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\nLongPrototype.eqz = LongPrototype.isZero;\n\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n};\n\n/**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n};\n\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n};\n\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n};\n\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.equals = function equals(other) {\n if (!isLong(other)) other = fromValue(other);\n if (\n this.unsigned !== other.unsigned &&\n this.high >>> 31 === 1 &&\n other.high >>> 31 === 1\n )\n return false;\n return this.high === other.high && this.low === other.low;\n};\n\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.eq = LongPrototype.equals;\n\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.notEquals = function notEquals(other) {\n return !this.eq(/* validates */ other);\n};\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.neq = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ne = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThan = function lessThan(other) {\n return this.comp(/* validates */ other) < 0;\n};\n\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lt = LongPrototype.lessThan;\n\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(/* validates */ other) <= 0;\n};\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.le = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(/* validates */ other) > 0;\n};\n\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gt = LongPrototype.greaterThan;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(/* validates */ other) >= 0;\n};\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.compare = function compare(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.eq(other)) return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) return -1;\n if (!thisNeg && otherNeg) return 1;\n // At this point the sign bits are the same\n if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;\n // Both are positive if at least one is unsigned\n return other.high >>> 0 > this.high >>> 0 ||\n (other.high === this.high && other.low >>> 0 > this.low >>> 0)\n ? -1\n : 1;\n};\n\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.comp = LongPrototype.compare;\n\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nLongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n return this.not().add(ONE);\n};\n\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\nLongPrototype.neg = LongPrototype.negate;\n\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} addend Addend\n * @returns {!Long} Sum\n */\nLongPrototype.add = function add(addend) {\n if (!isLong(addend)) addend = fromValue(addend);\n\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xffff;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 + b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n};\n\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.sub = LongPrototype.subtract;\n\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero()) return this;\n if (!isLong(multiplier)) multiplier = fromValue(multiplier);\n\n // use wasm support if present\n if (wasm) {\n var low = wasm[\"mul\"](this.low, this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n\n if (this.isNegative()) {\n if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());\n else return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();\n\n // If both longs are small, use float multiplication\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xffff;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.mul = LongPrototype.multiply;\n\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n if (divisor.isZero()) throw Error(\"division by zero\");\n\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (\n !this.unsigned &&\n this.high === -0x80000000 &&\n divisor.low === -1 &&\n divisor.high === -1\n ) {\n // be consistent with non-wasm code path\n return this;\n }\n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE)) return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n if (this.isNegative()) {\n if (divisor.isNegative()) return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned) divisor = divisor.toUnsigned();\n if (divisor.gt(this)) return UZERO;\n if (divisor.gt(this.shru(1)))\n // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = this;\n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) approxRes = ONE;\n\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n return res;\n};\n\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.div = LongPrototype.divide;\n\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n\n // use wasm support if present\n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n return this.sub(this.div(divisor).mul(divisor));\n};\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.mod = LongPrototype.modulo;\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.rem = LongPrototype.modulo;\n\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nLongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n};\n\n/**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n};\n\n/**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.clz = LongPrototype.countLeadingZeros;\n\n/**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n};\n\n/**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.and = function and(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.or = function or(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.xor = function xor(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n this.low << numBits,\n (this.high << numBits) | (this.low >>> (32 - numBits)),\n this.unsigned,\n );\n else return fromBits(0, this.low << (numBits - 32), this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shl = LongPrototype.shiftLeft;\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >> numBits,\n this.unsigned,\n );\n else\n return fromBits(\n this.high >> (numBits - 32),\n this.high >= 0 ? 0 : -1,\n this.unsigned,\n );\n};\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr = LongPrototype.shiftRight;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >>> numBits,\n this.unsigned,\n );\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n};\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.low << numBits) | (this.high >>> b),\n (this.high << numBits) | (this.low >>> b),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.high << numBits) | (this.low >>> b),\n (this.low << numBits) | (this.high >>> b),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotl = LongPrototype.rotateLeft;\n\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.high << b) | (this.low >>> numBits),\n (this.low << b) | (this.high >>> numBits),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.low << b) | (this.high >>> numBits),\n (this.high << b) | (this.low >>> numBits),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotr = LongPrototype.rotateRight;\n\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nLongPrototype.toSigned = function toSigned() {\n if (!this.unsigned) return this;\n return fromBits(this.low, this.high, false);\n};\n\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nLongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned) return this;\n return fromBits(this.low, this.high, true);\n};\n\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.<number>} Byte representation\n */\nLongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n};\n\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Little endian byte representation\n */\nLongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [\n lo & 0xff,\n (lo >>> 8) & 0xff,\n (lo >>> 16) & 0xff,\n lo >>> 24,\n hi & 0xff,\n (hi >>> 8) & 0xff,\n (hi >>> 16) & 0xff,\n hi >>> 24,\n ];\n};\n\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Big endian byte representation\n */\nLongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [\n hi >>> 24,\n (hi >>> 16) & 0xff,\n (hi >>> 8) & 0xff,\n hi & 0xff,\n lo >>> 24,\n (lo >>> 16) & 0xff,\n (lo >>> 8) & 0xff,\n lo & 0xff,\n ];\n};\n\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.<number>} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le\n ? Long.fromBytesLE(bytes, unsigned)\n : Long.fromBytesBE(bytes, unsigned);\n};\n\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.<number>} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(\n bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),\n bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),\n unsigned,\n );\n};\n\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.<number>} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(\n (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],\n (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],\n unsigned,\n );\n};\n\n// Support conversion to/from BigInt where available\nif (typeof BigInt === \"function\") {\n /**\n * Returns a Long representing the given big integer.\n * @function\n * @param {number} value The big integer value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n Long.fromBigInt = function fromBigInt(value, unsigned) {\n var lowBits = Number(BigInt.asIntN(32, value));\n var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));\n return fromBits(lowBits, highBits, unsigned);\n };\n\n // Override\n Long.fromValue = function fromValueWithBigInt(value, unsigned) {\n if (typeof value === \"bigint\") return Long.fromBigInt(value, unsigned);\n return fromValue(value, unsigned);\n };\n\n /**\n * Converts the Long to its big integer representation.\n * @this {!Long}\n * @returns {bigint}\n */\n LongPrototype.toBigInt = function toBigInt() {\n var lowBigInt = BigInt(this.low >>> 0);\n var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);\n return (highBigInt << BigInt(32)) | lowBigInt;\n };\n}\n\nexport default Long;\n", "/**\n * #timestamp.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseTimestamp() {\n return { seconds: 0, nanos: 0 };\n}\nexport const Timestamp = {\n $type: \"google.protobuf.Timestamp\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.seconds !== 0) {\n writer.uint32(8).int64(message.seconds);\n }\n if (message.nanos !== 0) {\n writer.uint32(16).int32(message.nanos);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTimestamp();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.seconds = longToNumber(reader.int64());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.nanos = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : 0,\n nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.seconds !== 0) {\n obj.seconds = Math.round(message.seconds);\n }\n if (message.nanos !== 0) {\n obj.nanos = Math.round(message.nanos);\n }\n return obj;\n },\n create(base) {\n return Timestamp.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseTimestamp();\n message.seconds = object.seconds ?? 0;\n message.nanos = object.nanos ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(Timestamp.$type, Timestamp);\nfunction longToNumber(long) {\n if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) {\n throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n }\n return long.toNumber();\n}\nif (_m0.util.Long !== Long) {\n _m0.util.Long = Long;\n _m0.configure();\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime_subscriptions.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeEvent } from \"../../../events/v1alpha/realtime.js\";\nexport var RealtimeSubscriptionStatus;\n(function (RealtimeSubscriptionStatus) {\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_SUBSCRIBED\"] = 0] = \"REALTIME_SUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_UNSUBSCRIBED\"] = 1] = \"REALTIME_UNSUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(RealtimeSubscriptionStatus || (RealtimeSubscriptionStatus = {}));\nexport function realtimeSubscriptionStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"REALTIME_SUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED;\n case 1:\n case \"REALTIME_UNSUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return RealtimeSubscriptionStatus.UNRECOGNIZED;\n }\n}\nexport function realtimeSubscriptionStatusToJSON(object) {\n switch (object) {\n case RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED:\n return 0;\n case RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED:\n return 1;\n case RealtimeSubscriptionStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseRealtimeSubscriptionsEffect() {\n return { subscriptionIds: [] };\n}\nexport const RealtimeSubscriptionsEffect = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionsEffect\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.subscriptionIds) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionsEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subscriptionIds.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subscriptionIds: globalThis.Array.isArray(object?.subscriptionIds)\n ? object.subscriptionIds.map((e) => globalThis.String(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subscriptionIds?.length) {\n obj.subscriptionIds = message.subscriptionIds;\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionsEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionsEffect();\n message.subscriptionIds = object.subscriptionIds?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionsEffect.$type, RealtimeSubscriptionsEffect);\nfunction createBaseRealtimeSubscriptionEvent() {\n return { event: undefined, status: undefined };\n}\nexport const RealtimeSubscriptionEvent = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.event !== undefined) {\n RealtimeEvent.encode(message.event, writer.uint32(10).fork()).ldelim();\n }\n if (message.status !== undefined) {\n writer.uint32(16).int32(message.status);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.event = RealtimeEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.status = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n event: isSet(object.event) ? RealtimeEvent.fromJSON(object.event) : undefined,\n status: isSet(object.status) ? realtimeSubscriptionStatusFromJSON(object.status) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.event !== undefined) {\n obj.event = RealtimeEvent.toJSON(message.event);\n }\n if (message.status !== undefined) {\n obj.status = realtimeSubscriptionStatusToJSON(message.status);\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionEvent();\n message.event = (object.event !== undefined && object.event !== null)\n ? RealtimeEvent.fromPartial(object.event)\n : undefined;\n message.status = object.status ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionEvent.$type, RealtimeSubscriptionEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { map } from \"rxjs/operators\";\nimport { Empty } from \"../../../google/protobuf/empty.js\";\nimport { Struct } from \"../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../typeRegistry.js\";\nfunction createBaseRealtimeRequest() {\n return { channels: [] };\n}\nexport const RealtimeRequest = {\n $type: \"devvit.events.v1alpha.RealtimeRequest\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.channels) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channels.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channels: globalThis.Array.isArray(object?.channels) ? object.channels.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channels?.length) {\n obj.channels = message.channels;\n }\n return obj;\n },\n create(base) {\n return RealtimeRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeRequest();\n message.channels = object.channels?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeRequest.$type, RealtimeRequest);\nfunction createBaseRealtimeEvent() {\n return { channel: \"\", data: undefined };\n}\nexport const RealtimeEvent = {\n $type: \"devvit.events.v1alpha.RealtimeEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.channel !== \"\") {\n writer.uint32(10).string(message.channel);\n }\n if (message.data !== undefined) {\n Struct.encode(Struct.wrap(message.data), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channel = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channel: isSet(object.channel) ? globalThis.String(object.channel) : \"\",\n data: isObject(object.data) ? object.data : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channel !== \"\") {\n obj.channel = message.channel;\n }\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n create(base) {\n return RealtimeEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeEvent();\n message.channel = object.channel ?? \"\";\n message.data = object.data ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeEvent.$type, RealtimeEvent);\nexport const RealtimeServiceName = \"devvit.events.v1alpha.Realtime\";\nexport class RealtimeClientImpl {\n constructor(rpc, opts) {\n this.service = opts?.service || RealtimeServiceName;\n this.rpc = rpc;\n this.Subscribe = this.Subscribe.bind(this);\n this.Send = this.Send.bind(this);\n }\n Subscribe(request, metadata) {\n const data = RealtimeRequest.encode(request).finish();\n const result = this.rpc.serverStreamingRequest(this.service, \"Subscribe\", data, metadata);\n return result.pipe(map((data) => RealtimeEvent.decode(_m0.Reader.create(data))));\n }\n Send(request, metadata) {\n const data = RealtimeEvent.encode(request).finish();\n const promise = this.rpc.request(this.service, \"Send\", data, metadata);\n return promise.then((data) => Empty.decode(_m0.Reader.create(data)));\n }\n}\nexport const RealtimeDefinition = {\n name: \"Realtime\",\n fullName: \"devvit.events.v1alpha.Realtime\",\n methods: {\n subscribe: {\n name: \"Subscribe\",\n requestType: RealtimeRequest,\n requestStream: false,\n responseType: RealtimeEvent,\n responseStream: true,\n options: {},\n },\n send: {\n name: \"Send\",\n requestType: RealtimeEvent,\n requestStream: false,\n responseType: Empty,\n responseStream: false,\n options: {},\n },\n },\n};\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #empty.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseEmpty() {\n return {};\n}\nexport const Empty = {\n $type: \"google.protobuf.Empty\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseEmpty();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return Empty.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseEmpty();\n return message;\n },\n};\nmessageTypeRegistry.set(Empty.$type, Empty);\n", "/**\n * #immersive_mode.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../../typeRegistry.js\";\n/** How a Devvit app is presented. */\nexport var WebViewImmersiveMode;\n(function (WebViewImmersiveMode) {\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n /**\n * INLINE_MODE - Conventional post presentation. May appear adjacent other posts in a feed\n * or with comments.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"INLINE_MODE\"] = 1] = \"INLINE_MODE\";\n /**\n * IMMERSIVE_MODE - Large modal expanded presentation. Appears popped out from the rest of the\n * Reddit experience which is disabled.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"IMMERSIVE_MODE\"] = 2] = \"IMMERSIVE_MODE\";\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewImmersiveMode || (WebViewImmersiveMode = {}));\nexport function webViewImmersiveModeFromJSON(object) {\n switch (object) {\n case 0:\n case \"UNSPECIFIED\":\n return WebViewImmersiveMode.UNSPECIFIED;\n case 1:\n case \"INLINE_MODE\":\n return WebViewImmersiveMode.INLINE_MODE;\n case 2:\n case \"IMMERSIVE_MODE\":\n return WebViewImmersiveMode.IMMERSIVE_MODE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewImmersiveMode.UNRECOGNIZED;\n }\n}\nexport function webViewImmersiveModeToJSON(object) {\n switch (object) {\n case WebViewImmersiveMode.UNSPECIFIED:\n return 0;\n case WebViewImmersiveMode.INLINE_MODE:\n return 1;\n case WebViewImmersiveMode.IMMERSIVE_MODE:\n return 2;\n case WebViewImmersiveMode.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewImmersiveModeEffect() {\n return { immersiveMode: 0, entryUrl: undefined };\n}\nexport const WebViewImmersiveModeEffect = {\n $type: \"devvit.ui.effects.web_view.v1alpha.WebViewImmersiveModeEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.immersiveMode !== 0) {\n writer.uint32(8).int32(message.immersiveMode);\n }\n if (message.entryUrl !== undefined) {\n writer.uint32(18).string(message.entryUrl);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewImmersiveModeEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.immersiveMode = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.entryUrl = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n immersiveMode: isSet(object.immersiveMode) ? webViewImmersiveModeFromJSON(object.immersiveMode) : 0,\n entryUrl: isSet(object.entryUrl) ? globalThis.String(object.entryUrl) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.immersiveMode !== 0) {\n obj.immersiveMode = webViewImmersiveModeToJSON(message.immersiveMode);\n }\n if (message.entryUrl !== undefined) {\n obj.entryUrl = message.entryUrl;\n }\n return obj;\n },\n create(base) {\n return WebViewImmersiveModeEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewImmersiveModeEffect();\n message.immersiveMode = object.immersiveMode ?? 0;\n message.entryUrl = object.entryUrl ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewImmersiveModeEffect.$type, WebViewImmersiveModeEffect);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "import { EffectType, } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewInternalMessageScope, } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/post_message.js';\nimport { WebViewInternalEventMessage, WebViewMessageEvent_MessageData, } from '@devvit/protos/types/devvit/ui/events/v1alpha/web_view.js'; // to-do: use /json/ not /types/.\nconst EFFECTS_WITH_RESPONSE = [\n EffectType.EFFECT_SHOW_FORM,\n EffectType.EFFECT_CAN_RUN_AS_USER,\n];\n/**\n * Emits an effect to the parent window and handles the response if required.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message for effects that require\n * a response, or resolves immediately with undefined for effects that don't\n *\n * @description\n * This function handles two types of effects:\n * 1. Effects that require a response: Creates a unique ID, sets up a message listener,\n * and resolves the promise when a matching response is received\n * 2. Effects that don't require a response: Posts the message and resolves immediately\n */\nexport const emitEffect = (effect) => {\n return new Promise((resolve) => {\n const message = {\n scope: WebViewInternalMessageScope.CLIENT,\n type: 'devvit-internal',\n };\n if (effect.realtimeSubscriptions) {\n message.realtimeEffect = effect.realtimeSubscriptions;\n }\n else if (effect.immersiveMode) {\n message.immersiveMode = effect.immersiveMode;\n }\n else if (effect.share) {\n message.share = effect.share;\n }\n else if (effect.showToast) {\n message.showToast = effect.showToast;\n }\n else if (effect.navigateToUrl) {\n message.navigateToUrl = effect.navigateToUrl;\n }\n else if (effect.showForm) {\n message.showForm = effect.showForm;\n }\n // For temporary backward compatibility, we set both `message.effect_type` above, its types counterpart, below\n // Once mobile clients are updated to consume the strongly typed properties above, and apps, we can remove this block\n // *Do not* add new effects here, use the strongly typed properties above\n if (effect.showToast ||\n effect.navigateToUrl ||\n effect.showForm ||\n effect.type === EffectType.EFFECT_CAN_RUN_AS_USER) {\n message.effect = effect;\n }\n // Only set message id and add a listener for effects which require a response\n if (EFFECTS_WITH_RESPONSE.includes(effect.type)) {\n const id = self.crypto.randomUUID();\n message.id = id;\n const handleEffect = (event) => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n const serializedMessage = WebViewInternalEventMessage.fromJSON(event.data.data);\n resolve(serializedMessage);\n window.removeEventListener('message', handleEffect);\n }\n };\n window.addEventListener('message', handleEffect);\n // Post message to the parent window, handled by client web view component\n window.parent.postMessage(message, '*');\n }\n else {\n window.parent.postMessage(message, '*');\n // Resolve immediately for effects that don't expect a response.\n resolve(undefined);\n }\n });\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * Navigates to a URL, subreddit, post, comment, or user.\n *\n * @param thingOrUrl - The URL, subreddit, post, comment, or user to navigate to\n */\nexport function navigateTo(thingOrUrl: string | { readonly url: string }): void {\n const inputUrl = typeof thingOrUrl === 'string' ? thingOrUrl : thingOrUrl.url;\n if (!URL.canParse(inputUrl)) {\n throw new TypeError(`Invalid URL: ${inputUrl}`);\n }\n const normalizedUrl = new URL(inputUrl).toString();\n void emitEffect({\n navigateToUrl: {\n url: normalizedUrl,\n },\n type: 5 satisfies EffectType.EFFECT_NAVIGATE_TO_URL,\n });\n}\n", "/**\n * #app_permission.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** This enum is used to represent the consent status of an app permission. */\nexport var ConsentStatus;\n(function (ConsentStatus) {\n /** CONSENT_STATUS_UNKNOWN - The consent status is unknown, which means it has not been set or is not applicable. */\n ConsentStatus[ConsentStatus[\"CONSENT_STATUS_UNKNOWN\"] = 0] = \"CONSENT_STATUS_UNKNOWN\";\n /** REVOKED - The user has explicitly denied consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"REVOKED\"] = 1] = \"REVOKED\";\n /** GRANTED - The user has granted consent for the app permissions. */\n ConsentStatus[ConsentStatus[\"GRANTED\"] = 2] = \"GRANTED\";\n ConsentStatus[ConsentStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ConsentStatus || (ConsentStatus = {}));\n/** This enum is used to represent the scopes of permissions that can be granted to an app. */\nexport var Scope;\n(function (Scope) {\n /** SCOPE_UNKNOWN - The scope is unknown, which means it has not been set or is not applicable. */\n Scope[Scope[\"SCOPE_UNKNOWN\"] = 0] = \"SCOPE_UNKNOWN\";\n /** SUBMIT_POST - Allows the app to submit posts on behalf of the user. */\n Scope[Scope[\"SUBMIT_POST\"] = 1] = \"SUBMIT_POST\";\n /** SUBMIT_COMMENT - Allows the app to submit comments on behalf of the user. */\n Scope[Scope[\"SUBMIT_COMMENT\"] = 2] = \"SUBMIT_COMMENT\";\n /** SUBSCRIBE_TO_SUBREDDIT - Allows the app to subscribe the user to a subreddit. */\n Scope[Scope[\"SUBSCRIBE_TO_SUBREDDIT\"] = 3] = \"SUBSCRIBE_TO_SUBREDDIT\";\n Scope[Scope[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Scope || (Scope = {}));\n", "import { ConsentStatus } from '@devvit/protos/json/reddit/devvit/app_permission/v1/app_permission.js';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * This method is used to check if the app has been granted all the requested scopes.\n *\n * @experimental\n * @returns true if the app has been granted all the requested scopes, false otherwise.\n */\nexport const canRunAsUser = async (): Promise<boolean> => {\n const appPermissionState = devvit.appPermissionState;\n\n if (!appPermissionState) {\n // Note: The app permission state will be missing when the app runs on clients that haven't implemented this feature yet.\n // \"true\" is the correct value for the time being, until we have all clients supporting this feature.\n return true;\n }\n\n if (appPermissionState.requestedScopes.length === 0) {\n // the app does not have permission to do anything as the user\n return false;\n }\n\n switch (appPermissionState.consentStatus) {\n case ConsentStatus.REVOKED:\n return false;\n case ConsentStatus.GRANTED:\n // If the app has been granted all the requested scopes, return true\n if (\n appPermissionState.requestedScopes.every((scope) =>\n appPermissionState.grantedScopes.includes(scope)\n )\n ) {\n return true;\n }\n // Otherwise, the sets of scopes do not overlap we emit the effect to request the scopes; continue\n break;\n case ConsentStatus.CONSENT_STATUS_UNKNOWN:\n case ConsentStatus.UNRECOGNIZED:\n // We don't know the status, so we'll have to ask.\n break;\n default: {\n appPermissionState.consentStatus satisfies never;\n break;\n }\n }\n\n const response = await emitEffect({\n canRunAsUser: {\n postId: devvit.context.postId,\n appSlug: devvit.context.appName,\n subredditId: devvit.context.subredditId,\n },\n type: 11 satisfies EffectType.EFFECT_CAN_RUN_AS_USER,\n });\n\n return response?.consentStatus?.consentStatus === ConsentStatus.GRANTED;\n};\n", "// to-do: move to service + CLI package.\n// Do not use in @devvit/public-api. Protos not in externalized @devvit/protos\n// barrel.\nexport const ACTOR_SRC_DIR = 'src';\nexport const ACTOR_SRC_PRIMARY_NAME = 'main';\n/** payments stuff. */\nexport const PRODUCTS_JSON_FILE = 'products.json';\n/**\n * The hashing algorithm used - pass this to `createHash`\n */\nexport const ASSET_HASHING_ALGO = 'sha256';\n/**\n * The max number of subscribers allowed in a test subreddit (ie where a user can install an uploaded, private app\n * Determines if a PRIVATE (unpublished) version of an app can be installed or playtested\n *\n * TODO: turn this off before we go live - see DX-1336\n * */\nexport const MAX_ALLOWED_SUBSCRIBER_COUNT = 200;\n/**\n * How many assets to upload at once. Sending too many at once can cause the\n * server to become overwhelmed and start erroring clients out.\n * @type {number}\n */\nexport const ASSET_UPLOAD_BATCH_SIZE = 10;\nexport const REDDIT_OAUTH_COPY_PASTE_CLIENT_ID = 'TWTsqXa53CexlrYGBWaesQ';\n/** All server endpoints must start with this prefix. */\nexport const apiPathPrefix = '/api/';\n/** All unexposed APIs must start with this prefix. */\nexport const internalPathPrefix = '/internal/';\n/** When an app's icon is present in the media assets list, it'll be with this special name. */\nexport const ICON_FILE_PATH = '$devvit_icon.png'; // Uses special characters intentionally to avoid conflicts with real asset paths\nexport const REDDIT_DISCORD_INVITE_URL = 'https://discord.gg/Cd43ExtEFS';\nexport const REDDIT_SUBREDDIT_URL = 'https://www.reddit.com/r/devvit';\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport { maxShareParamUserDataChars } from '@devvit/shared-types/client/share.js';\nimport { ICON_FILE_PATH } from '@devvit/shared-types/constants.js';\n\nexport type ShareSheetOpts = {\n /** Data to share. Must be 1024 characters or less. */\n data?: string | undefined;\n /** Title of share sheet. */\n title?: string | undefined;\n /** Body text of share sheet. */\n text?: string | undefined;\n};\n\n// to-do: unit test.\n// to-do: move to web view scripts.\n/** Show the native share sheet or copy to clipboard depending on device. */\nexport async function showShareSheet(opts: Readonly<ShareSheetOpts>): Promise<void> {\n if (opts.data && opts.data.length > maxShareParamUserDataChars)\n throw Error(\n `data must be <= ${maxShareParamUserDataChars} characters but was ${opts.data.length} characters`\n );\n\n const iconURL = `${new URL(ICON_FILE_PATH, location.origin)}`;\n let iconRsp;\n try {\n iconRsp = await fetch(iconURL, { method: 'HEAD' });\n } catch {\n //\n }\n\n await emitEffect({\n type: 9 satisfies EffectType.EFFECT_WEB_VIEW,\n share: {\n appIconUri: iconRsp?.ok ? iconURL : undefined,\n userData: opts.data,\n text: opts.text,\n title: opts.title,\n },\n });\n}\n\nexport function getShareData(): string | undefined {\n return devvit.share?.userData;\n}\n", "import type { FormField, SettingScope } from './form-types.js';\n\n/**\n * Make sure that the form fields have unique names.\n *\n * This is a carbon copy of the assertValidFormFields function in the public-api package\n * We copy it here so that @devvit/client does not need to depend on public-api\n * Any changes to this function should be reflected in the public-api version\n */\nexport function assertValidFormFields(\n fields: readonly FormField[],\n seenNames: Set<string> = new Set()\n): void {\n for (const field of fields) {\n if (field.type === 'group') {\n assertValidFormFields(field.fields, seenNames);\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldName = (field as any).name as string;\n\n if (seenNames.has(fieldName)) {\n throw new Error(`Duplicate field name: ${fieldName}`);\n }\n\n seenNames.add(fieldName);\n }\n assertAppSecretsOnly(fields);\n}\n\nexport function assertAppSecretsOnly(fields: readonly FormField[]): void {\n for (const field of fields) {\n if (field.type === 'string' && field.isSecret && field.scope !== ('app' as SettingScope.App)) {\n throw `Invalid setting: only app settings can be secrets. Add \"scope: SettingScope.App\" to field \"${field.name}\"`;\n }\n }\n}\n", "import type { FormFieldType, FormFieldValue } from '@devvit/protos';\n\nimport type { FormValues } from './form-types.js';\n\nfunction flattenFormFieldValue(\n value: FormFieldValue\n): undefined | string | string[] | number | boolean {\n switch (value.fieldType) {\n case 0 satisfies FormFieldType.STRING:\n return value.stringValue;\n case 7 satisfies FormFieldType.IMAGE:\n // the string value is the URL\n return value.stringValue;\n case 1 satisfies FormFieldType.PARAGRAPH:\n return value.stringValue;\n case 2 satisfies FormFieldType.NUMBER:\n return value.numberValue;\n case 3 satisfies FormFieldType.BOOLEAN:\n return value.boolValue;\n case 5 satisfies FormFieldType.SELECTION:\n return value.selectionValue?.values ?? [];\n default:\n return undefined;\n }\n}\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function getFormValues(results: { [key: string]: FormFieldValue }): FormValues {\n return Object.keys(results).reduce((acc, key) => {\n const val = flattenFormFieldValue(results[key]);\n if (val !== undefined) acc[key] = val;\n return acc;\n }, {} as FormValues);\n}\n", "import type { FormField as FormFieldProto, FormFieldType } from '@devvit/protos';\n\nimport type {\n BooleanField,\n FormField,\n FormFieldGroup,\n ImageField,\n NumberField,\n ParagraphField,\n SelectField,\n StringField,\n} from './form-types.js';\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function transformFormFields(fields: readonly FormField[]): FormFieldProto[] {\n return fields.map((field) => {\n switch (field.type) {\n case 'string':\n return transformStringField(field);\n case 'image':\n return transformImageField(field);\n case 'paragraph':\n return transformParagraphField(field);\n case 'number':\n return transformNumberField(field);\n case 'select':\n return transformSelectField(field);\n case 'boolean':\n return transformBooleanField(field);\n case 'group':\n return transformGroupField(field);\n default:\n throw new Error('Unknown field type.');\n }\n });\n}\n\nfunction transformStringField(field: StringField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 0 satisfies FormFieldType.STRING,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n stringConfig: {\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 0 satisfies FormFieldType.STRING,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n isSecret: field.isSecret,\n };\n}\n\nfunction transformImageField(field: ImageField): FormFieldProto {\n return {\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 7 satisfies FormFieldType.IMAGE,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformParagraphField(field: ParagraphField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n paragraphConfig: {\n lineHeight: field.lineHeight,\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformNumberField(field: NumberField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 2 satisfies FormFieldType.NUMBER,\n numberValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n numberConfig: {},\n },\n fieldId: field.name,\n fieldType: 2 satisfies FormFieldType.NUMBER,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformSelectField(field: SelectField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 5 satisfies FormFieldType.SELECTION,\n selectionValue: {\n values: field.defaultValue ?? [],\n },\n },\n disabled: field.disabled,\n fieldConfig: {\n selectionConfig: {\n choices: field.options,\n multiSelect: field.multiSelect,\n },\n },\n fieldId: field.name,\n fieldType: 5 satisfies FormFieldType.SELECTION,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformBooleanField(field: BooleanField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n boolValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n helpText: field.helpText,\n label: field.label,\n };\n}\n\nfunction transformGroupField(field: FormFieldGroup): FormFieldProto {\n return {\n fieldId: '',\n fieldType: 6 satisfies FormFieldType.GROUP,\n fieldConfig: {\n groupConfig: {\n fields: transformFormFields(field.fields),\n },\n },\n label: field.label,\n helpText: field.helpText,\n };\n}\n", "import type { Form as FormProto } from '@devvit/protos';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport type { FormKey } from '@devvit/shared-types/useForm.js';\n\nimport { assertValidFormFields } from './helpers/assert-valid-form-fields.js';\nimport type { Form, FormToFormValues } from './helpers/form-types.js';\nimport type { FormEffectResponse } from './helpers/form-types.js';\nimport { getFormValues } from './helpers/get-form-values.js';\nimport { transformFormFields } from './helpers/transform-form.js';\n\nlet _formKey = 1;\n\nconst getNextFormKey = (): FormKey => {\n _formKey++;\n return `form.${_formKey}`;\n};\n\n/**\n * Opens a form in a modal.\n * Returns a promise that resolves with the form submission results.\n * The form can be submitted or canceled by the user.\n *\n * @param formDefinition - The form configuration\n * @returns A promise that resolves to either:\n * - An object with `action: FormAction.SUBMITTED` and the submitted form values\n * - An object with `action: FormAction.CANCELED` if the user canceled the form\n * @throws Will throw if the form fields are invalid\n */\nexport const showForm = async <const T extends Form>(\n formDefinition: T\n): Promise<FormEffectResponse<FormToFormValues<T>>> => {\n const form: FormProto = {\n fields: [],\n id: getNextFormKey(),\n title: formDefinition.title,\n acceptLabel: formDefinition.acceptLabel,\n cancelLabel: formDefinition.cancelLabel,\n shortDescription: formDefinition.description,\n };\n\n assertValidFormFields(formDefinition.fields);\n form.fields = transformFormFields(formDefinition.fields);\n\n const response = await emitEffect({\n showForm: {\n form,\n },\n type: 3 satisfies EffectType.EFFECT_SHOW_FORM,\n });\n\n if (!response || !response.formSubmitted) {\n return {\n action: 'CANCELED',\n };\n }\n\n const formResults = getFormValues(response.formSubmitted.results);\n\n return {\n action: 'SUBMITTED',\n values: formResults as FormToFormValues<T>,\n };\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n Toast as ToastProto,\n ToastAppearance,\n} from '@devvit/protos/types/devvit/ui/toast/toast.js';\nimport type { Toast } from '@devvit/shared';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\n\n/**\n * Shows a toast message.\n *\n * @param textOrToast - The text or toast object to display\n */\nexport function showToast(text: string): void;\nexport function showToast(toast: Toast): void;\nexport function showToast(textOrToast: string | Toast): void {\n let toast: ToastProto;\n\n if (textOrToast instanceof Object) {\n toast = {\n text: textOrToast.text,\n appearance:\n textOrToast.appearance === 'success'\n ? (1 satisfies ToastAppearance.SUCCESS)\n : (0 satisfies ToastAppearance.NEUTRAL),\n };\n } else {\n toast = {\n text: textOrToast,\n };\n }\n\n void emitEffect({\n showToast: {\n toast,\n },\n type: 4 satisfies EffectType.EFFECT_SHOW_TOAST,\n });\n}\n", "/**\n * #immersive_mode.ts\n *\n * Code generated by ts-proto. DO NOT EDIT.\n * @packageDocumentation\n */\n/* eslint-disable */\n/** How a Devvit app is presented. */\nexport var WebViewImmersiveMode;\n(function (WebViewImmersiveMode) {\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n /**\n * INLINE_MODE - Conventional post presentation. May appear adjacent other posts in a feed\n * or with comments.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"INLINE_MODE\"] = 1] = \"INLINE_MODE\";\n /**\n * IMMERSIVE_MODE - Large modal expanded presentation. Appears popped out from the rest of the\n * Reddit experience which is disabled.\n */\n WebViewImmersiveMode[WebViewImmersiveMode[\"IMMERSIVE_MODE\"] = 2] = \"IMMERSIVE_MODE\";\n WebViewImmersiveMode[WebViewImmersiveMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewImmersiveMode || (WebViewImmersiveMode = {}));\n", "export const noWebbitToken = `0.0.0`;\n/**\n * `RequestContext` token query parameter name on `DevvitPost.entrypointUrl`.\n */\nexport const tokenParam = 'token';\n", "import type { EffectType } from '@devvit/protos/json/devvit/ui/effects/v1alpha/effect.js';\nimport { WebViewImmersiveMode } from '@devvit/protos/json/devvit/ui/effects/web_view/v1alpha/immersive_mode.js';\nimport type { WebViewMessageEvent_MessageData } from '@devvit/protos/json/devvit/ui/events/v1alpha/web_view.js';\nimport { emitEffect } from '@devvit/shared-types/client/emit-effect.js';\nimport { tokenParam } from '@devvit/shared-types/webbit.js';\n\n/**\n * The presentation mode of the web view.\n * 'inline' The web view is displayed inline within a feed or post detail page\n * 'expanded' The web view is displayed in a larger modal presentation\n * @experimental\n */\nexport type WebViewMode = 'inline' | 'expanded';\n\n/**\n * A listener that is called when the web view mode changes.\n * @param mode The new mode, either 'inline' or 'expanded'.\n * @experimental\n */\nexport type WebViewModeListener = (mode: WebViewMode) => void;\n\nconst modeListeners = new Set<WebViewModeListener>();\n\n/**\n * Represents the current web view mode state for the application.\n *\n * @experimental\n */\nexport const getWebViewMode = (): WebViewMode => webViewMode(devvit.webViewMode);\n\n/**\n * Requests expanded mode for the web view.\n * This will display the web view in a larger modal presentation.\n *\n * @param event The gesture that triggered the request, must be a trusted event.\n * @param entry The destination URI name. Eg, `'splash'` or `'default'`. Entry\n * names are the `devvit.json` `post.entrypoints` keys. Passing the\n * same entrypoint as currently loaded causes a reload.\n * @returns A promise that resolves request has been received.\n *\n * @experimental\n * @example\n * ```ts\n * button.addEventListener('click', async (event) => {\n * await requestExpandedMode(event);\n * });\n * ```\n */\nexport function requestExpandedMode(event: PointerEvent, entry: string): Promise<void> {\n return emitModeEffect(WebViewImmersiveMode.IMMERSIVE_MODE, event, entry);\n}\n\n/**\n * Exits expanded mode for the web view.\n * This will display the web view in an inline presentation.\n *\n * @param event The event that triggered the request, must be a trusted event.\n * @returns A promise that resolves request has been received.\n *\n * @experimental\n * @example\n * ```ts\n * button.addEventListener('click', async (event) => {\n * await exitExpandedMode(event);\n * });\n * ```\n */\nexport function exitExpandedMode(event: PointerEvent): Promise<void> {\n return emitModeEffect(WebViewImmersiveMode.INLINE_MODE, event, undefined);\n}\n\n/**\n * Adds a listener that is called when the web view mode changes.\n * The listener will be called with the new mode, either 'inline' or 'expanded'.\n *\n * @param callback The callback to be called when the mode changes.\n * @experimental\n */\nexport function addWebViewModeListener(callback: WebViewModeListener): void {\n modeListeners.add(callback);\n}\n\n/**\n * Removes a listener that was previously added with `addWebViewModeListener`.\n *\n * @param callback The callback to be removed.\n * @experimental\n */\nexport function removeWebViewModeListener(callback: WebViewModeListener): void {\n modeListeners.delete(callback);\n}\n\nasync function emitModeEffect(\n mode: WebViewImmersiveMode,\n event: PointerEvent,\n entry: string | undefined\n): Promise<void> {\n if (!event.isTrusted || event.type !== 'click') {\n console.error('Expanded mode effect ignored due to untrusted event');\n throw new Error('Untrusted event');\n }\n\n if (entry != null && !devvit.entrypoints[entry])\n throw Error(\n `no entrypoint named \"${entry}\"; all entrypoints must appear in \\`devvit.json\\` \\`post.entrypoints\\``\n );\n\n let entryUrl;\n if (entry) {\n // Only `DevvitPost.entrypointUrl` has a token.\n const url = new URL(devvit.entrypoints[entry]);\n url.searchParams.set(tokenParam, devvit.token);\n entryUrl = `${url}`;\n }\n\n const type = 9 satisfies EffectType.EFFECT_WEB_VIEW;\n await emitEffect({\n type,\n immersiveMode: { entryUrl, immersiveMode: mode },\n });\n}\n\n/**\n * @internal\n * Handles incoming messages from the client, like when the user closes the immersive modal\n */\nexport function registerListener() {\n addEventListener('message', (event: MessageEvent<WebViewMessageEvent_MessageData>) => {\n const { type, data } = event.data;\n\n if (type !== 'devvit-message') {\n return;\n }\n if (!data?.immersiveModeEvent) {\n return;\n }\n\n devvit.webViewMode = data.immersiveModeEvent.immersiveMode;\n\n const webViewModeString = webViewMode(data.immersiveModeEvent.immersiveMode);\n modeListeners.forEach((listener) => listener(webViewModeString));\n });\n}\n\nfunction webViewMode(mode: WebViewImmersiveMode | undefined): WebViewMode {\n switch (mode) {\n case WebViewImmersiveMode.IMMERSIVE_MODE:\n return 'expanded';\n case WebViewImmersiveMode.INLINE_MODE:\n case WebViewImmersiveMode.UNRECOGNIZED:\n case WebViewImmersiveMode.UNSPECIFIED:\n case undefined:\n return 'inline';\n default:\n mode satisfies never;\n throw Error(`${mode} not a WebViewImmersiveMode`);\n }\n}\n", "export * from './clientContext.js';\nexport * from './effects/navigate-to.js';\nexport * from './effects/run-as-user.js';\nexport * from './effects/share.js';\nexport * from './effects/show-form.js';\nexport * from './effects/show-toast.js';\nexport * from './effects/web-view-mode.js';\nexport type { Context } from '@devvit/shared-types/client/client-context.js';\nexport * from '@devvit/shared-types/PostData.js';\n\nimport { registerListener } from './effects/web-view-mode.js';\nregisterListener();\n"],
|
|
5
|
+
"mappings": "whBAAA,IAAAA,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GAmBjB,SAASA,GAAUC,EAAIC,EAAmB,CAKtC,QAJIC,EAAU,IAAI,MAAM,UAAU,OAAS,CAAC,EACxCC,EAAU,EACVC,EAAU,EACVC,EAAU,GACPD,EAAQ,UAAU,QACrBF,EAAOC,GAAQ,EAAI,UAAUC,GAAO,EACxC,OAAO,IAAI,QAAQ,SAAkBE,EAASC,EAAQ,CAClDL,EAAOC,CAAM,EAAI,SAAkBK,EAAmB,CAClD,GAAIH,EAEA,GADAA,EAAU,GACNG,EACAD,EAAOC,CAAG,MACT,CAGD,QAFIN,EAAS,IAAI,MAAM,UAAU,OAAS,CAAC,EACvCC,EAAS,EACNA,EAASD,EAAO,QACnBA,EAAOC,GAAQ,EAAI,UAAUA,CAAM,EACvCG,EAAQ,MAAM,KAAMJ,CAAM,CAC9B,CAER,EACA,GAAI,CACAF,EAAG,MAAMC,GAAO,KAAMC,CAAM,CAChC,OAASM,EAAK,CACNH,IACAA,EAAU,GACVE,EAAOC,CAAG,EAElB,CACJ,CAAC,CACL,ICnDA,IAAAC,GAAAC,EAAAC,IAAA,cAOA,IAAIC,GAASD,GAObC,GAAO,OAAS,SAAgBC,EAAQ,CACpC,IAAIC,EAAID,EAAO,OACf,GAAI,CAACC,EACD,MAAO,GAEX,QADIC,EAAI,EACD,EAAED,EAAI,EAAI,GAAKD,EAAO,OAAOC,CAAC,IAAM,KACvC,EAAEC,EACN,OAAO,KAAK,KAAKF,EAAO,OAAS,CAAC,EAAI,EAAIE,CAC9C,EAGA,IAAIC,GAAM,IAAI,MAAM,EAAE,EAGlBC,GAAM,IAAI,MAAM,GAAG,EAGvB,IAASC,EAAI,EAAGA,EAAI,IAChBD,GAAID,GAAIE,CAAC,EAAIA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAKA,EAAI,EAAIA,EAAI,GAAK,EAAE,EAAIA,IAD5E,IAAAA,EAUTN,GAAO,OAAS,SAAgBO,EAAQC,EAAOC,EAAK,CAMhD,QALIC,EAAQ,KACRC,EAAQ,CAAC,EACTL,EAAI,EACJM,EAAI,EACJC,EACGL,EAAQC,GAAK,CAChB,IAAIK,EAAIP,EAAOC,GAAO,EACtB,OAAQI,EAAG,CACP,IAAK,GACDD,EAAML,GAAG,EAAIF,GAAIU,GAAK,CAAC,EACvBD,GAAKC,EAAI,IAAM,EACfF,EAAI,EACJ,MACJ,IAAK,GACDD,EAAML,GAAG,EAAIF,GAAIS,EAAIC,GAAK,CAAC,EAC3BD,GAAKC,EAAI,KAAO,EAChBF,EAAI,EACJ,MACJ,IAAK,GACDD,EAAML,GAAG,EAAIF,GAAIS,EAAIC,GAAK,CAAC,EAC3BH,EAAML,GAAG,EAAIF,GAAIU,EAAI,EAAE,EACvBF,EAAI,EACJ,KACR,CACIN,EAAI,QACHI,IAAUA,EAAQ,CAAC,IAAI,KAAK,OAAO,aAAa,MAAM,OAAQC,CAAK,CAAC,EACrEL,EAAI,EAEZ,CAOA,OANIM,IACAD,EAAML,GAAG,EAAIF,GAAIS,CAAC,EAClBF,EAAML,GAAG,EAAI,GACTM,IAAM,IACND,EAAML,GAAG,EAAI,KAEjBI,GACIJ,GACAI,EAAM,KAAK,OAAO,aAAa,MAAM,OAAQC,EAAM,MAAM,EAAGL,CAAC,CAAC,CAAC,EAC5DI,EAAM,KAAK,EAAE,GAEjB,OAAO,aAAa,MAAM,OAAQC,EAAM,MAAM,EAAGL,CAAC,CAAC,CAC9D,EAEA,IAAIS,GAAkB,mBAUtBf,GAAO,OAAS,SAAgBC,EAAQM,EAAQS,EAAQ,CAIpD,QAHIR,EAAQQ,EACRJ,EAAI,EACJC,EACKP,EAAI,EAAGA,EAAIL,EAAO,QAAS,CAChC,IAAIgB,EAAIhB,EAAO,WAAWK,GAAG,EAC7B,GAAIW,IAAM,IAAML,EAAI,EAChB,MACJ,IAAKK,EAAIZ,GAAIY,CAAC,KAAO,OACjB,MAAM,MAAMF,EAAe,EAC/B,OAAQH,EAAG,CACP,IAAK,GACDC,EAAII,EACJL,EAAI,EACJ,MACJ,IAAK,GACDL,EAAOS,GAAQ,EAAIH,GAAK,GAAKI,EAAI,KAAO,EACxCJ,EAAII,EACJL,EAAI,EACJ,MACJ,IAAK,GACDL,EAAOS,GAAQ,GAAKH,EAAI,KAAO,GAAKI,EAAI,KAAO,EAC/CJ,EAAII,EACJL,EAAI,EACJ,MACJ,IAAK,GACDL,EAAOS,GAAQ,GAAKH,EAAI,IAAM,EAAII,EAClCL,EAAI,EACJ,KACR,CACJ,CACA,GAAIA,IAAM,EACN,MAAM,MAAMG,EAAe,EAC/B,OAAOC,EAASR,CACpB,EAOAR,GAAO,KAAO,SAAcC,EAAQ,CAChC,MAAO,mEAAmE,KAAKA,CAAM,CACzF,IC1IA,IAAAiB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GAQjB,SAASA,IAAe,CAOpB,KAAK,WAAa,CAAC,CACvB,CASAA,GAAa,UAAU,GAAK,SAAYC,EAAKC,EAAIC,EAAK,CAClD,OAAC,KAAK,WAAWF,CAAG,IAAM,KAAK,WAAWA,CAAG,EAAI,CAAC,IAAI,KAAK,CACvD,GAAMC,EACN,IAAMC,GAAO,IACjB,CAAC,EACM,IACX,EAQAH,GAAa,UAAU,IAAM,SAAaC,EAAKC,EAAI,CAC/C,GAAID,IAAQ,OACR,KAAK,WAAa,CAAC,UAEfC,IAAO,OACP,KAAK,WAAWD,CAAG,EAAI,CAAC,MAGxB,SADIG,EAAY,KAAK,WAAWH,CAAG,EAC1B,EAAI,EAAG,EAAIG,EAAU,QACtBA,EAAU,CAAC,EAAE,KAAOF,EACpBE,EAAU,OAAO,EAAG,CAAC,EAErB,EAAE,EAGlB,OAAO,IACX,EAQAJ,GAAa,UAAU,KAAO,SAAcC,EAAK,CAC7C,IAAIG,EAAY,KAAK,WAAWH,CAAG,EACnC,GAAIG,EAAW,CAGX,QAFIC,EAAO,CAAC,EACR,EAAI,EACD,EAAI,UAAU,QACjBA,EAAK,KAAK,UAAU,GAAG,CAAC,EAC5B,IAAK,EAAI,EAAG,EAAID,EAAU,QACtBA,EAAU,CAAC,EAAE,GAAG,MAAMA,EAAU,GAAG,EAAE,IAAKC,CAAI,CACtD,CACA,OAAO,IACX,IC3EA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEAA,GAAO,QAAUC,GAAQA,EAAO,EAqFhC,SAASA,GAAQF,EAAS,CAGtB,OAAI,OAAO,aAAiB,KAAc,UAAW,CAEjD,IAAIG,EAAM,IAAI,aAAa,CAAE,EAAG,CAAC,EAC7BC,EAAM,IAAI,WAAWD,EAAI,MAAM,EAC/BE,EAAMD,EAAI,CAAC,IAAM,IAErB,SAASE,EAAmBC,EAAKC,EAAKC,EAAK,CACvCN,EAAI,CAAC,EAAII,EACTC,EAAIC,CAAO,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,CACxB,CAEA,SAASM,EAAmBH,EAAKC,EAAKC,EAAK,CACvCN,EAAI,CAAC,EAAII,EACTC,EAAIC,CAAO,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,CACxB,CAGAJ,EAAQ,aAAeK,EAAKC,EAAqBI,EAEjDV,EAAQ,aAAeK,EAAKK,EAAqBJ,EAEjD,SAASK,EAAkBH,EAAKC,EAAK,CACjC,OAAAL,EAAI,CAAC,EAAII,EAAIC,CAAO,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACbN,EAAI,CAAC,CAChB,CAEA,SAASS,EAAkBJ,EAAKC,EAAK,CACjC,OAAAL,EAAI,CAAC,EAAII,EAAIC,CAAO,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACbN,EAAI,CAAC,CAChB,CAGAH,EAAQ,YAAcK,EAAKM,EAAoBC,EAE/CZ,EAAQ,YAAcK,EAAKO,EAAoBD,CAGnD,GAAG,GAAS,UAAW,CAEnB,SAASE,EAAmBC,EAAWP,EAAKC,EAAKC,EAAK,CAClD,IAAIM,EAAOR,EAAM,EAAI,EAAI,EAGzB,GAFIQ,IACAR,EAAM,CAACA,GACPA,IAAQ,EACRO,EAAU,EAAIP,EAAM,EAAmB,EAAqB,WAAYC,EAAKC,CAAG,UAC3E,MAAMF,CAAG,EACdO,EAAU,WAAYN,EAAKC,CAAG,UACzBF,EAAM,qBACXO,GAAWC,GAAQ,GAAK,cAAgB,EAAGP,EAAKC,CAAG,UAC9CF,EAAM,sBACXO,GAAWC,GAAQ,GAAK,KAAK,MAAMR,EAAM,oBAAqB,KAAO,EAAGC,EAAKC,CAAG,MAC/E,CACD,IAAIO,EAAW,KAAK,MAAM,KAAK,IAAIT,CAAG,EAAI,KAAK,GAAG,EAC9CU,EAAW,KAAK,MAAMV,EAAM,KAAK,IAAI,EAAG,CAACS,CAAQ,EAAI,OAAO,EAAI,QACpEF,GAAWC,GAAQ,GAAKC,EAAW,KAAO,GAAKC,KAAc,EAAGT,EAAKC,CAAG,CAC5E,CACJ,CAEAT,EAAQ,aAAea,EAAmB,KAAK,KAAMK,EAAW,EAChElB,EAAQ,aAAea,EAAmB,KAAK,KAAMM,EAAW,EAEhE,SAASC,EAAkBC,EAAUb,EAAKC,EAAK,CAC3C,IAAIa,EAAOD,EAASb,EAAKC,CAAG,EACxBM,GAAQO,GAAQ,IAAM,EAAI,EAC1BN,EAAWM,IAAS,GAAK,IACzBL,EAAWK,EAAO,QACtB,OAAON,IAAa,IACdC,EACA,IACAF,EAAO,MACPC,IAAa,EACbD,EAAO,qBAAwBE,EAC/BF,EAAO,KAAK,IAAI,EAAGC,EAAW,GAAG,GAAKC,EAAW,QAC3D,CAEAjB,EAAQ,YAAcoB,EAAkB,KAAK,KAAMG,EAAU,EAC7DvB,EAAQ,YAAcoB,EAAkB,KAAK,KAAMI,EAAU,CAEjE,GAAG,EAGC,OAAO,aAAiB,KAAc,UAAW,CAEjD,IAAIC,EAAM,IAAI,aAAa,CAAC,EAAE,CAAC,EAC3BrB,EAAM,IAAI,WAAWqB,EAAI,MAAM,EAC/BpB,EAAMD,EAAI,CAAC,IAAM,IAErB,SAASsB,EAAoBnB,EAAKC,EAAKC,EAAK,CACxCgB,EAAI,CAAC,EAAIlB,EACTC,EAAIC,CAAO,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,CACxB,CAEA,SAASuB,EAAoBpB,EAAKC,EAAKC,EAAK,CACxCgB,EAAI,CAAC,EAAIlB,EACTC,EAAIC,CAAO,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,EACpBI,EAAIC,EAAM,CAAC,EAAIL,EAAI,CAAC,CACxB,CAGAJ,EAAQ,cAAgBK,EAAKqB,EAAsBC,EAEnD3B,EAAQ,cAAgBK,EAAKsB,EAAsBD,EAEnD,SAASE,EAAmBpB,EAAKC,EAAK,CAClC,OAAAL,EAAI,CAAC,EAAII,EAAIC,CAAO,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACbgB,EAAI,CAAC,CAChB,CAEA,SAASI,EAAmBrB,EAAKC,EAAK,CAClC,OAAAL,EAAI,CAAC,EAAII,EAAIC,CAAO,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACpBL,EAAI,CAAC,EAAII,EAAIC,EAAM,CAAC,EACbgB,EAAI,CAAC,CAChB,CAGAzB,EAAQ,aAAeK,EAAKuB,EAAqBC,EAEjD7B,EAAQ,aAAeK,EAAKwB,EAAqBD,CAGrD,GAAG,GAAS,UAAW,CAEnB,SAASE,EAAoBhB,EAAWiB,EAAMC,EAAMzB,EAAKC,EAAKC,EAAK,CAC/D,IAAIM,EAAOR,EAAM,EAAI,EAAI,EAGzB,GAFIQ,IACAR,EAAM,CAACA,GACPA,IAAQ,EACRO,EAAU,EAAGN,EAAKC,EAAMsB,CAAI,EAC5BjB,EAAU,EAAIP,EAAM,EAAmB,EAAqB,WAAYC,EAAKC,EAAMuB,CAAI,UAChF,MAAMzB,CAAG,EAChBO,EAAU,EAAGN,EAAKC,EAAMsB,CAAI,EAC5BjB,EAAU,WAAYN,EAAKC,EAAMuB,CAAI,UAC9BzB,EAAM,sBACbO,EAAU,EAAGN,EAAKC,EAAMsB,CAAI,EAC5BjB,GAAWC,GAAQ,GAAK,cAAgB,EAAGP,EAAKC,EAAMuB,CAAI,MACvD,CACH,IAAIf,EACJ,GAAIV,EAAM,uBACNU,EAAWV,EAAM,OACjBO,EAAUG,IAAa,EAAGT,EAAKC,EAAMsB,CAAI,EACzCjB,GAAWC,GAAQ,GAAKE,EAAW,cAAgB,EAAGT,EAAKC,EAAMuB,CAAI,MAClE,CACH,IAAIhB,EAAW,KAAK,MAAM,KAAK,IAAIT,CAAG,EAAI,KAAK,GAAG,EAC9CS,IAAa,OACbA,EAAW,MACfC,EAAWV,EAAM,KAAK,IAAI,EAAG,CAACS,CAAQ,EACtCF,EAAUG,EAAW,mBAAqB,EAAGT,EAAKC,EAAMsB,CAAI,EAC5DjB,GAAWC,GAAQ,GAAKC,EAAW,MAAQ,GAAKC,EAAW,QAAU,WAAa,EAAGT,EAAKC,EAAMuB,CAAI,CACxG,CACJ,CACJ,CAEAhC,EAAQ,cAAgB8B,EAAoB,KAAK,KAAMZ,GAAa,EAAG,CAAC,EACxElB,EAAQ,cAAgB8B,EAAoB,KAAK,KAAMX,GAAa,EAAG,CAAC,EAExE,SAASc,EAAmBZ,EAAUU,EAAMC,EAAMxB,EAAKC,EAAK,CACxD,IAAIyB,EAAKb,EAASb,EAAKC,EAAMsB,CAAI,EAC7BI,EAAKd,EAASb,EAAKC,EAAMuB,CAAI,EAC7BjB,GAAQoB,GAAM,IAAM,EAAI,EACxBnB,EAAWmB,IAAO,GAAK,KACvBlB,EAAW,YAAckB,EAAK,SAAWD,EAC7C,OAAOlB,IAAa,KACdC,EACA,IACAF,EAAO,MACPC,IAAa,EACbD,EAAO,OAASE,EAChBF,EAAO,KAAK,IAAI,EAAGC,EAAW,IAAI,GAAKC,EAAW,iBAC5D,CAEAjB,EAAQ,aAAeiC,EAAmB,KAAK,KAAMV,GAAY,EAAG,CAAC,EACrEvB,EAAQ,aAAeiC,EAAmB,KAAK,KAAMT,GAAY,EAAG,CAAC,CAEzE,GAAG,EAEIxB,CACX,CAIA,SAASkB,GAAYX,EAAKC,EAAKC,EAAK,CAChCD,EAAIC,CAAO,EAAKF,EAAa,IAC7BC,EAAIC,EAAM,CAAC,EAAKF,IAAQ,EAAK,IAC7BC,EAAIC,EAAM,CAAC,EAAKF,IAAQ,GAAK,IAC7BC,EAAIC,EAAM,CAAC,EAAKF,IAAQ,EAC5B,CAEA,SAASY,GAAYZ,EAAKC,EAAKC,EAAK,CAChCD,EAAIC,CAAO,EAAKF,IAAQ,GACxBC,EAAIC,EAAM,CAAC,EAAKF,IAAQ,GAAK,IAC7BC,EAAIC,EAAM,CAAC,EAAKF,IAAQ,EAAK,IAC7BC,EAAIC,EAAM,CAAC,EAAKF,EAAa,GACjC,CAEA,SAASgB,GAAWf,EAAKC,EAAK,CAC1B,OAAQD,EAAIC,CAAO,EACXD,EAAIC,EAAM,CAAC,GAAK,EAChBD,EAAIC,EAAM,CAAC,GAAK,GAChBD,EAAIC,EAAM,CAAC,GAAK,MAAQ,CACpC,CAEA,SAASe,GAAWhB,EAAKC,EAAK,CAC1B,OAAQD,EAAIC,CAAO,GAAK,GAChBD,EAAIC,EAAM,CAAC,GAAK,GAChBD,EAAIC,EAAM,CAAC,GAAK,EAChBD,EAAIC,EAAM,CAAC,KAAO,CAC9B,IC9UA,IAAA2B,GAAAC,EAAA,gCACA,OAAO,QAAU,QAQjB,SAAS,QAAQ,WAAY,CACzB,GAAI,CACA,IAAI,IAAM,KAAK,QAAQ,QAAQ,IAAI,IAAI,CAAC,EAAE,UAAU,EACpD,GAAI,MAAQ,IAAI,QAAU,OAAO,KAAK,GAAG,EAAE,QACvC,OAAO,GACf,OAAS,EAAG,CAAC,CACb,OAAO,IACX,IChBA,IAAAC,GAAAC,EAAAC,IAAA,cAOA,IAAIC,GAAOD,GAOXC,GAAK,OAAS,SAAqBC,EAAQ,CAGvC,QAFIC,EAAM,EACNC,EAAI,EACC,EAAI,EAAG,EAAIF,EAAO,OAAQ,EAAE,EACjCE,EAAIF,EAAO,WAAW,CAAC,EACnBE,EAAI,IACJD,GAAO,EACFC,EAAI,KACTD,GAAO,GACDC,EAAI,SAAY,QAAWF,EAAO,WAAW,EAAI,CAAC,EAAI,SAAY,OACxE,EAAE,EACFC,GAAO,GAEPA,GAAO,EAEf,OAAOA,CACX,EASAF,GAAK,KAAO,SAAmBI,EAAQC,EAAOC,EAAK,CAC/C,IAAIJ,EAAMI,EAAMD,EAChB,GAAIH,EAAM,EACN,MAAO,GAKX,QAJIK,EAAQ,KACRC,EAAQ,CAAC,EACTC,EAAI,EACJC,EACGL,EAAQC,GACXI,EAAIN,EAAOC,GAAO,EACdK,EAAI,IACJF,EAAMC,GAAG,EAAIC,EACRA,EAAI,KAAOA,EAAI,IACpBF,EAAMC,GAAG,GAAKC,EAAI,KAAO,EAAIN,EAAOC,GAAO,EAAI,GAC1CK,EAAI,KAAOA,EAAI,KACpBA,IAAMA,EAAI,IAAM,IAAMN,EAAOC,GAAO,EAAI,KAAO,IAAMD,EAAOC,GAAO,EAAI,KAAO,EAAID,EAAOC,GAAO,EAAI,IAAM,MAC1GG,EAAMC,GAAG,EAAI,OAAUC,GAAK,IAC5BF,EAAMC,GAAG,EAAI,OAAUC,EAAI,OAE3BF,EAAMC,GAAG,GAAKC,EAAI,KAAO,IAAMN,EAAOC,GAAO,EAAI,KAAO,EAAID,EAAOC,GAAO,EAAI,GAC9EI,EAAI,QACHF,IAAUA,EAAQ,CAAC,IAAI,KAAK,OAAO,aAAa,MAAM,OAAQC,CAAK,CAAC,EACrEC,EAAI,GAGZ,OAAIF,GACIE,GACAF,EAAM,KAAK,OAAO,aAAa,MAAM,OAAQC,EAAM,MAAM,EAAGC,CAAC,CAAC,CAAC,EAC5DF,EAAM,KAAK,EAAE,GAEjB,OAAO,aAAa,MAAM,OAAQC,EAAM,MAAM,EAAGC,CAAC,CAAC,CAC9D,EASAT,GAAK,MAAQ,SAAoBC,EAAQG,EAAQO,EAAQ,CAIrD,QAHIN,EAAQM,EACRC,EACAC,EACKJ,EAAI,EAAGA,EAAIR,EAAO,OAAQ,EAAEQ,EACjCG,EAAKX,EAAO,WAAWQ,CAAC,EACpBG,EAAK,IACLR,EAAOO,GAAQ,EAAIC,EACZA,EAAK,MACZR,EAAOO,GAAQ,EAAIC,GAAM,EAAU,IACnCR,EAAOO,GAAQ,EAAIC,EAAW,GAAK,MAC3BA,EAAK,SAAY,SAAYC,EAAKZ,EAAO,WAAWQ,EAAI,CAAC,GAAK,SAAY,OAClFG,EAAK,QAAYA,EAAK,OAAW,KAAOC,EAAK,MAC7C,EAAEJ,EACFL,EAAOO,GAAQ,EAAIC,GAAM,GAAU,IACnCR,EAAOO,GAAQ,EAAIC,GAAM,GAAK,GAAK,IACnCR,EAAOO,GAAQ,EAAIC,GAAM,EAAK,GAAK,IACnCR,EAAOO,GAAQ,EAAIC,EAAW,GAAK,MAEnCR,EAAOO,GAAQ,EAAIC,GAAM,GAAU,IACnCR,EAAOO,GAAQ,EAAIC,GAAM,EAAK,GAAK,IACnCR,EAAOO,GAAQ,EAAIC,EAAW,GAAK,KAG3C,OAAOD,EAASN,CACpB,ICxGA,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GA6BjB,SAASA,GAAKC,EAAOC,EAAOC,EAAM,CAC9B,IAAIC,EAASD,GAAQ,KACjBE,EAASD,IAAS,EAClBE,EAAS,KACTC,EAASH,EACb,OAAO,SAAoBD,EAAM,CAC7B,GAAIA,EAAO,GAAKA,EAAOE,EACnB,OAAOJ,EAAME,CAAI,EACjBI,EAASJ,EAAOC,IAChBE,EAAOL,EAAMG,CAAI,EACjBG,EAAS,GAEb,IAAIC,EAAMN,EAAM,KAAKI,EAAMC,EAAQA,GAAUJ,CAAI,EACjD,OAAII,EAAS,IACTA,GAAUA,EAAS,GAAK,GACrBC,CACX,CACJ,IC/CA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,EAEjB,IAAIC,GAAO,KAUX,SAASD,EAASE,EAAIC,EAAI,CAStB,KAAK,GAAKD,IAAO,EAMjB,KAAK,GAAKC,IAAO,CACrB,CAOA,IAAIC,GAAOJ,EAAS,KAAO,IAAIA,EAAS,EAAG,CAAC,EAE5CI,GAAK,SAAW,UAAW,CAAE,MAAO,EAAG,EACvCA,GAAK,SAAWA,GAAK,SAAW,UAAW,CAAE,OAAO,IAAM,EAC1DA,GAAK,OAAS,UAAW,CAAE,MAAO,EAAG,EAOrC,IAAIC,GAAWL,EAAS,SAAW,mBAOnCA,EAAS,WAAa,SAAoBM,EAAO,CAC7C,GAAIA,IAAU,EACV,OAAOF,GACX,IAAIG,EAAOD,EAAQ,EACfC,IACAD,EAAQ,CAACA,GACb,IAAIJ,EAAKI,IAAU,EACfH,GAAMG,EAAQJ,GAAM,aAAe,EACvC,OAAIK,IACAJ,EAAK,CAACA,IAAO,EACbD,EAAK,CAACA,IAAO,EACT,EAAEA,EAAK,aACPA,EAAK,EACD,EAAEC,EAAK,aACPA,EAAK,KAGV,IAAIH,EAASE,EAAIC,CAAE,CAC9B,EAOAH,EAAS,KAAO,SAAcM,EAAO,CACjC,GAAI,OAAOA,GAAU,SACjB,OAAON,EAAS,WAAWM,CAAK,EACpC,GAAIL,GAAK,SAASK,CAAK,EAEnB,GAAIL,GAAK,KACLK,EAAQL,GAAK,KAAK,WAAWK,CAAK,MAElC,QAAON,EAAS,WAAW,SAASM,EAAO,EAAE,CAAC,EAEtD,OAAOA,EAAM,KAAOA,EAAM,KAAO,IAAIN,EAASM,EAAM,MAAQ,EAAGA,EAAM,OAAS,CAAC,EAAIF,EACvF,EAOAJ,EAAS,UAAU,SAAW,SAAkBQ,EAAU,CACtD,GAAI,CAACA,GAAY,KAAK,KAAO,GAAI,CAC7B,IAAIN,EAAK,CAAC,KAAK,GAAK,IAAM,EACtBC,EAAK,CAAC,KAAK,KAAW,EAC1B,OAAKD,IACDC,EAAKA,EAAK,IAAM,GACb,EAAED,EAAKC,EAAK,WACvB,CACA,OAAO,KAAK,GAAK,KAAK,GAAK,UAC/B,EAOAH,EAAS,UAAU,OAAS,SAAgBQ,EAAU,CAClD,OAAOP,GAAK,KACN,IAAIA,GAAK,KAAK,KAAK,GAAK,EAAG,KAAK,GAAK,EAAG,EAAQO,CAAS,EAEzD,CAAE,IAAK,KAAK,GAAK,EAAG,KAAM,KAAK,GAAK,EAAG,SAAU,EAAQA,CAAU,CAC7E,EAEA,IAAIC,GAAa,OAAO,UAAU,WAOlCT,EAAS,SAAW,SAAkBU,EAAM,CACxC,OAAIA,IAASL,GACFD,GACJ,IAAIJ,GACLS,GAAW,KAAKC,EAAM,CAAC,EACvBD,GAAW,KAAKC,EAAM,CAAC,GAAK,EAC5BD,GAAW,KAAKC,EAAM,CAAC,GAAK,GAC5BD,GAAW,KAAKC,EAAM,CAAC,GAAK,MAAQ,GAEpCD,GAAW,KAAKC,EAAM,CAAC,EACvBD,GAAW,KAAKC,EAAM,CAAC,GAAK,EAC5BD,GAAW,KAAKC,EAAM,CAAC,GAAK,GAC5BD,GAAW,KAAKC,EAAM,CAAC,GAAK,MAAQ,CAC1C,CACJ,EAMAV,EAAS,UAAU,OAAS,UAAkB,CAC1C,OAAO,OAAO,aACV,KAAK,GAAY,IACjB,KAAK,KAAO,EAAK,IACjB,KAAK,KAAO,GAAK,IACjB,KAAK,KAAO,GACZ,KAAK,GAAY,IACjB,KAAK,KAAO,EAAK,IACjB,KAAK,KAAO,GAAK,IACjB,KAAK,KAAO,EAChB,CACJ,EAMAA,EAAS,UAAU,SAAW,UAAoB,CAC9C,IAAIW,EAAS,KAAK,IAAM,GACxB,YAAK,KAAQ,KAAK,IAAM,EAAI,KAAK,KAAO,IAAMA,KAAU,EACxD,KAAK,IAAQ,KAAK,IAAM,EAAsBA,KAAU,EACjD,IACX,EAMAX,EAAS,UAAU,SAAW,UAAoB,CAC9C,IAAIW,EAAO,EAAE,KAAK,GAAK,GACvB,YAAK,KAAQ,KAAK,KAAO,EAAI,KAAK,IAAM,IAAMA,KAAU,EACxD,KAAK,IAAQ,KAAK,KAAO,EAAqBA,KAAU,EACjD,IACX,EAMAX,EAAS,UAAU,OAAS,UAAkB,CAC1C,IAAIY,EAAS,KAAK,GACdC,GAAS,KAAK,KAAO,GAAK,KAAK,IAAM,KAAO,EAC5CC,EAAS,KAAK,KAAO,GACzB,OAAOA,IAAU,EACVD,IAAU,EACRD,EAAQ,MACNA,EAAQ,IAAM,EAAI,EAClBA,EAAQ,QAAU,EAAI,EACxBC,EAAQ,MACNA,EAAQ,IAAM,EAAI,EAClBA,EAAQ,QAAU,EAAI,EAC1BC,EAAQ,IAAM,EAAI,EAC7B,ICvMA,IAAAC,GAAAC,EAAAC,IAAA,cACA,IAAIC,EAAOD,GAGXC,EAAK,UAAY,KAGjBA,EAAK,OAAS,KAGdA,EAAK,aAAe,KAGpBA,EAAK,MAAQ,KAGbA,EAAK,QAAU,KAGfA,EAAK,KAAO,KAGZA,EAAK,KAAO,KAGZA,EAAK,SAAW,KAOhBA,EAAK,OAAS,GAAQ,OAAO,OAAW,KAClB,QACA,OAAO,SACP,OAAO,QAAQ,UACf,OAAO,QAAQ,SAAS,MAO9CA,EAAK,OAASA,EAAK,QAAU,QACf,OAAO,OAAW,KAAe,QACjC,OAAO,KAAW,KAAe,MACjCD,GAQdC,EAAK,WAAa,OAAO,OAAS,OAAO,OAAO,CAAC,CAAC,EAA+B,CAAC,EAOlFA,EAAK,YAAc,OAAO,OAAS,OAAO,OAAO,CAAC,CAAC,EAA+B,CAAC,EAQnFA,EAAK,UAAY,OAAO,WAAwC,SAAmBC,EAAO,CACtF,OAAO,OAAOA,GAAU,UAAY,SAASA,CAAK,GAAK,KAAK,MAAMA,CAAK,IAAMA,CACjF,EAOAD,EAAK,SAAW,SAAkBC,EAAO,CACrC,OAAO,OAAOA,GAAU,UAAYA,aAAiB,MACzD,EAOAD,EAAK,SAAW,SAAkBC,EAAO,CACrC,OAAOA,GAAS,OAAOA,GAAU,QACrC,EAUAD,EAAK,MAQLA,EAAK,MAAQ,SAAeE,EAAKC,EAAM,CACnC,IAAIF,EAAQC,EAAIC,CAAI,EACpB,OAAIF,GAAS,MAAQC,EAAI,eAAeC,CAAI,EACjC,OAAOF,GAAU,WAAa,MAAM,QAAQA,CAAK,EAAIA,EAAM,OAAS,OAAO,KAAKA,CAAK,EAAE,QAAU,EACrG,EACX,EAaAD,EAAK,QAAU,UAAW,CACtB,GAAI,CACA,IAAII,EAASJ,EAAK,QAAQ,QAAQ,EAAE,OAEpC,OAAOI,EAAO,UAAU,UAAYA,EAAoC,IAC5E,MAAY,CAER,OAAO,IACX,CACJ,GAAG,EAGHJ,EAAK,aAAe,KAGpBA,EAAK,oBAAsB,KAO3BA,EAAK,UAAY,SAAmBK,EAAa,CAE7C,OAAO,OAAOA,GAAgB,SACxBL,EAAK,OACDA,EAAK,oBAAoBK,CAAW,EACpC,IAAIL,EAAK,MAAMK,CAAW,EAC9BL,EAAK,OACDA,EAAK,aAAaK,CAAW,EAC7B,OAAO,WAAe,IAClBA,EACA,IAAI,WAAWA,CAAW,CAC5C,EAMAL,EAAK,MAAQ,OAAO,WAAe,IAAc,WAAwC,MAezFA,EAAK,KAAkCA,EAAK,OAAO,SAAsCA,EAAK,OAAO,QAAQ,MACtEA,EAAK,OAAO,MACvCA,EAAK,QAAQ,MAAM,EAO/BA,EAAK,OAAS,mBAOdA,EAAK,QAAU,wBAOfA,EAAK,QAAU,6CAOfA,EAAK,WAAa,SAAoBC,EAAO,CACzC,OAAOA,EACDD,EAAK,SAAS,KAAKC,CAAK,EAAE,OAAO,EACjCD,EAAK,SAAS,QACxB,EAQAA,EAAK,aAAe,SAAsBM,EAAMC,EAAU,CACtD,IAAIC,EAAOR,EAAK,SAAS,SAASM,CAAI,EACtC,OAAIN,EAAK,KACEA,EAAK,KAAK,SAASQ,EAAK,GAAIA,EAAK,GAAID,CAAQ,EACjDC,EAAK,SAAS,EAAQD,CAAS,CAC1C,EAUA,SAASE,GAAMC,EAAKC,EAAKC,EAAU,CAC/B,QAASC,EAAO,OAAO,KAAKF,CAAG,EAAG,EAAI,EAAG,EAAIE,EAAK,OAAQ,EAAE,GACpDH,EAAIG,EAAK,CAAC,CAAC,IAAM,QAAa,CAACD,KAC/BF,EAAIG,EAAK,CAAC,CAAC,EAAIF,EAAIE,EAAK,CAAC,CAAC,GAClC,OAAOH,CACX,CAEAV,EAAK,MAAQS,GAObT,EAAK,QAAU,SAAiBc,EAAK,CACjC,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,UAAU,CAAC,CACxD,EAQA,SAASC,GAASC,EAAM,CAEpB,SAASC,EAAYC,EAASC,EAAY,CAEtC,GAAI,EAAE,gBAAgBF,GAClB,OAAO,IAAIA,EAAYC,EAASC,CAAU,EAK9C,OAAO,eAAe,KAAM,UAAW,CAAE,IAAK,UAAW,CAAE,OAAOD,CAAS,CAAE,CAAC,EAG1E,MAAM,kBACN,MAAM,kBAAkB,KAAMD,CAAW,EAEzC,OAAO,eAAe,KAAM,QAAS,CAAE,MAAO,IAAI,MAAM,EAAE,OAAS,EAAG,CAAC,EAEvEE,GACAV,GAAM,KAAMU,CAAU,CAC9B,CAEA,OAAAF,EAAY,UAAY,OAAO,OAAO,MAAM,UAAW,CACnD,YAAa,CACT,MAAOA,EACP,SAAU,GACV,WAAY,GACZ,aAAc,EAClB,EACA,KAAM,CACF,IAAK,UAAe,CAAE,OAAOD,CAAM,EACnC,IAAK,OACL,WAAY,GAKZ,aAAc,EAClB,EACA,SAAU,CACN,MAAO,UAAiB,CAAE,OAAO,KAAK,KAAO,KAAO,KAAK,OAAS,EAClE,SAAU,GACV,WAAY,GACZ,aAAc,EAClB,CACJ,CAAC,EAEMC,CACX,CAEAjB,EAAK,SAAWe,GAmBhBf,EAAK,cAAgBe,GAAS,eAAe,EAoB7Cf,EAAK,YAAc,SAAkBoB,EAAY,CAE7C,QADIC,EAAW,CAAC,EACPC,EAAI,EAAGA,EAAIF,EAAW,OAAQ,EAAEE,EACrCD,EAASD,EAAWE,CAAC,CAAC,EAAI,EAO9B,OAAO,UAAW,CACd,QAAST,EAAO,OAAO,KAAK,IAAI,EAAGS,EAAIT,EAAK,OAAS,EAAGS,EAAI,GAAI,EAAEA,EAC9D,GAAID,EAASR,EAAKS,CAAC,CAAC,IAAM,GAAK,KAAKT,EAAKS,CAAC,CAAC,IAAM,QAAa,KAAKT,EAAKS,CAAC,CAAC,IAAM,KAC5E,OAAOT,EAAKS,CAAC,CACzB,CACJ,EAeAtB,EAAK,YAAc,SAAkBoB,EAAY,CAQ7C,OAAO,SAASJ,EAAM,CAClB,QAASM,EAAI,EAAGA,EAAIF,EAAW,OAAQ,EAAEE,EACjCF,EAAWE,CAAC,IAAMN,GAClB,OAAO,KAAKI,EAAWE,CAAC,CAAC,CACrC,CACJ,EAkBAtB,EAAK,cAAgB,CACjB,MAAO,OACP,MAAO,OACP,MAAO,OACP,KAAM,EACV,EAGAA,EAAK,WAAa,UAAW,CACzB,IAAII,EAASJ,EAAK,OAElB,GAAI,CAACI,EAAQ,CACTJ,EAAK,aAAeA,EAAK,oBAAsB,KAC/C,MACJ,CAGAA,EAAK,aAAeI,EAAO,OAAS,WAAW,MAAQA,EAAO,MAE1D,SAAqBH,EAAOsB,EAAU,CAClC,OAAO,IAAInB,EAAOH,EAAOsB,CAAQ,CACrC,EACJvB,EAAK,oBAAsBI,EAAO,aAE9B,SAA4BoB,EAAM,CAC9B,OAAO,IAAIpB,EAAOoB,CAAI,CAC1B,CACR,ICrbA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,EAEjB,IAAIC,EAAY,KAEZC,GAEAC,GAAYF,EAAK,SACjBG,GAAYH,EAAK,OACjBI,GAAYJ,EAAK,KAWrB,SAASK,GAAGC,EAAIC,EAAKC,EAAK,CAMtB,KAAK,GAAKF,EAMV,KAAK,IAAMC,EAMX,KAAK,KAAO,OAMZ,KAAK,IAAMC,CACf,CAGA,SAASC,IAAO,CAAC,CAUjB,SAASC,GAAMC,EAAQ,CAMnB,KAAK,KAAOA,EAAO,KAMnB,KAAK,KAAOA,EAAO,KAMnB,KAAK,IAAMA,EAAO,IAMlB,KAAK,KAAOA,EAAO,MACvB,CAOA,SAASZ,GAAS,CAMd,KAAK,IAAM,EAMX,KAAK,KAAO,IAAIM,GAAGI,GAAM,EAAG,CAAC,EAM7B,KAAK,KAAO,KAAK,KAMjB,KAAK,OAAS,IAOlB,CAEA,IAAIG,GAAS,UAAkB,CAC3B,OAAOZ,EAAK,OACN,UAA+B,CAC7B,OAAQD,EAAO,OAAS,UAAyB,CAC7C,OAAO,IAAIE,EACf,GAAG,CACP,EAEE,UAAwB,CACtB,OAAO,IAAIF,CACf,CACR,EAOAA,EAAO,OAASa,GAAO,EAOvBb,EAAO,MAAQ,SAAec,EAAM,CAChC,OAAO,IAAIb,EAAK,MAAMa,CAAI,CAC9B,EAIIb,EAAK,QAAU,QACfD,EAAO,MAAQC,EAAK,KAAKD,EAAO,MAAOC,EAAK,MAAM,UAAU,QAAQ,GAUxED,EAAO,UAAU,MAAQ,SAAcO,EAAIC,EAAKC,EAAK,CACjD,YAAK,KAAO,KAAK,KAAK,KAAO,IAAIH,GAAGC,EAAIC,EAAKC,CAAG,EAChD,KAAK,KAAOD,EACL,IACX,EAEA,SAASO,GAAUN,EAAKO,EAAKC,EAAK,CAC9BD,EAAIC,CAAG,EAAIR,EAAM,GACrB,CAEA,SAASS,GAAcT,EAAKO,EAAKC,EAAK,CAClC,KAAOR,EAAM,KACTO,EAAIC,GAAK,EAAIR,EAAM,IAAM,IACzBA,KAAS,EAEbO,EAAIC,CAAG,EAAIR,CACf,CAWA,SAASU,GAASX,EAAKC,EAAK,CACxB,KAAK,IAAMD,EACX,KAAK,KAAO,OACZ,KAAK,IAAMC,CACf,CAEAU,GAAS,UAAY,OAAO,OAAOb,GAAG,SAAS,EAC/Ca,GAAS,UAAU,GAAKD,GAOxBlB,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CAGnD,YAAK,MAAQ,KAAK,KAAO,KAAK,KAAK,KAAO,IAAID,IACzCC,EAAQA,IAAU,GACT,IAAY,EACpBA,EAAQ,MAAY,EACpBA,EAAQ,QAAY,EACpBA,EAAQ,UAAY,EACA,EAC1BA,CAAK,GAAG,IACD,IACX,EAQApB,EAAO,UAAU,MAAQ,SAAqBoB,EAAO,CACjD,OAAOA,EAAQ,EACT,KAAK,MAAMC,GAAe,GAAIlB,GAAS,WAAWiB,CAAK,CAAC,EACxD,KAAK,OAAOA,CAAK,CAC3B,EAOApB,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CACnD,OAAO,KAAK,QAAQA,GAAS,EAAIA,GAAS,MAAQ,CAAC,CACvD,EAEA,SAASC,GAAcZ,EAAKO,EAAKC,EAAK,CAClC,KAAOR,EAAI,IACPO,EAAIC,GAAK,EAAIR,EAAI,GAAK,IAAM,IAC5BA,EAAI,IAAMA,EAAI,KAAO,EAAIA,EAAI,IAAM,MAAQ,EAC3CA,EAAI,MAAQ,EAEhB,KAAOA,EAAI,GAAK,KACZO,EAAIC,GAAK,EAAIR,EAAI,GAAK,IAAM,IAC5BA,EAAI,GAAKA,EAAI,KAAO,EAExBO,EAAIC,GAAK,EAAIR,EAAI,EACrB,CAQAT,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CACnD,IAAIE,EAAOnB,GAAS,KAAKiB,CAAK,EAC9B,OAAO,KAAK,MAAMC,GAAeC,EAAK,OAAO,EAAGA,CAAI,CACxD,EASAtB,EAAO,UAAU,MAAQA,EAAO,UAAU,OAQ1CA,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CACnD,IAAIE,EAAOnB,GAAS,KAAKiB,CAAK,EAAE,SAAS,EACzC,OAAO,KAAK,MAAMC,GAAeC,EAAK,OAAO,EAAGA,CAAI,CACxD,EAOAtB,EAAO,UAAU,KAAO,SAAoBoB,EAAO,CAC/C,OAAO,KAAK,MAAML,GAAW,EAAGK,EAAQ,EAAI,CAAC,CACjD,EAEA,SAASG,GAAad,EAAKO,EAAKC,EAAK,CACjCD,EAAIC,CAAO,EAAKR,EAAc,IAC9BO,EAAIC,EAAM,CAAC,EAAKR,IAAQ,EAAM,IAC9BO,EAAIC,EAAM,CAAC,EAAKR,IAAQ,GAAM,IAC9BO,EAAIC,EAAM,CAAC,EAAKR,IAAQ,EAC5B,CAOAT,EAAO,UAAU,QAAU,SAAuBoB,EAAO,CACrD,OAAO,KAAK,MAAMG,GAAc,EAAGH,IAAU,CAAC,CAClD,EAQApB,EAAO,UAAU,SAAWA,EAAO,UAAU,QAQ7CA,EAAO,UAAU,QAAU,SAAuBoB,EAAO,CACrD,IAAIE,EAAOnB,GAAS,KAAKiB,CAAK,EAC9B,OAAO,KAAK,MAAMG,GAAc,EAAGD,EAAK,EAAE,EAAE,MAAMC,GAAc,EAAGD,EAAK,EAAE,CAC9E,EASAtB,EAAO,UAAU,SAAWA,EAAO,UAAU,QAQ7CA,EAAO,UAAU,MAAQ,SAAqBoB,EAAO,CACjD,OAAO,KAAK,MAAMnB,EAAK,MAAM,aAAc,EAAGmB,CAAK,CACvD,EAQApB,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CACnD,OAAO,KAAK,MAAMnB,EAAK,MAAM,cAAe,EAAGmB,CAAK,CACxD,EAEA,IAAII,GAAavB,EAAK,MAAM,UAAU,IAChC,SAAwBQ,EAAKO,EAAKC,EAAK,CACrCD,EAAI,IAAIP,EAAKQ,CAAG,CACpB,EAEE,SAAwBR,EAAKO,EAAKC,EAAK,CACrC,QAAS,EAAI,EAAG,EAAIR,EAAI,OAAQ,EAAE,EAC9BO,EAAIC,EAAM,CAAC,EAAIR,EAAI,CAAC,CAC5B,EAOJT,EAAO,UAAU,MAAQ,SAAqBoB,EAAO,CACjD,IAAIZ,EAAMY,EAAM,SAAW,EAC3B,GAAI,CAACZ,EACD,OAAO,KAAK,MAAMO,GAAW,EAAG,CAAC,EACrC,GAAId,EAAK,SAASmB,CAAK,EAAG,CACtB,IAAIJ,EAAMhB,EAAO,MAAMQ,EAAMJ,GAAO,OAAOgB,CAAK,CAAC,EACjDhB,GAAO,OAAOgB,EAAOJ,EAAK,CAAC,EAC3BI,EAAQJ,CACZ,CACA,OAAO,KAAK,OAAOR,CAAG,EAAE,MAAMgB,GAAYhB,EAAKY,CAAK,CACxD,EAOApB,EAAO,UAAU,OAAS,SAAsBoB,EAAO,CACnD,IAAIZ,EAAMH,GAAK,OAAOe,CAAK,EAC3B,OAAOZ,EACD,KAAK,OAAOA,CAAG,EAAE,MAAMH,GAAK,MAAOG,EAAKY,CAAK,EAC7C,KAAK,MAAML,GAAW,EAAG,CAAC,CACpC,EAOAf,EAAO,UAAU,KAAO,UAAgB,CACpC,YAAK,OAAS,IAAIW,GAAM,IAAI,EAC5B,KAAK,KAAO,KAAK,KAAO,IAAIL,GAAGI,GAAM,EAAG,CAAC,EACzC,KAAK,IAAM,EACJ,IACX,EAMAV,EAAO,UAAU,MAAQ,UAAiB,CACtC,OAAI,KAAK,QACL,KAAK,KAAS,KAAK,OAAO,KAC1B,KAAK,KAAS,KAAK,OAAO,KAC1B,KAAK,IAAS,KAAK,OAAO,IAC1B,KAAK,OAAS,KAAK,OAAO,OAE1B,KAAK,KAAO,KAAK,KAAO,IAAIM,GAAGI,GAAM,EAAG,CAAC,EACzC,KAAK,IAAO,GAET,IACX,EAMAV,EAAO,UAAU,OAAS,UAAkB,CACxC,IAAIyB,EAAO,KAAK,KACZC,EAAO,KAAK,KACZlB,EAAO,KAAK,IAChB,YAAK,MAAM,EAAE,OAAOA,CAAG,EACnBA,IACA,KAAK,KAAK,KAAOiB,EAAK,KACtB,KAAK,KAAOC,EACZ,KAAK,KAAOlB,GAET,IACX,EAMAR,EAAO,UAAU,OAAS,UAAkB,CAIxC,QAHIyB,EAAO,KAAK,KAAK,KACjBT,EAAO,KAAK,YAAY,MAAM,KAAK,GAAG,EACtCC,EAAO,EACJQ,GACHA,EAAK,GAAGA,EAAK,IAAKT,EAAKC,CAAG,EAC1BA,GAAOQ,EAAK,IACZA,EAAOA,EAAK,KAGhB,OAAOT,CACX,EAEAhB,EAAO,WAAa,SAAS2B,EAAe,CACxCzB,GAAeyB,EACf3B,EAAO,OAASa,GAAO,EACvBX,GAAa,WAAW,CAC5B,IChdA,IAAA0B,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GAGjB,IAAIC,GAAS,MACZD,GAAa,UAAY,OAAO,OAAOC,GAAO,SAAS,GAAG,YAAcD,GAEzE,IAAIE,GAAO,KAQX,SAASF,IAAe,CACpBC,GAAO,KAAK,IAAI,CACpB,CAEAD,GAAa,WAAa,UAAY,CAOlCA,GAAa,MAAQE,GAAK,oBAE1BF,GAAa,iBAAmBE,GAAK,QAAUA,GAAK,OAAO,qBAAqB,YAAcA,GAAK,OAAO,UAAU,IAAI,OAAS,MAC3H,SAA8BC,EAAKC,EAAKC,EAAK,CAC7CD,EAAI,IAAID,EAAKE,CAAG,CAElB,EAEE,SAA+BF,EAAKC,EAAKC,EAAK,CAC9C,GAAIF,EAAI,KACNA,EAAI,KAAKC,EAAKC,EAAK,EAAGF,EAAI,MAAM,MAC7B,SAAS,EAAI,EAAG,EAAIA,EAAI,QAC3BC,EAAIC,GAAK,EAAIF,EAAI,GAAG,CACxB,CACR,EAMAH,GAAa,UAAU,MAAQ,SAA4BM,EAAO,CAC1DJ,GAAK,SAASI,CAAK,IACnBA,EAAQJ,GAAK,aAAaI,EAAO,QAAQ,GAC7C,IAAIC,EAAMD,EAAM,SAAW,EAC3B,YAAK,OAAOC,CAAG,EACXA,GACA,KAAK,MAAMP,GAAa,iBAAkBO,EAAKD,CAAK,EACjD,IACX,EAEA,SAASE,GAAkBL,EAAKC,EAAKC,EAAK,CAClCF,EAAI,OAAS,GACbD,GAAK,KAAK,MAAMC,EAAKC,EAAKC,CAAG,EACxBD,EAAI,UACTA,EAAI,UAAUD,EAAKE,CAAG,EAEtBD,EAAI,MAAMD,EAAKE,CAAG,CAC1B,CAKAL,GAAa,UAAU,OAAS,SAA6BM,EAAO,CAChE,IAAIC,EAAML,GAAK,OAAO,WAAWI,CAAK,EACtC,YAAK,OAAOC,CAAG,EACXA,GACA,KAAK,MAAMC,GAAmBD,EAAKD,CAAK,EACrC,IACX,EAUAN,GAAa,WAAW,ICpFxB,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,EAEjB,IAAIC,EAAY,KAEZC,GAEAC,GAAYF,EAAK,SACjBG,GAAYH,EAAK,KAGrB,SAASI,EAAgBC,EAAQC,EAAa,CAC1C,OAAO,WAAW,uBAAyBD,EAAO,IAAM,OAASC,GAAe,GAAK,MAAQD,EAAO,GAAG,CAC3G,CAQA,SAASN,EAAOQ,EAAQ,CAMpB,KAAK,IAAMA,EAMX,KAAK,IAAM,EAMX,KAAK,IAAMA,EAAO,MACtB,CAEA,IAAIC,GAAe,OAAO,WAAe,IACnC,SAA4BD,EAAQ,CAClC,GAAIA,aAAkB,YAAc,MAAM,QAAQA,CAAM,EACpD,OAAO,IAAIR,EAAOQ,CAAM,EAC5B,MAAM,MAAM,gBAAgB,CAChC,EAEE,SAAsBA,EAAQ,CAC5B,GAAI,MAAM,QAAQA,CAAM,EACpB,OAAO,IAAIR,EAAOQ,CAAM,EAC5B,MAAM,MAAM,gBAAgB,CAChC,EAEAE,GAAS,UAAkB,CAC3B,OAAOT,EAAK,OACN,SAA6BO,EAAQ,CACnC,OAAQR,EAAO,OAAS,SAAuBQ,EAAQ,CACnD,OAAOP,EAAK,OAAO,SAASO,CAAM,EAC5B,IAAIN,GAAaM,CAAM,EAEvBC,GAAaD,CAAM,CAC7B,GAAGA,CAAM,CACb,EAEEC,EACV,EASAT,EAAO,OAASU,GAAO,EAEvBV,EAAO,UAAU,OAASC,EAAK,MAAM,UAAU,UAAuCA,EAAK,MAAM,UAAU,MAO3GD,EAAO,UAAU,QAAU,UAA6B,CACpD,IAAIW,EAAQ,WACZ,OAAO,UAAuB,CAKgC,GAJ1DA,GAAkB,KAAK,IAAI,KAAK,GAAG,EAAI,OAAgB,EAAO,KAAK,IAAI,KAAK,KAAK,EAAI,MACrFA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAS,KAAO,EAAO,KAAK,IAAI,KAAK,KAAK,EAAI,OACrFA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EAAO,KAAK,IAAI,KAAK,KAAK,EAAI,OACrFA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EAAO,KAAK,IAAI,KAAK,KAAK,EAAI,OACrFA,GAASA,GAAS,KAAK,IAAI,KAAK,GAAG,EAAK,KAAO,MAAQ,EAAO,KAAK,IAAI,KAAK,KAAK,EAAI,KAAK,OAAOA,EAGjG,IAAK,KAAK,KAAO,GAAK,KAAK,IACvB,WAAK,IAAM,KAAK,IACVN,EAAgB,KAAM,EAAE,EAElC,OAAOM,CACX,CACJ,GAAG,EAMHX,EAAO,UAAU,MAAQ,UAAsB,CAC3C,OAAO,KAAK,OAAO,EAAI,CAC3B,EAMAA,EAAO,UAAU,OAAS,UAAuB,CAC7C,IAAIW,EAAQ,KAAK,OAAO,EACxB,OAAOA,IAAU,EAAI,EAAEA,EAAQ,GAAK,CACxC,EAIA,SAASC,IAAiB,CAEtB,IAAIC,EAAO,IAAIV,GAAS,EAAG,CAAC,EACxBW,EAAI,EACR,GAAI,KAAK,IAAM,KAAK,IAAM,EAAG,CACzB,KAAOA,EAAI,EAAG,EAAEA,EAGZ,GADAD,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQC,EAAI,KAAO,EAC1D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOD,EAKf,GAFAA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQ,MAAQ,EAC3DA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAS,KAAO,EACvD,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOA,EACXC,EAAI,CACR,KAAO,CACH,KAAOA,EAAI,EAAG,EAAEA,EAAG,CAEf,GAAI,KAAK,KAAO,KAAK,IACjB,MAAMT,EAAgB,IAAI,EAG9B,GADAQ,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQC,EAAI,KAAO,EAC1D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOD,CACf,CAEA,OAAAA,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,KAAK,EAAI,MAAQC,EAAI,KAAO,EACzDD,CACX,CACA,GAAI,KAAK,IAAM,KAAK,IAAM,GACtB,KAAOC,EAAI,EAAG,EAAEA,EAGZ,GADAD,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQC,EAAI,EAAI,KAAO,EAC9D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOD,MAGf,MAAOC,EAAI,EAAG,EAAEA,EAAG,CAEf,GAAI,KAAK,KAAO,KAAK,IACjB,MAAMT,EAAgB,IAAI,EAG9B,GADAQ,EAAK,IAAMA,EAAK,IAAM,KAAK,IAAI,KAAK,GAAG,EAAI,MAAQC,EAAI,EAAI,KAAO,EAC9D,KAAK,IAAI,KAAK,KAAK,EAAI,IACvB,OAAOD,CACf,CAGJ,MAAM,MAAM,yBAAyB,CACzC,CA6BAb,EAAO,UAAU,KAAO,UAAqB,CACzC,OAAO,KAAK,OAAO,IAAM,CAC7B,EAEA,SAASe,GAAgBC,EAAKC,EAAK,CAC/B,OAAQD,EAAIC,EAAM,CAAC,EACXD,EAAIC,EAAM,CAAC,GAAK,EAChBD,EAAIC,EAAM,CAAC,GAAK,GAChBD,EAAIC,EAAM,CAAC,GAAK,MAAQ,CACpC,CAMAjB,EAAO,UAAU,QAAU,UAAwB,CAG/C,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMK,EAAgB,KAAM,CAAC,EAEjC,OAAOU,GAAgB,KAAK,IAAK,KAAK,KAAO,CAAC,CAClD,EAMAf,EAAO,UAAU,SAAW,UAAyB,CAGjD,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMK,EAAgB,KAAM,CAAC,EAEjC,OAAOU,GAAgB,KAAK,IAAK,KAAK,KAAO,CAAC,EAAI,CACtD,EAIA,SAASG,IAAgC,CAGrC,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMb,EAAgB,KAAM,CAAC,EAEjC,OAAO,IAAIF,GAASY,GAAgB,KAAK,IAAK,KAAK,KAAO,CAAC,EAAGA,GAAgB,KAAK,IAAK,KAAK,KAAO,CAAC,CAAC,CAC1G,CAuBAf,EAAO,UAAU,MAAQ,UAAsB,CAG3C,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMK,EAAgB,KAAM,CAAC,EAEjC,IAAIM,EAAQV,EAAK,MAAM,YAAY,KAAK,IAAK,KAAK,GAAG,EACrD,YAAK,KAAO,EACLU,CACX,EAOAX,EAAO,UAAU,OAAS,UAAuB,CAG7C,GAAI,KAAK,IAAM,EAAI,KAAK,IACpB,MAAMK,EAAgB,KAAM,CAAC,EAEjC,IAAIM,EAAQV,EAAK,MAAM,aAAa,KAAK,IAAK,KAAK,GAAG,EACtD,YAAK,KAAO,EACLU,CACX,EAMAX,EAAO,UAAU,MAAQ,UAAsB,CAC3C,IAAImB,EAAS,KAAK,OAAO,EACrBC,EAAS,KAAK,IACdH,EAAS,KAAK,IAAME,EAGxB,GAAIF,EAAM,KAAK,IACX,MAAMZ,EAAgB,KAAMc,CAAM,EAGtC,GADA,KAAK,KAAOA,EACR,MAAM,QAAQ,KAAK,GAAG,EACtB,OAAO,KAAK,IAAI,MAAMC,EAAOH,CAAG,EAEpC,GAAIG,IAAUH,EAAK,CACf,IAAII,EAAepB,EAAK,OACxB,OAAOoB,EACDA,EAAa,MAAM,CAAC,EACpB,IAAI,KAAK,IAAI,YAAY,CAAC,CACpC,CACA,OAAO,KAAK,OAAO,KAAK,KAAK,IAAKD,EAAOH,CAAG,CAChD,EAMAjB,EAAO,UAAU,OAAS,UAAuB,CAC7C,IAAIsB,EAAQ,KAAK,MAAM,EACvB,OAAOlB,GAAK,KAAKkB,EAAO,EAAGA,EAAM,MAAM,CAC3C,EAOAtB,EAAO,UAAU,KAAO,SAAcmB,EAAQ,CAC1C,GAAI,OAAOA,GAAW,SAAU,CAE5B,GAAI,KAAK,IAAMA,EAAS,KAAK,IACzB,MAAMd,EAAgB,KAAMc,CAAM,EACtC,KAAK,KAAOA,CAChB,KACI,GAEI,IAAI,KAAK,KAAO,KAAK,IACjB,MAAMd,EAAgB,IAAI,QACzB,KAAK,IAAI,KAAK,KAAK,EAAI,KAEpC,OAAO,IACX,EAOAL,EAAO,UAAU,SAAW,SAASuB,EAAU,CAC3C,OAAQA,EAAU,CACd,IAAK,GACD,KAAK,KAAK,EACV,MACJ,IAAK,GACD,KAAK,KAAK,CAAC,EACX,MACJ,IAAK,GACD,KAAK,KAAK,KAAK,OAAO,CAAC,EACvB,MACJ,IAAK,GACD,MAAQA,EAAW,KAAK,OAAO,EAAI,KAAO,GACtC,KAAK,SAASA,CAAQ,EAE1B,MACJ,IAAK,GACD,KAAK,KAAK,CAAC,EACX,MAGJ,QACI,MAAM,MAAM,qBAAuBA,EAAW,cAAgB,KAAK,GAAG,CAC9E,CACA,OAAO,IACX,EAEAvB,EAAO,WAAa,SAASwB,EAAe,CACxCtB,GAAesB,EACfxB,EAAO,OAASU,GAAO,EACvBR,GAAa,WAAW,EAExB,IAAIuB,EAAKxB,EAAK,KAAO,SAAsC,WAC3DA,EAAK,MAAMD,EAAO,UAAW,CAEzB,MAAO,UAAsB,CACzB,OAAOY,GAAe,KAAK,IAAI,EAAEa,CAAE,EAAE,EAAK,CAC9C,EAEA,OAAQ,UAAuB,CAC3B,OAAOb,GAAe,KAAK,IAAI,EAAEa,CAAE,EAAE,EAAI,CAC7C,EAEA,OAAQ,UAAuB,CAC3B,OAAOb,GAAe,KAAK,IAAI,EAAE,SAAS,EAAEa,CAAE,EAAE,EAAK,CACzD,EAEA,QAAS,UAAwB,CAC7B,OAAOP,GAAY,KAAK,IAAI,EAAEO,CAAE,EAAE,EAAI,CAC1C,EAEA,SAAU,UAAyB,CAC/B,OAAOP,GAAY,KAAK,IAAI,EAAEO,CAAE,EAAE,EAAK,CAC3C,CAEJ,CAAC,CACL,IC/ZA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GAGjB,IAAIC,GAAS,MACZD,GAAa,UAAY,OAAO,OAAOC,GAAO,SAAS,GAAG,YAAcD,GAEzE,IAAIE,GAAO,KASX,SAASF,GAAaG,EAAQ,CAC1BF,GAAO,KAAK,KAAME,CAAM,CAO5B,CAEAH,GAAa,WAAa,UAAY,CAE9BE,GAAK,SACLF,GAAa,UAAU,OAASE,GAAK,OAAO,UAAU,MAC9D,EAMAF,GAAa,UAAU,OAAS,UAA8B,CAC1D,IAAII,EAAM,KAAK,OAAO,EACtB,OAAO,KAAK,IAAI,UACV,KAAK,IAAI,UAAU,KAAK,IAAK,KAAK,IAAM,KAAK,IAAI,KAAK,IAAMA,EAAK,KAAK,GAAG,CAAC,EAC1E,KAAK,IAAI,SAAS,QAAS,KAAK,IAAK,KAAK,IAAM,KAAK,IAAI,KAAK,IAAMA,EAAK,KAAK,GAAG,CAAC,CAC5F,EASAJ,GAAa,WAAW,IClDxB,IAAAK,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAUC,GAEjB,IAAIC,GAAO,MAGVD,GAAQ,UAAY,OAAO,OAAOC,GAAK,aAAa,SAAS,GAAG,YAAcD,GAmC/E,SAASA,GAAQE,EAASC,EAAkBC,EAAmB,CAE3D,GAAI,OAAOF,GAAY,WACnB,MAAM,UAAU,4BAA4B,EAEhDD,GAAK,aAAa,KAAK,IAAI,EAM3B,KAAK,QAAUC,EAMf,KAAK,iBAAmB,EAAQC,EAMhC,KAAK,kBAAoB,EAAQC,CACrC,CAaAJ,GAAQ,UAAU,QAAU,SAASK,EAAQC,EAAQC,EAAaC,EAAcC,EAASC,EAAU,CAE/F,GAAI,CAACD,EACD,MAAM,UAAU,2BAA2B,EAE/C,IAAIE,EAAO,KACX,GAAI,CAACD,EACD,OAAOT,GAAK,UAAUI,EAASM,EAAML,EAAQC,EAAaC,EAAcC,CAAO,EAEnF,GAAI,CAACE,EAAK,QAAS,CACf,WAAW,UAAW,CAAED,EAAS,MAAM,eAAe,CAAC,CAAG,EAAG,CAAC,EAC9D,MACJ,CAEA,GAAI,CACA,OAAOC,EAAK,QACRL,EACAC,EAAYI,EAAK,iBAAmB,kBAAoB,QAAQ,EAAEF,CAAO,EAAE,OAAO,EAClF,SAAqBG,EAAKC,EAAU,CAEhC,GAAID,EACA,OAAAD,EAAK,KAAK,QAASC,EAAKN,CAAM,EACvBI,EAASE,CAAG,EAGvB,GAAIC,IAAa,KAAM,CACnBF,EAAK,IAAqB,EAAI,EAC9B,MACJ,CAEA,GAAI,EAAEE,aAAoBL,GACtB,GAAI,CACAK,EAAWL,EAAaG,EAAK,kBAAoB,kBAAoB,QAAQ,EAAEE,CAAQ,CAC3F,OAASD,EAAK,CACV,OAAAD,EAAK,KAAK,QAASC,EAAKN,CAAM,EACvBI,EAASE,CAAG,CACvB,CAGJ,OAAAD,EAAK,KAAK,OAAQE,EAAUP,CAAM,EAC3BI,EAAS,KAAMG,CAAQ,CAClC,CACJ,CACJ,OAASD,EAAK,CACVD,EAAK,KAAK,QAASC,EAAKN,CAAM,EAC9B,WAAW,UAAW,CAAEI,EAASE,CAAG,CAAG,EAAG,CAAC,EAC3C,MACJ,CACJ,EAOAZ,GAAQ,UAAU,IAAM,SAAac,EAAY,CAC7C,OAAI,KAAK,UACAA,GACD,KAAK,QAAQ,KAAM,KAAM,IAAI,EACjC,KAAK,QAAU,KACf,KAAK,KAAK,KAAK,EAAE,IAAI,GAElB,IACX,IC7IA,IAAAC,GAAAC,EAAAC,IAAA,cAMA,IAAIC,GAAMD,GA6BVC,GAAI,QAAU,OCnCd,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACAA,GAAO,QAAU,CAAC,ICDlB,IAAAC,GAAAC,EAAAC,IAAA,cACA,IAAIC,EAAWD,GAQfC,EAAS,MAAQ,UAGjBA,EAAS,OAAe,KACxBA,EAAS,aAAe,KACxBA,EAAS,OAAe,KACxBA,EAAS,aAAe,KAGxBA,EAAS,KAAe,KACxBA,EAAS,IAAe,KACxBA,EAAS,MAAe,KACxBA,EAAS,UAAeC,GAOxB,SAASA,IAAY,CACjBD,EAAS,KAAK,WAAW,EACzBA,EAAS,OAAO,WAAWA,EAAS,YAAY,EAChDA,EAAS,OAAO,WAAWA,EAAS,YAAY,CACpD,CAGAC,GAAU,ICnCV,IAAAC,EAAAC,EAAA,CAAAC,GAAAC,KAAA,cAGAA,GAAO,QAAU,OCAV,IAAMC,GAAmB,WAAW,QAAQ,QCI5C,IAAIC,IACV,SAAUA,EAAY,CAEnBA,EAAWA,EAAW,oBAAyB,CAAC,EAAI,sBAEpDA,EAAWA,EAAW,mBAAwB,CAAC,EAAI,qBAEnDA,EAAWA,EAAW,mBAAwB,CAAC,EAAI,qBAEnDA,EAAWA,EAAW,iBAAsB,CAAC,EAAI,mBAEjDA,EAAWA,EAAW,kBAAuB,CAAC,EAAI,oBAElDA,EAAWA,EAAW,uBAA4B,CAAC,EAAI,yBAEvDA,EAAWA,EAAW,qBAA0B,CAAC,EAAI,uBAErDA,EAAWA,EAAW,oBAAyB,CAAC,EAAI,sBAEpDA,EAAWA,EAAW,gBAAqB,CAAC,EAAI,kBAEhDA,EAAWA,EAAW,uBAA4B,EAAE,EAAI,yBACxDA,EAAWA,EAAW,aAAkB,EAAE,EAAI,cAClD,GAAGA,KAAeA,GAAa,CAAC,EAAE,ECvB3B,IAAIC,IACV,SAAUA,EAA6B,CAEpCA,EAA4BA,EAA4B,OAAY,CAAC,EAAI,SACzEA,EAA4BA,EAA4B,aAAkB,EAAE,EAAI,cACpF,GAAGA,KAAgCA,GAA8B,CAAC,EAAE,ECLpE,IAAAC,EAAgB,SCAhB,IAAAC,EAAgB,SCAT,IAAMC,EAAsB,IAAI,IDQhC,IAAIC,IACV,SAAUA,EAAW,CAElBA,EAAUA,EAAU,WAAgB,CAAC,EAAI,aACzCA,EAAUA,EAAU,aAAkB,EAAE,EAAI,cAChD,GAAGA,KAAcA,GAAY,CAAC,EAAE,EACzB,SAASC,GAAkBC,EAAQ,CACtC,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,aACD,OAAOF,GAAU,WACrB,IAAK,GACL,IAAK,eACL,QACI,OAAOA,GAAU,YACzB,CACJ,CACO,SAASG,GAAgBD,EAAQ,CACpC,OAAQA,EAAQ,CACZ,KAAKF,GAAU,WACX,MAAO,GACX,KAAKA,GAAU,aACf,QACI,MAAO,EACf,CACJ,CACA,SAASI,IAAmB,CACxB,MAAO,CAAE,OAAQ,CAAC,CAAE,CACxB,CACO,IAAMC,EAAS,CAClB,MAAO,yBACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,cAAO,QAAQF,EAAQ,MAAM,EAAE,QAAQ,CAAC,CAACG,EAAKC,CAAK,IAAM,CACjDA,IAAU,QACVC,GAAmB,OAAO,CAAE,IAAKF,EAAK,MAAAC,CAAM,EAAGH,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAExF,CAAC,EACMA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUF,GAAiB,EACjC,KAAOU,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJ,IAAMC,EAASN,GAAmB,OAAOG,EAAQA,EAAO,OAAO,CAAC,EAC5DG,EAAO,QAAU,SACjBX,EAAQ,OAAOW,EAAO,GAAG,EAAIA,EAAO,OAExC,QACR,CACA,IAAKD,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,OAAQgB,GAAShB,EAAO,MAAM,EACxB,OAAO,QAAQA,EAAO,MAAM,EAAE,OAAO,CAACiB,EAAK,CAACV,EAAKC,CAAK,KACpDS,EAAIV,CAAG,EAAIC,EACJS,GACR,CAAC,CAAC,EACH,CAAC,CACX,CACJ,EACA,OAAOb,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,GAAId,EAAQ,OAAQ,CAChB,IAAMe,EAAU,OAAO,QAAQf,EAAQ,MAAM,EACzCe,EAAQ,OAAS,IACjBD,EAAI,OAAS,CAAC,EACdC,EAAQ,QAAQ,CAAC,CAACC,EAAGC,CAAC,IAAM,CACxBH,EAAI,OAAOE,CAAC,EAAIC,CACpB,CAAC,EAET,CACA,OAAOH,CACX,EACA,OAAOI,EAAM,CACT,OAAOnB,EAAO,YAAYmB,GAAQ,CAAC,CAAC,CACxC,EACA,YAAYtB,EAAQ,CAChB,IAAMI,EAAUF,GAAiB,EACjC,OAAAE,EAAQ,OAAS,OAAO,QAAQJ,EAAO,QAAU,CAAC,CAAC,EAAE,OAAO,CAACiB,EAAK,CAACV,EAAKC,CAAK,KACrEA,IAAU,SACVS,EAAIV,CAAG,EAAIC,GAERS,GACR,CAAC,CAAC,EACEb,CACX,EACA,KAAKJ,EAAQ,CACT,IAAMuB,EAASrB,GAAiB,EAChC,GAAIF,IAAW,OACX,QAAWO,KAAO,OAAO,KAAKP,CAAM,EAChCuB,EAAO,OAAOhB,CAAG,EAAIP,EAAOO,CAAG,EAGvC,OAAOgB,CACX,EACA,OAAOnB,EAAS,CACZ,IAAMJ,EAAS,CAAC,EAChB,GAAII,EAAQ,OACR,QAAWG,KAAO,OAAO,KAAKH,EAAQ,MAAM,EACxCJ,EAAOO,CAAG,EAAIH,EAAQ,OAAOG,CAAG,EAGxC,OAAOP,CACX,CACJ,EACAwB,EAAoB,IAAIrB,EAAO,MAAOA,CAAM,EAC5C,SAASsB,IAA+B,CACpC,MAAO,CAAE,IAAK,GAAI,MAAO,MAAU,CACvC,CACO,IAAMhB,GAAqB,CAC9B,MAAO,qCACP,OAAOL,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,MAAQ,IAChBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,GAAG,EAEpCA,EAAQ,QAAU,QAClBsB,EAAM,OAAOA,EAAM,KAAKtB,EAAQ,KAAK,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEtEA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUqB,GAA6B,EAC7C,KAAOb,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,IAAMQ,EAAO,OAAO,EAC5B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,MAAQsB,EAAM,OAAOA,EAAM,OAAOd,EAAQA,EAAO,OAAO,CAAC,CAAC,EAClE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,IAAK2B,GAAM3B,EAAO,GAAG,EAAI,WAAW,OAAOA,EAAO,GAAG,EAAI,GACzD,MAAO2B,GAAM3B,GAAQ,KAAK,EAAIA,EAAO,MAAQ,MACjD,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,MAAQ,KAChBc,EAAI,IAAMd,EAAQ,KAElBA,EAAQ,QAAU,SAClBc,EAAI,MAAQd,EAAQ,OAEjBc,CACX,EACA,OAAOI,EAAM,CACT,OAAOb,GAAmB,YAAYa,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYtB,EAAQ,CAChB,IAAMI,EAAUqB,GAA6B,EAC7C,OAAArB,EAAQ,IAAMJ,EAAO,KAAO,GAC5BI,EAAQ,MAAQJ,EAAO,OAAS,OACzBI,CACX,CACJ,EACAoB,EAAoB,IAAIf,GAAmB,MAAOA,EAAkB,EACpE,SAASmB,IAAkB,CACvB,MAAO,CACH,UAAW,OACX,YAAa,OACb,YAAa,OACb,UAAW,OACX,YAAa,OACb,UAAW,MACf,CACJ,CACO,IAAMF,EAAQ,CACjB,MAAO,wBACP,OAAOtB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,YAAc,QACtBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,SAAS,EAExCA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,YAAc,QACtBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,SAAS,EAExCA,EAAQ,cAAgB,QACxBD,EAAO,OAAOA,EAAO,KAAKC,EAAQ,WAAW,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjFD,EAAQ,YAAc,QACtByB,GAAU,OAAOA,GAAU,KAAKzB,EAAQ,SAAS,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAElFA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUwB,GAAgB,EAChC,KAAOhB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJV,EAAQ,UAAYQ,EAAO,MAAM,EACjC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,UAAYQ,EAAO,KAAK,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcD,EAAO,OAAOA,EAAO,OAAOS,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC1E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,UAAYyB,GAAU,OAAOA,GAAU,OAAOjB,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC9E,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,UAAW2B,GAAM3B,EAAO,SAAS,EAAID,GAAkBC,EAAO,SAAS,EAAI,OAC3E,YAAa2B,GAAM3B,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,YAAa2B,GAAM3B,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,UAAW2B,GAAM3B,EAAO,SAAS,EAAI,WAAW,QAAQA,EAAO,SAAS,EAAI,OAC5E,YAAagB,GAAShB,EAAO,WAAW,EAAIA,EAAO,YAAc,OACjE,UAAW,WAAW,MAAM,QAAQA,EAAO,SAAS,EAAI,CAAC,GAAGA,EAAO,SAAS,EAAI,MACpF,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,YAAc,SACtBc,EAAI,UAAYjB,GAAgBG,EAAQ,SAAS,GAEjDA,EAAQ,cAAgB,SACxBc,EAAI,YAAcd,EAAQ,aAE1BA,EAAQ,cAAgB,SACxBc,EAAI,YAAcd,EAAQ,aAE1BA,EAAQ,YAAc,SACtBc,EAAI,UAAYd,EAAQ,WAExBA,EAAQ,cAAgB,SACxBc,EAAI,YAAcd,EAAQ,aAE1BA,EAAQ,YAAc,SACtBc,EAAI,UAAYd,EAAQ,WAErBc,CACX,EACA,OAAOI,EAAM,CACT,OAAOI,EAAM,YAAYJ,GAAQ,CAAC,CAAC,CACvC,EACA,YAAYtB,EAAQ,CAChB,IAAMI,EAAUwB,GAAgB,EAChC,OAAAxB,EAAQ,UAAYJ,EAAO,WAAa,OACxCI,EAAQ,YAAcJ,EAAO,aAAe,OAC5CI,EAAQ,YAAcJ,EAAO,aAAe,OAC5CI,EAAQ,UAAYJ,EAAO,WAAa,OACxCI,EAAQ,YAAcJ,EAAO,aAAe,OAC5CI,EAAQ,UAAYJ,EAAO,WAAa,OACjCI,CACX,EACA,KAAKI,EAAO,CACR,IAAMsB,EAASF,GAAgB,EAC/B,GAAIpB,IAAU,KACVsB,EAAO,UAAYhC,GAAU,mBAExB,OAAOU,GAAU,UACtBsB,EAAO,UAAYtB,UAEd,OAAOA,GAAU,SACtBsB,EAAO,YAActB,UAEhB,OAAOA,GAAU,SACtBsB,EAAO,YAActB,UAEhB,WAAW,MAAM,QAAQA,CAAK,EACnCsB,EAAO,UAAYtB,UAEd,OAAOA,GAAU,SACtBsB,EAAO,YAActB,UAEhB,OAAOA,EAAU,IACtB,MAAM,IAAI,WAAW,MAAM,+BAAiC,OAAOA,CAAK,EAE5E,OAAOsB,CACX,EACA,OAAO1B,EAAS,CACZ,GAAIA,EAAQ,cAAgB,OACxB,OAAOA,EAAQ,YAEd,GAAIA,GAAS,cAAgB,OAC9B,OAAOA,EAAQ,YAEd,GAAIA,GAAS,YAAc,OAC5B,OAAOA,EAAQ,UAEd,GAAIA,GAAS,cAAgB,OAC9B,OAAOA,EAAQ,YAEd,GAAIA,GAAS,YAAc,OAC5B,OAAOA,EAAQ,UAEd,GAAIA,GAAS,YAAc,OAC5B,OAAO,IAGf,CACJ,EACAoB,EAAoB,IAAIE,EAAM,MAAOA,CAAK,EAC1C,SAASK,IAAsB,CAC3B,MAAO,CAAE,OAAQ,CAAC,CAAE,CACxB,CACO,IAAMF,GAAY,CACrB,MAAO,4BACP,OAAOzB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWe,KAAKjB,EAAQ,OACpBsB,EAAM,OAAOA,EAAM,KAAKL,CAAC,EAAGhB,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjE,OAAOA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAU2B,GAAoB,EACpC,KAAOnB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,OAAO,KAAKsB,EAAM,OAAOA,EAAM,OAAOd,EAAQA,EAAO,OAAO,CAAC,CAAC,CAAC,EACvE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CAAE,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAI,CAAC,GAAGA,EAAO,MAAM,EAAI,CAAC,CAAE,CACxF,EACA,OAAOI,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,QAAQ,SAChBc,EAAI,OAASd,EAAQ,QAElBc,CACX,EACA,OAAOI,EAAM,CACT,OAAOO,GAAU,YAAYP,GAAQ,CAAC,CAAC,CAC3C,EACA,YAAYtB,EAAQ,CAChB,IAAMI,EAAU2B,GAAoB,EACpC,OAAA3B,EAAQ,OAASJ,EAAO,QAAQ,IAAKgC,GAAMA,CAAC,GAAK,CAAC,EAC3C5B,CACX,EACA,KAAK6B,EAAO,CACR,IAAMH,EAASC,GAAoB,EACnC,OAAAD,EAAO,OAASG,GAAS,CAAC,EACnBH,CACX,EACA,OAAO1B,EAAS,CACZ,OAAIA,GAAS,eAAe,QAAQ,GAAK,WAAW,MAAM,QAAQA,EAAQ,MAAM,EACrEA,EAAQ,OAGRA,CAEf,CACJ,EACAoB,EAAoB,IAAIK,GAAU,MAAOA,EAAS,EAClD,SAASb,GAASR,EAAO,CACrB,OAAO,OAAOA,GAAU,UAAYA,IAAU,IAClD,CACA,SAASmB,GAAMnB,EAAO,CAClB,OAAOA,GAAU,IACrB,CE1bA,IAAA0B,EAAgB,SCAhB,IAAAC,GAAgB,SCAhB,IAAAC,EAAgB,SCAT,IAAIC,GACV,SAAUA,EAAe,CAEtBA,EAAcA,EAAc,OAAY,CAAC,EAAI,SAE7CA,EAAcA,EAAc,UAAe,CAAC,EAAI,YAEhDA,EAAcA,EAAc,OAAY,CAAC,EAAI,SAE7CA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAE9CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAE3CA,EAAcA,EAAc,UAAe,CAAC,EAAI,YAEhDA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAE5CA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,aAAkB,EAAE,EAAI,cACxD,GAAGA,IAAkBA,EAAgB,CAAC,EAAE,EACjC,SAASC,GAAsBC,EAAQ,CAC1C,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,SACD,OAAOF,EAAc,OACzB,IAAK,GACL,IAAK,YACD,OAAOA,EAAc,UACzB,IAAK,GACL,IAAK,SACD,OAAOA,EAAc,OACzB,IAAK,GACL,IAAK,UACD,OAAOA,EAAc,QACzB,IAAK,GACL,IAAK,OACD,OAAOA,EAAc,KACzB,IAAK,GACL,IAAK,YACD,OAAOA,EAAc,UACzB,IAAK,GACL,IAAK,QACD,OAAOA,EAAc,MACzB,IAAK,GACL,IAAK,QACD,OAAOA,EAAc,MACzB,IAAK,GACL,IAAK,eACL,QACI,OAAOA,EAAc,YAC7B,CACJ,CACO,SAASG,GAAoBD,EAAQ,CACxC,OAAQA,EAAQ,CACZ,KAAKF,EAAc,OACf,MAAO,GACX,KAAKA,EAAc,UACf,MAAO,GACX,KAAKA,EAAc,OACf,MAAO,GACX,KAAKA,EAAc,QACf,MAAO,GACX,KAAKA,EAAc,KACf,MAAO,GACX,KAAKA,EAAc,UACf,MAAO,GACX,KAAKA,EAAc,MACf,MAAO,GACX,KAAKA,EAAc,MACf,MAAO,GACX,KAAKA,EAAc,aACnB,QACI,MAAO,EACf,CACJ,CC1EA,IAAAI,EAAgB,SAGhB,SAASC,IAA2B,CAChC,MAAO,CACH,UAAW,EACX,SAAU,OACV,YAAa,OACb,YAAa,OACb,UAAW,OACX,UAAW,OACX,eAAgB,OAChB,WAAY,MAChB,CACJ,CACO,IAAMC,EAAiB,CAC1B,MAAO,gDACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,YAAc,GACtBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,SAAS,EAExCA,EAAQ,WAAa,QACrBC,EAAO,OAAO,GAAG,EAAE,KAAKD,EAAQ,QAAQ,EAExCA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,YAAc,QACtBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,SAAS,EAExCA,EAAQ,YAAc,QACtBG,GAAyB,OAAOH,EAAQ,UAAWC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEpFD,EAAQ,iBAAmB,QAC3BI,GAA8B,OAAOJ,EAAQ,eAAgBC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE9FD,EAAQ,aAAe,QACvBK,GAA0B,OAAOL,EAAQ,WAAYC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEnFA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUF,GAAyB,EACzC,KAAOU,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJV,EAAQ,UAAYQ,EAAO,MAAM,EACjC,SACJ,IAAK,KACD,GAAIE,IAAQ,IACR,MAEJV,EAAQ,SAAWQ,EAAO,KAAK,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,UAAYQ,EAAO,KAAK,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,UAAYG,GAAyB,OAAOK,EAAQA,EAAO,OAAO,CAAC,EAC3E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,eAAiBI,GAA8B,OAAOI,EAAQA,EAAO,OAAO,CAAC,EACrF,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,WAAaK,GAA0B,OAAOG,EAAQA,EAAO,OAAO,CAAC,EAC7E,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASW,EAAQ,CACb,MAAO,CACH,UAAWC,GAAMD,EAAO,SAAS,EAAIE,GAAsBF,EAAO,SAAS,EAAI,EAC/E,SAAUC,GAAMD,EAAO,QAAQ,EAAI,WAAW,QAAQA,EAAO,QAAQ,EAAI,OACzE,YAAaC,GAAMD,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,YAAaC,GAAMD,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,UAAWC,GAAMD,EAAO,SAAS,EAAI,WAAW,QAAQA,EAAO,SAAS,EAAI,OAC5E,UAAWC,GAAMD,EAAO,SAAS,EAAIR,GAAyB,SAASQ,EAAO,SAAS,EAAI,OAC3F,eAAgBC,GAAMD,EAAO,cAAc,EACrCP,GAA8B,SAASO,EAAO,cAAc,EAC5D,OACN,WAAYC,GAAMD,EAAO,UAAU,EAAIN,GAA0B,SAASM,EAAO,UAAU,EAAI,MACnG,CACJ,EACA,OAAOX,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,YAAc,IACtBc,EAAI,UAAYC,GAAoBf,EAAQ,SAAS,GAErDA,EAAQ,WAAa,SACrBc,EAAI,SAAWd,EAAQ,UAEvBA,EAAQ,cAAgB,SACxBc,EAAI,YAAcd,EAAQ,aAE1BA,EAAQ,cAAgB,SACxBc,EAAI,YAAcd,EAAQ,aAE1BA,EAAQ,YAAc,SACtBc,EAAI,UAAYd,EAAQ,WAExBA,EAAQ,YAAc,SACtBc,EAAI,UAAYX,GAAyB,OAAOH,EAAQ,SAAS,GAEjEA,EAAQ,iBAAmB,SAC3Bc,EAAI,eAAiBV,GAA8B,OAAOJ,EAAQ,cAAc,GAEhFA,EAAQ,aAAe,SACvBc,EAAI,WAAaT,GAA0B,OAAOL,EAAQ,UAAU,GAEjEc,CACX,EACA,OAAOE,EAAM,CACT,OAAOjB,EAAe,YAAYiB,GAAQ,CAAC,CAAC,CAChD,EACA,YAAYL,EAAQ,CAChB,IAAMX,EAAUF,GAAyB,EACzC,OAAAE,EAAQ,UAAYW,EAAO,WAAa,EACxCX,EAAQ,SAAWW,EAAO,UAAY,OACtCX,EAAQ,YAAcW,EAAO,aAAe,OAC5CX,EAAQ,YAAcW,EAAO,aAAe,OAC5CX,EAAQ,UAAYW,EAAO,WAAa,OACxCX,EAAQ,UAAaW,EAAO,YAAc,QAAaA,EAAO,YAAc,KACtER,GAAyB,YAAYQ,EAAO,SAAS,EACrD,OACNX,EAAQ,eAAkBW,EAAO,iBAAmB,QAAaA,EAAO,iBAAmB,KACrFP,GAA8B,YAAYO,EAAO,cAAc,EAC/D,OACNX,EAAQ,WAAcW,EAAO,aAAe,QAAaA,EAAO,aAAe,KACzEN,GAA0B,YAAYM,EAAO,UAAU,EACvD,OACCX,CACX,CACJ,EACAiB,EAAoB,IAAIlB,EAAe,MAAOA,CAAc,EAC5D,SAASmB,IAAqC,CAC1C,MAAO,CAAE,SAAU,EAAG,MAAO,CAAC,CAAE,CACpC,CACO,IAAMf,GAA2B,CACpC,MAAO,0DACP,OAAOH,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CACtCF,EAAQ,WAAa,GACrBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,QAAQ,EAE3C,QAAWmB,KAAKnB,EAAQ,MACpBD,EAAe,OAAOoB,EAAGlB,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE9D,OAAOA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUkB,GAAmC,EACnD,KAAOV,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJV,EAAQ,SAAWQ,EAAO,MAAM,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,MAAM,KAAKD,EAAe,OAAOS,EAAQA,EAAO,OAAO,CAAC,CAAC,EACjE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASW,EAAQ,CACb,MAAO,CACH,SAAUC,GAAMD,EAAO,QAAQ,EAAIE,GAAsBF,EAAO,QAAQ,EAAI,EAC5E,MAAO,WAAW,MAAM,QAAQA,GAAQ,KAAK,EAAIA,EAAO,MAAM,IAAKS,GAAMrB,EAAe,SAASqB,CAAC,CAAC,EAAI,CAAC,CAC5G,CACJ,EACA,OAAOpB,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,WAAa,IACrBc,EAAI,SAAWC,GAAoBf,EAAQ,QAAQ,GAEnDA,EAAQ,OAAO,SACfc,EAAI,MAAQd,EAAQ,MAAM,IAAKoB,GAAMrB,EAAe,OAAOqB,CAAC,CAAC,GAE1DN,CACX,EACA,OAAOE,EAAM,CACT,OAAOb,GAAyB,YAAYa,GAAQ,CAAC,CAAC,CAC1D,EACA,YAAYL,EAAQ,CAChB,IAAMX,EAAUkB,GAAmC,EACnD,OAAAlB,EAAQ,SAAWW,EAAO,UAAY,EACtCX,EAAQ,MAAQW,EAAO,OAAO,IAAKS,GAAMrB,EAAe,YAAYqB,CAAC,CAAC,GAAK,CAAC,EACrEpB,CACX,CACJ,EACAiB,EAAoB,IAAId,GAAyB,MAAOA,EAAwB,EAChF,SAASkB,IAA0C,CAC/C,MAAO,CAAE,OAAQ,CAAC,CAAE,CACxB,CACO,IAAMjB,GAAgC,CACzC,MAAO,+DACP,OAAOJ,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWiB,KAAKnB,EAAQ,OACpBC,EAAO,OAAO,EAAE,EAAE,OAAOkB,CAAC,EAE9B,OAAOlB,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUqB,GAAwC,EACxD,KAAOb,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,OAAO,KAAKQ,EAAO,OAAO,CAAC,EACnC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASW,EAAQ,CACb,MAAO,CACH,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAIA,EAAO,OAAO,IAAKS,GAAM,WAAW,OAAOA,CAAC,CAAC,EAAI,CAAC,CACzG,CACJ,EACA,OAAOpB,EAAS,CACZ,IAAMc,EAAM,CAAC,EACb,OAAId,EAAQ,QAAQ,SAChBc,EAAI,OAASd,EAAQ,QAElBc,CACX,EACA,OAAOE,EAAM,CACT,OAAOZ,GAA8B,YAAYY,GAAQ,CAAC,CAAC,CAC/D,EACA,YAAYL,EAAQ,CAChB,IAAMX,EAAUqB,GAAwC,EACxD,OAAArB,EAAQ,OAASW,EAAO,QAAQ,IAAKS,GAAMA,CAAC,GAAK,CAAC,EAC3CpB,CACX,CACJ,EACAiB,EAAoB,IAAIb,GAA8B,MAAOA,EAA6B,EAC1F,SAASkB,IAAsC,CAC3C,MAAO,CAAC,CACZ,CACO,IAAMjB,GAA4B,CACrC,MAAO,2DACP,OAAOkB,EAAGtB,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CACpC,OAAOD,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUsB,GAAoC,EACpD,KAAOd,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAG1B,GAFQE,IAAQ,GAEXA,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASuB,EAAG,CACR,MAAO,CAAC,CACZ,EACA,OAAOA,EAAG,CAEN,MADY,CAAC,CAEjB,EACA,OAAOP,EAAM,CACT,OAAOX,GAA0B,YAAYW,GAAQ,CAAC,CAAC,CAC3D,EACA,YAAYO,EAAG,CAEX,OADgBD,GAAoC,CAExD,CACJ,EACAL,EAAoB,IAAIZ,GAA0B,MAAOA,EAAyB,EAClF,SAASO,GAAMY,EAAO,CAClB,OAAOA,GAAU,IACrB,CF3UA,SAASC,IAAsB,CAC3B,MAAO,CACH,QAAS,GACT,UAAW,EACX,MAAO,GACP,SAAU,OACV,aAAc,OACd,SAAU,OACV,SAAU,OACV,YAAa,OACb,SAAU,MACd,CACJ,CACO,IAAMC,EAAY,CACrB,MAAO,2CACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,YAAc,GACtBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,SAAS,EAEzCA,EAAQ,QAAU,IAClBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,KAAK,EAEtCA,EAAQ,WAAa,QACrBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,QAAQ,EAEzCA,EAAQ,eAAiB,QACzBG,EAAe,OAAOH,EAAQ,aAAcC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE7ED,EAAQ,WAAa,QACrBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,QAAQ,EAEvCA,EAAQ,WAAa,QACrBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,QAAQ,EAEvCA,EAAQ,cAAgB,QACxBI,EAAY,OAAOJ,EAAQ,YAAaC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEzED,EAAQ,WAAa,QACrBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,QAAQ,EAEpCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUF,GAAoB,EACpC,KAAOS,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,QAAUO,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,UAAYO,EAAO,MAAM,EACjC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,MAAQO,EAAO,OAAO,EAC9B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,SAAWO,EAAO,OAAO,EACjC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,aAAeG,EAAe,OAAOI,EAAQA,EAAO,OAAO,CAAC,EACpE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,SAAWO,EAAO,KAAK,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,SAAWO,EAAO,KAAK,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcI,EAAY,OAAOG,EAAQA,EAAO,OAAO,CAAC,EAChE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,SAAWO,EAAO,KAAK,EAC/B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,QAASC,EAAMD,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,UAAWC,EAAMD,EAAO,SAAS,EAAIE,GAAsBF,EAAO,SAAS,EAAI,EAC/E,MAAOC,EAAMD,EAAO,KAAK,EAAI,WAAW,OAAOA,EAAO,KAAK,EAAI,GAC/D,SAAUC,EAAMD,EAAO,QAAQ,EAAI,WAAW,OAAOA,EAAO,QAAQ,EAAI,OACxE,aAAcC,EAAMD,EAAO,YAAY,EAAIP,EAAe,SAASO,EAAO,YAAY,EAAI,OAC1F,SAAUC,EAAMD,EAAO,QAAQ,EAAI,WAAW,QAAQA,EAAO,QAAQ,EAAI,OACzE,SAAUC,EAAMD,EAAO,QAAQ,EAAI,WAAW,QAAQA,EAAO,QAAQ,EAAI,OACzE,YAAaC,EAAMD,EAAO,WAAW,EAAIN,EAAY,SAASM,EAAO,WAAW,EAAI,OACpF,SAAUC,EAAMD,EAAO,QAAQ,EAAI,WAAW,QAAQA,EAAO,QAAQ,EAAI,MAC7E,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,UAAY,KACpBa,EAAI,QAAUb,EAAQ,SAEtBA,EAAQ,YAAc,IACtBa,EAAI,UAAYC,GAAoBd,EAAQ,SAAS,GAErDA,EAAQ,QAAU,KAClBa,EAAI,MAAQb,EAAQ,OAEpBA,EAAQ,WAAa,SACrBa,EAAI,SAAWb,EAAQ,UAEvBA,EAAQ,eAAiB,SACzBa,EAAI,aAAeV,EAAe,OAAOH,EAAQ,YAAY,GAE7DA,EAAQ,WAAa,SACrBa,EAAI,SAAWb,EAAQ,UAEvBA,EAAQ,WAAa,SACrBa,EAAI,SAAWb,EAAQ,UAEvBA,EAAQ,cAAgB,SACxBa,EAAI,YAAcT,EAAY,OAAOJ,EAAQ,WAAW,GAExDA,EAAQ,WAAa,SACrBa,EAAI,SAAWb,EAAQ,UAEpBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOhB,EAAU,YAAYgB,GAAQ,CAAC,CAAC,CAC3C,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAUF,GAAoB,EACpC,OAAAE,EAAQ,QAAUU,EAAO,SAAW,GACpCV,EAAQ,UAAYU,EAAO,WAAa,EACxCV,EAAQ,MAAQU,EAAO,OAAS,GAChCV,EAAQ,SAAWU,EAAO,UAAY,OACtCV,EAAQ,aAAgBU,EAAO,eAAiB,QAAaA,EAAO,eAAiB,KAC/EP,EAAe,YAAYO,EAAO,YAAY,EAC9C,OACNV,EAAQ,SAAWU,EAAO,UAAY,OACtCV,EAAQ,SAAWU,EAAO,UAAY,OACtCV,EAAQ,YAAeU,EAAO,cAAgB,QAAaA,EAAO,cAAgB,KAC5EN,EAAY,YAAYM,EAAO,WAAW,EAC1C,OACNV,EAAQ,SAAWU,EAAO,UAAY,OAC/BV,CACX,CACJ,EACAgB,EAAoB,IAAIjB,EAAU,MAAOA,CAAS,EAClD,SAASkB,IAAwB,CAC7B,MAAO,CACH,aAAc,OACd,gBAAiB,OACjB,aAAc,OACd,cAAe,OACf,WAAY,OACZ,gBAAiB,OACjB,YAAa,MACjB,CACJ,CACO,IAAMb,EAAc,CACvB,MAAO,6CACP,OAAOJ,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,eAAiB,QACzBkB,GAAmB,OAAOlB,EAAQ,aAAcC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjFD,EAAQ,kBAAoB,QAC5BmB,GAAsB,OAAOnB,EAAQ,gBAAiBC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEvFD,EAAQ,eAAiB,QACzBoB,GAAmB,OAAOpB,EAAQ,aAAcC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjFD,EAAQ,gBAAkB,QAC1BqB,GAAoB,OAAOrB,EAAQ,cAAeC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEnFD,EAAQ,aAAe,QACvBsB,GAAiB,OAAOtB,EAAQ,WAAYC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE7ED,EAAQ,kBAAoB,QAC5BuB,GAAsB,OAAOvB,EAAQ,gBAAiBC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEvFD,EAAQ,cAAgB,QACxBwB,GAAkB,OAAOxB,EAAQ,YAAaC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE5EA,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUiB,GAAsB,EACtC,KAAOV,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,aAAekB,GAAmB,OAAOX,EAAQA,EAAO,OAAO,CAAC,EACxE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,gBAAkBmB,GAAsB,OAAOZ,EAAQA,EAAO,OAAO,CAAC,EAC9E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,aAAeoB,GAAmB,OAAOb,EAAQA,EAAO,OAAO,CAAC,EACxE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,cAAgBqB,GAAoB,OAAOd,EAAQA,EAAO,OAAO,CAAC,EAC1E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAasB,GAAiB,OAAOf,EAAQA,EAAO,OAAO,CAAC,EACpE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,gBAAkBuB,GAAsB,OAAOhB,EAAQA,EAAO,OAAO,CAAC,EAC9E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcwB,GAAkB,OAAOjB,EAAQA,EAAO,OAAO,CAAC,EACtE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,aAAcC,EAAMD,EAAO,YAAY,EAAIQ,GAAmB,SAASR,EAAO,YAAY,EAAI,OAC9F,gBAAiBC,EAAMD,EAAO,eAAe,EACvCS,GAAsB,SAAST,EAAO,eAAe,EACrD,OACN,aAAcC,EAAMD,EAAO,YAAY,EAAIU,GAAmB,SAASV,EAAO,YAAY,EAAI,OAC9F,cAAeC,EAAMD,EAAO,aAAa,EAAIW,GAAoB,SAASX,EAAO,aAAa,EAAI,OAClG,WAAYC,EAAMD,EAAO,UAAU,EAAIY,GAAiB,SAASZ,EAAO,UAAU,EAAI,OACtF,gBAAiBC,EAAMD,EAAO,eAAe,EACvCa,GAAsB,SAASb,EAAO,eAAe,EACrD,OACN,YAAaC,EAAMD,EAAO,WAAW,EAAIc,GAAkB,SAASd,EAAO,WAAW,EAAI,MAC9F,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,eAAiB,SACzBa,EAAI,aAAeK,GAAmB,OAAOlB,EAAQ,YAAY,GAEjEA,EAAQ,kBAAoB,SAC5Ba,EAAI,gBAAkBM,GAAsB,OAAOnB,EAAQ,eAAe,GAE1EA,EAAQ,eAAiB,SACzBa,EAAI,aAAeO,GAAmB,OAAOpB,EAAQ,YAAY,GAEjEA,EAAQ,gBAAkB,SAC1Ba,EAAI,cAAgBQ,GAAoB,OAAOrB,EAAQ,aAAa,GAEpEA,EAAQ,aAAe,SACvBa,EAAI,WAAaS,GAAiB,OAAOtB,EAAQ,UAAU,GAE3DA,EAAQ,kBAAoB,SAC5Ba,EAAI,gBAAkBU,GAAsB,OAAOvB,EAAQ,eAAe,GAE1EA,EAAQ,cAAgB,SACxBa,EAAI,YAAcW,GAAkB,OAAOxB,EAAQ,WAAW,GAE3Da,CACX,EACA,OAAOE,EAAM,CACT,OAAOX,EAAY,YAAYW,GAAQ,CAAC,CAAC,CAC7C,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAUiB,GAAsB,EACtC,OAAAjB,EAAQ,aAAgBU,EAAO,eAAiB,QAAaA,EAAO,eAAiB,KAC/EQ,GAAmB,YAAYR,EAAO,YAAY,EAClD,OACNV,EAAQ,gBAAmBU,EAAO,kBAAoB,QAAaA,EAAO,kBAAoB,KACxFS,GAAsB,YAAYT,EAAO,eAAe,EACxD,OACNV,EAAQ,aAAgBU,EAAO,eAAiB,QAAaA,EAAO,eAAiB,KAC/EU,GAAmB,YAAYV,EAAO,YAAY,EAClD,OACNV,EAAQ,cAAiBU,EAAO,gBAAkB,QAAaA,EAAO,gBAAkB,KAClFW,GAAoB,YAAYX,EAAO,aAAa,EACpD,OACNV,EAAQ,WAAcU,EAAO,aAAe,QAAaA,EAAO,aAAe,KACzEY,GAAiB,YAAYZ,EAAO,UAAU,EAC9C,OACNV,EAAQ,gBAAmBU,EAAO,kBAAoB,QAAaA,EAAO,kBAAoB,KACxFa,GAAsB,YAAYb,EAAO,eAAe,EACxD,OACNV,EAAQ,YAAeU,EAAO,cAAgB,QAAaA,EAAO,cAAgB,KAC5Ec,GAAkB,YAAYd,EAAO,WAAW,EAChD,OACCV,CACX,CACJ,EACAgB,EAAoB,IAAIZ,EAAY,MAAOA,CAAW,EACtD,SAASqB,IAA+B,CACpC,MAAO,CAAE,UAAW,OAAW,UAAW,OAAW,YAAa,MAAU,CAChF,CACO,IAAMP,GAAqB,CAC9B,MAAO,oDACP,OAAOlB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,YAAc,QACtBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,SAAS,EAExCA,EAAQ,YAAc,QACtBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,SAAS,EAEzCA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEzCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUyB,GAA6B,EAC7C,KAAOlB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJT,EAAQ,UAAYO,EAAO,MAAM,EACjC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,UAAYO,EAAO,MAAM,EACjC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcO,EAAO,OAAO,EACpC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,UAAWC,EAAMD,EAAO,SAAS,EAAI,WAAW,OAAOA,EAAO,SAAS,EAAI,OAC3E,UAAWC,EAAMD,EAAO,SAAS,EAAI,WAAW,OAAOA,EAAO,SAAS,EAAI,OAC3E,YAAaC,EAAMD,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,MACrF,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,YAAc,SACtBa,EAAI,UAAY,KAAK,MAAMb,EAAQ,SAAS,GAE5CA,EAAQ,YAAc,SACtBa,EAAI,UAAY,KAAK,MAAMb,EAAQ,SAAS,GAE5CA,EAAQ,cAAgB,SACxBa,EAAI,YAAcb,EAAQ,aAEvBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOG,GAAmB,YAAYH,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAUyB,GAA6B,EAC7C,OAAAzB,EAAQ,UAAYU,EAAO,WAAa,OACxCV,EAAQ,UAAYU,EAAO,WAAa,OACxCV,EAAQ,YAAcU,EAAO,aAAe,OACrCV,CACX,CACJ,EACAgB,EAAoB,IAAIE,GAAmB,MAAOA,EAAkB,EACpE,SAASQ,IAAkC,CACvC,MAAO,CAAE,cAAe,OAAW,WAAY,OAAW,YAAa,MAAU,CACrF,CACO,IAAMP,GAAwB,CACjC,MAAO,uDACP,OAAOnB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,gBAAkB,QAC1BC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,aAAa,EAE5CA,EAAQ,aAAe,QACvBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,UAAU,EAE1CA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEzCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAU0B,GAAgC,EAChD,KAAOnB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJT,EAAQ,cAAgBO,EAAO,MAAM,EACrC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAaO,EAAO,MAAM,EAClC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcO,EAAO,OAAO,EACpC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,cAAeC,EAAMD,EAAO,aAAa,EAAI,WAAW,OAAOA,EAAO,aAAa,EAAI,OACvF,WAAYC,EAAMD,EAAO,UAAU,EAAI,WAAW,OAAOA,EAAO,UAAU,EAAI,OAC9E,YAAaC,EAAMD,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,MACrF,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,gBAAkB,SAC1Ba,EAAI,cAAgB,KAAK,MAAMb,EAAQ,aAAa,GAEpDA,EAAQ,aAAe,SACvBa,EAAI,WAAa,KAAK,MAAMb,EAAQ,UAAU,GAE9CA,EAAQ,cAAgB,SACxBa,EAAI,YAAcb,EAAQ,aAEvBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOI,GAAsB,YAAYJ,GAAQ,CAAC,CAAC,CACvD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAU0B,GAAgC,EAChD,OAAA1B,EAAQ,cAAgBU,EAAO,eAAiB,OAChDV,EAAQ,WAAaU,EAAO,YAAc,OAC1CV,EAAQ,YAAcU,EAAO,aAAe,OACrCV,CACX,CACJ,EACAgB,EAAoB,IAAIG,GAAsB,MAAOA,EAAqB,EAC1E,SAASQ,IAA+B,CACpC,MAAO,CAAE,KAAM,OAAW,IAAK,OAAW,IAAK,MAAU,CAC7D,CACO,IAAMP,GAAqB,CAC9B,MAAO,oDACP,OAAOpB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,OAAS,QACjBC,EAAO,OAAO,CAAC,EAAE,OAAOD,EAAQ,IAAI,EAEpCA,EAAQ,MAAQ,QAChBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,GAAG,EAEpCA,EAAQ,MAAQ,QAChBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,GAAG,EAEjCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAU2B,GAA6B,EAC7C,KAAOpB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJT,EAAQ,KAAOO,EAAO,OAAO,EAC7B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,IAAMO,EAAO,OAAO,EAC5B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,IAAMO,EAAO,OAAO,EAC5B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,KAAMC,EAAMD,EAAO,IAAI,EAAI,WAAW,OAAOA,EAAO,IAAI,EAAI,OAC5D,IAAKC,EAAMD,EAAO,GAAG,EAAI,WAAW,OAAOA,EAAO,GAAG,EAAI,OACzD,IAAKC,EAAMD,EAAO,GAAG,EAAI,WAAW,OAAOA,EAAO,GAAG,EAAI,MAC7D,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,OAAS,SACjBa,EAAI,KAAOb,EAAQ,MAEnBA,EAAQ,MAAQ,SAChBa,EAAI,IAAMb,EAAQ,KAElBA,EAAQ,MAAQ,SAChBa,EAAI,IAAMb,EAAQ,KAEfa,CACX,EACA,OAAOE,EAAM,CACT,OAAOK,GAAmB,YAAYL,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAU2B,GAA6B,EAC7C,OAAA3B,EAAQ,KAAOU,EAAO,MAAQ,OAC9BV,EAAQ,IAAMU,EAAO,KAAO,OAC5BV,EAAQ,IAAMU,EAAO,KAAO,OACrBV,CACX,CACJ,EACAgB,EAAoB,IAAII,GAAmB,MAAOA,EAAkB,EACpE,SAASQ,IAAgC,CACrC,MAAO,CAAC,CACZ,CACO,IAAMP,GAAsB,CAC/B,MAAO,qDACP,OAAOQ,EAAG5B,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CACpC,OAAOD,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAU4B,GAA8B,EAC9C,KAAOrB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAG1B,GAFQE,IAAQ,GAEXA,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAAS6B,EAAG,CACR,MAAO,CAAC,CACZ,EACA,OAAOA,EAAG,CAEN,MADY,CAAC,CAEjB,EACA,OAAOd,EAAM,CACT,OAAOM,GAAoB,YAAYN,GAAQ,CAAC,CAAC,CACrD,EACA,YAAYc,EAAG,CAEX,OADgBD,GAA8B,CAElD,CACJ,EACAZ,EAAoB,IAAIK,GAAoB,MAAOA,EAAmB,EACtE,SAASS,IAA6B,CAClC,MAAO,CAAE,SAAU,EAAG,WAAY,OAAW,WAAY,OAAW,WAAY,OAAW,WAAY,MAAU,CACrH,CACO,IAAMR,GAAmB,CAC5B,MAAO,kDACP,OAAOtB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,WAAa,GACrBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,QAAQ,EAEvCA,EAAQ,aAAe,QACvBI,EAAY,OAAOJ,EAAQ,WAAYC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAExED,EAAQ,aAAe,QACvBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,UAAU,EAE1CA,EAAQ,aAAe,QACvBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,UAAU,EAE1CA,EAAQ,aAAe,QACvBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,UAAU,EAExCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAU8B,GAA2B,EAC3C,KAAOvB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJT,EAAQ,SAAWO,EAAO,MAAM,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAaI,EAAY,OAAOG,EAAQA,EAAO,OAAO,CAAC,EAC/D,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAaO,EAAO,MAAM,EAClC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAaO,EAAO,MAAM,EAClC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,WAAaO,EAAO,OAAO,EACnC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,SAAUC,EAAMD,EAAO,QAAQ,EAAIE,GAAsBF,EAAO,QAAQ,EAAI,EAC5E,WAAYC,EAAMD,EAAO,UAAU,EAAIN,EAAY,SAASM,EAAO,UAAU,EAAI,OACjF,WAAYC,EAAMD,EAAO,UAAU,EAAI,WAAW,OAAOA,EAAO,UAAU,EAAI,OAC9E,WAAYC,EAAMD,EAAO,UAAU,EAAI,WAAW,OAAOA,EAAO,UAAU,EAAI,OAC9E,WAAYC,EAAMD,EAAO,UAAU,EAAI,WAAW,OAAOA,EAAO,UAAU,EAAI,MAClF,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,WAAa,IACrBa,EAAI,SAAWC,GAAoBd,EAAQ,QAAQ,GAEnDA,EAAQ,aAAe,SACvBa,EAAI,WAAaT,EAAY,OAAOJ,EAAQ,UAAU,GAEtDA,EAAQ,aAAe,SACvBa,EAAI,WAAa,KAAK,MAAMb,EAAQ,UAAU,GAE9CA,EAAQ,aAAe,SACvBa,EAAI,WAAa,KAAK,MAAMb,EAAQ,UAAU,GAE9CA,EAAQ,aAAe,SACvBa,EAAI,WAAab,EAAQ,YAEtBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOO,GAAiB,YAAYP,GAAQ,CAAC,CAAC,CAClD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAU8B,GAA2B,EAC3C,OAAA9B,EAAQ,SAAWU,EAAO,UAAY,EACtCV,EAAQ,WAAcU,EAAO,aAAe,QAAaA,EAAO,aAAe,KACzEN,EAAY,YAAYM,EAAO,UAAU,EACzC,OACNV,EAAQ,WAAaU,EAAO,YAAc,OAC1CV,EAAQ,WAAaU,EAAO,YAAc,OAC1CV,EAAQ,WAAaU,EAAO,YAAc,OACnCV,CACX,CACJ,EACAgB,EAAoB,IAAIM,GAAiB,MAAOA,EAAgB,EAChE,SAASS,IAAkC,CACvC,MAAO,CACH,QAAS,CAAC,EACV,YAAa,OACb,cAAe,OACf,cAAe,OACf,aAAc,MAClB,CACJ,CACO,IAAMR,GAAwB,CACjC,MAAO,uDACP,OAAOvB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAW8B,KAAKhC,EAAQ,QACpBiC,GAA2B,OAAOD,EAAG/B,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE1E,OAAID,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,WAAW,EAE1CA,EAAQ,gBAAkB,QAC1BC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,aAAa,EAE7CA,EAAQ,gBAAkB,QAC1BC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,aAAa,EAE7CA,EAAQ,eAAiB,QACzBC,EAAO,OAAO,EAAE,EAAE,KAAKD,EAAQ,YAAY,EAExCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAU+B,GAAgC,EAChD,KAAOxB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,QAAQ,KAAKiC,GAA2B,OAAO1B,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC/E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcO,EAAO,KAAK,EAClC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,cAAgBO,EAAO,MAAM,EACrC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,cAAgBO,EAAO,MAAM,EACrC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,aAAeO,EAAO,KAAK,EACnC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,QAAS,WAAW,MAAM,QAAQA,GAAQ,OAAO,EAC3CA,EAAO,QAAQ,IAAKwB,GAAMD,GAA2B,SAASC,CAAC,CAAC,EAChE,CAAC,EACP,YAAavB,EAAMD,EAAO,WAAW,EAAI,WAAW,QAAQA,EAAO,WAAW,EAAI,OAClF,cAAeC,EAAMD,EAAO,aAAa,EAAI,WAAW,OAAOA,EAAO,aAAa,EAAI,OACvF,cAAeC,EAAMD,EAAO,aAAa,EAAI,WAAW,OAAOA,EAAO,aAAa,EAAI,OACvF,aAAcC,EAAMD,EAAO,YAAY,EAAI,WAAW,QAAQA,EAAO,YAAY,EAAI,MACzF,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,SAAS,SACjBa,EAAI,QAAUb,EAAQ,QAAQ,IAAKkC,GAAMD,GAA2B,OAAOC,CAAC,CAAC,GAE7ElC,EAAQ,cAAgB,SACxBa,EAAI,YAAcb,EAAQ,aAE1BA,EAAQ,gBAAkB,SAC1Ba,EAAI,cAAgB,KAAK,MAAMb,EAAQ,aAAa,GAEpDA,EAAQ,gBAAkB,SAC1Ba,EAAI,cAAgB,KAAK,MAAMb,EAAQ,aAAa,GAEpDA,EAAQ,eAAiB,SACzBa,EAAI,aAAeb,EAAQ,cAExBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOQ,GAAsB,YAAYR,GAAQ,CAAC,CAAC,CACvD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAU+B,GAAgC,EAChD,OAAA/B,EAAQ,QAAUU,EAAO,SAAS,IAAKwB,GAAMD,GAA2B,YAAYC,CAAC,CAAC,GAAK,CAAC,EAC5FlC,EAAQ,YAAcU,EAAO,aAAe,OAC5CV,EAAQ,cAAgBU,EAAO,eAAiB,OAChDV,EAAQ,cAAgBU,EAAO,eAAiB,OAChDV,EAAQ,aAAeU,EAAO,cAAgB,OACvCV,CACX,CACJ,EACAgB,EAAoB,IAAIO,GAAsB,MAAOA,EAAqB,EAC1E,SAASY,IAAuC,CAC5C,MAAO,CAAE,MAAO,GAAI,MAAO,EAAG,CAClC,CACO,IAAMF,GAA6B,CACtC,MAAO,4DACP,OAAOjC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,QAAU,IAClBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,KAAK,EAEtCA,EAAQ,QAAU,IAClBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,KAAK,EAEnCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUmC,GAAqC,EACrD,KAAO5B,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,MAAQO,EAAO,OAAO,EAC9B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,MAAQO,EAAO,OAAO,EAC9B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,MAAOC,EAAMD,EAAO,KAAK,EAAI,WAAW,OAAOA,EAAO,KAAK,EAAI,GAC/D,MAAOC,EAAMD,EAAO,KAAK,EAAI,WAAW,OAAOA,EAAO,KAAK,EAAI,EACnE,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,QAAU,KAClBa,EAAI,MAAQb,EAAQ,OAEpBA,EAAQ,QAAU,KAClBa,EAAI,MAAQb,EAAQ,OAEjBa,CACX,EACA,OAAOE,EAAM,CACT,OAAOkB,GAA2B,YAAYlB,GAAQ,CAAC,CAAC,CAC5D,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAUmC,GAAqC,EACrD,OAAAnC,EAAQ,MAAQU,EAAO,OAAS,GAChCV,EAAQ,MAAQU,EAAO,OAAS,GACzBV,CACX,CACJ,EACAgB,EAAoB,IAAIiB,GAA2B,MAAOA,EAA0B,EACpF,SAASG,IAA8B,CACnC,MAAO,CAAE,OAAQ,CAAC,CAAE,CACxB,CACO,IAAMZ,GAAoB,CAC7B,MAAO,mDACP,OAAOxB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAW8B,KAAKhC,EAAQ,OACpBD,EAAU,OAAOiC,EAAG/B,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEzD,OAAOA,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAH,QAAI,OAASG,EAAQ,EAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUoC,GAA4B,EAC5C,KAAO7B,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,OAAO,KAAKD,EAAU,OAAOQ,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC7D,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAIA,EAAO,OAAO,IAAKwB,GAAMnC,EAAU,SAASmC,CAAC,CAAC,EAAI,CAAC,CAC1G,CACJ,EACA,OAAOlC,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,QAAQ,SAChBa,EAAI,OAASb,EAAQ,OAAO,IAAKkC,GAAMnC,EAAU,OAAOmC,CAAC,CAAC,GAEvDrB,CACX,EACA,OAAOE,EAAM,CACT,OAAOS,GAAkB,YAAYT,GAAQ,CAAC,CAAC,CACnD,EACA,YAAYL,EAAQ,CAChB,IAAMV,EAAUoC,GAA4B,EAC5C,OAAApC,EAAQ,OAASU,EAAO,QAAQ,IAAKwB,GAAMnC,EAAU,YAAYmC,CAAC,CAAC,GAAK,CAAC,EAClElC,CACX,CACJ,EACAgB,EAAoB,IAAIQ,GAAkB,MAAOA,EAAiB,EAClE,SAASb,EAAM0B,EAAO,CAClB,OAAOA,GAAU,IACrB,CDx9BA,SAASC,IAAiB,CACtB,MAAO,CACH,OAAQ,CAAC,EACT,MAAO,OACP,iBAAkB,OAClB,YAAa,OACb,YAAa,OACb,GAAI,MACR,CACJ,CACO,IAAMC,GAAO,CAChB,MAAO,sCACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWC,KAAKH,EAAQ,OACpBI,EAAU,OAAOD,EAAGF,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEzD,OAAID,EAAQ,QAAU,QAClBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,KAAK,EAEtCA,EAAQ,mBAAqB,QAC7BC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,gBAAgB,EAEjDA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAE5CA,EAAQ,KAAO,QACfC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,EAAE,EAEhCC,CACX,EACA,OAAOI,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAH,QAAI,OAASG,EAAQ,GAAAH,QAAI,OAAO,OAAOG,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDN,EAAUF,GAAe,EAC/B,KAAOS,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJT,EAAQ,OAAO,KAAKI,EAAU,OAAOG,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC7D,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,MAAQO,EAAO,OAAO,EAC9B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,iBAAmBO,EAAO,OAAO,EACzC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcO,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,YAAcO,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJT,EAAQ,GAAKO,EAAO,OAAO,EAC3B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOT,CACX,EACA,SAASU,EAAQ,CACb,MAAO,CACH,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAIA,EAAO,OAAO,IAAKC,GAAMP,EAAU,SAASO,CAAC,CAAC,EAAI,CAAC,EACtG,MAAOC,GAAMF,EAAO,KAAK,EAAI,WAAW,OAAOA,EAAO,KAAK,EAAI,OAC/D,iBAAkBE,GAAMF,EAAO,gBAAgB,EAAI,WAAW,OAAOA,EAAO,gBAAgB,EAAI,OAChG,YAAaE,GAAMF,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,YAAaE,GAAMF,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,OACjF,GAAIE,GAAMF,EAAO,EAAE,EAAI,WAAW,OAAOA,EAAO,EAAE,EAAI,MAC1D,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMa,EAAM,CAAC,EACb,OAAIb,EAAQ,QAAQ,SAChBa,EAAI,OAASb,EAAQ,OAAO,IAAKW,GAAMP,EAAU,OAAOO,CAAC,CAAC,GAE1DX,EAAQ,QAAU,SAClBa,EAAI,MAAQb,EAAQ,OAEpBA,EAAQ,mBAAqB,SAC7Ba,EAAI,iBAAmBb,EAAQ,kBAE/BA,EAAQ,cAAgB,SACxBa,EAAI,YAAcb,EAAQ,aAE1BA,EAAQ,cAAgB,SACxBa,EAAI,YAAcb,EAAQ,aAE1BA,EAAQ,KAAO,SACfa,EAAI,GAAKb,EAAQ,IAEda,CACX,EACA,OAAOC,EAAM,CACT,OAAOf,GAAK,YAAYe,GAAQ,CAAC,CAAC,CACtC,EACA,YAAYJ,EAAQ,CAChB,IAAMV,EAAUF,GAAe,EAC/B,OAAAE,EAAQ,OAASU,EAAO,QAAQ,IAAKC,GAAMP,EAAU,YAAYO,CAAC,CAAC,GAAK,CAAC,EACzEX,EAAQ,MAAQU,EAAO,OAAS,OAChCV,EAAQ,iBAAmBU,EAAO,kBAAoB,OACtDV,EAAQ,YAAcU,EAAO,aAAe,OAC5CV,EAAQ,YAAcU,EAAO,aAAe,OAC5CV,EAAQ,GAAKU,EAAO,IAAM,OACnBV,CACX,CACJ,EACAe,EAAoB,IAAIhB,GAAK,MAAOA,EAAI,EACxC,SAASa,GAAMI,EAAO,CAClB,OAAOA,GAAU,IACrB,CDpIA,SAASC,IAA2B,CAChC,MAAO,CAAE,KAAM,MAAU,CAC7B,CACO,IAAMC,GAAiB,CAC1B,MAAO,gDACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,OAAS,QACjBG,GAAK,OAAOH,EAAQ,KAAMC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAExDA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUF,GAAyB,EACzC,KAAOQ,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,KAAOG,GAAK,OAAOG,EAAQA,EAAO,OAAO,CAAC,EAClD,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CAAE,KAAMC,GAAMD,EAAO,IAAI,EAAIN,GAAK,SAASM,EAAO,IAAI,EAAI,MAAU,CAC/E,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,OAAS,SACjBW,EAAI,KAAOR,GAAK,OAAOH,EAAQ,IAAI,GAEhCW,CACX,EACA,OAAOC,EAAM,CACT,OAAOb,GAAe,YAAYa,GAAQ,CAAC,CAAC,CAChD,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAUF,GAAyB,EACzC,OAAAE,EAAQ,KAAQS,EAAO,OAAS,QAAaA,EAAO,OAAS,KAAQN,GAAK,YAAYM,EAAO,IAAI,EAAI,OAC9FT,CACX,CACJ,EACAa,EAAoB,IAAId,GAAe,MAAOA,EAAc,EAC5D,SAASe,IAA+B,CACpC,MAAO,CAAE,QAAS,CAAC,EAAG,OAAQ,MAAU,CAC5C,CACO,IAAMC,GAAqB,CAC9B,MAAO,oDACP,OAAOf,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,cAAO,QAAQF,EAAQ,OAAO,EAAE,QAAQ,CAAC,CAACgB,EAAKC,CAAK,IAAM,CACtDC,GAAgC,OAAO,CAAE,IAAKF,EAAK,MAAAC,CAAM,EAAGhB,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CACjG,CAAC,EACGD,EAAQ,SAAW,QACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEpCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUc,GAA6B,EAC7C,KAAOR,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJ,IAAMW,EAASD,GAAgC,OAAOZ,EAAQA,EAAO,OAAO,CAAC,EACzEa,EAAO,QAAU,SACjBnB,EAAQ,QAAQmB,EAAO,GAAG,EAAIA,EAAO,OAEzC,SACJ,IAAK,GACD,GAAIX,IAAQ,GACR,MAEJR,EAAQ,OAASM,EAAO,OAAO,EAC/B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CACH,QAASW,GAASX,EAAO,OAAO,EAC1B,OAAO,QAAQA,EAAO,OAAO,EAAE,OAAO,CAACY,EAAK,CAACL,EAAKC,CAAK,KACrDI,EAAIL,CAAG,EAAIM,EAAe,SAASL,CAAK,EACjCI,GACR,CAAC,CAAC,EACH,CAAC,EACP,OAAQX,GAAMD,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,MACtE,CACJ,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,GAAIX,EAAQ,QAAS,CACjB,IAAMuB,EAAU,OAAO,QAAQvB,EAAQ,OAAO,EAC1CuB,EAAQ,OAAS,IACjBZ,EAAI,QAAU,CAAC,EACfY,EAAQ,QAAQ,CAAC,CAACC,EAAGC,CAAC,IAAM,CACxBd,EAAI,QAAQa,CAAC,EAAIF,EAAe,OAAOG,CAAC,CAC5C,CAAC,EAET,CACA,OAAIzB,EAAQ,SAAW,SACnBW,EAAI,OAASX,EAAQ,QAElBW,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAAmB,YAAYH,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAUc,GAA6B,EAC7C,OAAAd,EAAQ,QAAU,OAAO,QAAQS,EAAO,SAAW,CAAC,CAAC,EAAE,OAAO,CAACY,EAAK,CAACL,EAAKC,CAAK,KACvEA,IAAU,SACVI,EAAIL,CAAG,EAAIM,EAAe,YAAYL,CAAK,GAExCI,GACR,CAAC,CAAC,EACLrB,EAAQ,OAASS,EAAO,QAAU,OAC3BT,CACX,CACJ,EACAa,EAAoB,IAAIE,GAAmB,MAAOA,EAAkB,EACpE,SAASW,IAA4C,CACjD,MAAO,CAAE,IAAK,GAAI,MAAO,MAAU,CACvC,CACO,IAAMR,GAAkC,CAC3C,MAAO,iEACP,OAAOlB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,MAAQ,IAChBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,GAAG,EAEpCA,EAAQ,QAAU,QAClBsB,EAAe,OAAOtB,EAAQ,MAAOC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEnEA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAU0B,GAA0C,EAC1D,KAAOpB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,IAAMM,EAAO,OAAO,EAC5B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,MAAQsB,EAAe,OAAOhB,EAAQA,EAAO,OAAO,CAAC,EAC7D,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CACH,IAAKC,GAAMD,EAAO,GAAG,EAAI,WAAW,OAAOA,EAAO,GAAG,EAAI,GACzD,MAAOC,GAAMD,EAAO,KAAK,EAAIa,EAAe,SAASb,EAAO,KAAK,EAAI,MACzE,CACJ,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,MAAQ,KAChBW,EAAI,IAAMX,EAAQ,KAElBA,EAAQ,QAAU,SAClBW,EAAI,MAAQW,EAAe,OAAOtB,EAAQ,KAAK,GAE5CW,CACX,EACA,OAAOC,EAAM,CACT,OAAOM,GAAgC,YAAYN,GAAQ,CAAC,CAAC,CACjE,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAU0B,GAA0C,EAC1D,OAAA1B,EAAQ,IAAMS,EAAO,KAAO,GAC5BT,EAAQ,MAASS,EAAO,QAAU,QAAaA,EAAO,QAAU,KAC1Da,EAAe,YAAYb,EAAO,KAAK,EACvC,OACCT,CACX,CACJ,EACAa,EAAoB,IAAIK,GAAgC,MAAOA,EAA+B,EAC9F,SAASS,IAA8B,CACnC,MAAO,CAAE,OAAQ,MAAU,CAC/B,CACO,IAAMC,GAAoB,CAC7B,MAAO,mDACP,OAAO5B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,SAAW,QACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEpCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAU2B,GAA4B,EAC5C,KAAOrB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,OAASM,EAAO,OAAO,EAC/B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CAAE,OAAQC,GAAMD,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,MAAU,CACzF,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,SAAW,SACnBW,EAAI,OAASX,EAAQ,QAElBW,CACX,EACA,OAAOC,EAAM,CACT,OAAOgB,GAAkB,YAAYhB,GAAQ,CAAC,CAAC,CACnD,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAU2B,GAA4B,EAC5C,OAAA3B,EAAQ,OAASS,EAAO,QAAU,OAC3BT,CACX,CACJ,EACAa,EAAoB,IAAIe,GAAkB,MAAOA,EAAiB,EAClE,SAASR,GAASH,EAAO,CACrB,OAAO,OAAOA,GAAU,UAAYA,IAAU,IAClD,CACA,SAASP,GAAMO,EAAO,CAClB,OAAOA,GAAU,IACrB,CK9QA,IAAAY,GAAgB,SCAhB,IAAAC,EAAgB,SCchB,IAAIC,EAAO,KACX,GAAI,CACFA,EAAO,IAAI,YAAY,SACrB,IAAI,YAAY,OACd,IAAI,WAAW,CAEb,EAAG,GAAI,IAAK,IAEZ,EAAG,EAAG,EAAG,EAGT,EAAG,GAAI,EAEP,GAAI,EAAG,EAAG,IAEV,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAG9B,EAAG,EAAG,EAEN,EAEA,EAEA,EAEA,EAEA,EAEA,EAGA,EAAG,EAAG,EAEN,IAAK,EAAG,GAAI,EAAG,GAGf,EAAG,GAAI,EAEP,EAAG,IAAK,IAAK,IAAK,EAAG,EAErB,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAE9B,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAE9B,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAE9B,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAE9B,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAG7C,GAAI,IAAK,EAAG,EAEZ,EAAG,EAAG,GAAI,EAAG,GAEb,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GACrE,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EACnE,IAAK,GAEL,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GACrE,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EACnE,IAAK,GAEL,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GACrE,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EACnE,IAAK,GAEL,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GACrE,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EACnE,IAAK,GAEL,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GACrE,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EACnE,IAAK,EACP,CAAC,CACH,EACA,CAAC,CACH,EAAE,OACJ,MAAQ,CAER,CAYA,SAASC,EAAKC,EAAKC,EAAMC,EAAU,CAKjC,KAAK,IAAMF,EAAM,EAMjB,KAAK,KAAOC,EAAO,EAMnB,KAAK,SAAW,CAAC,CAACC,CACpB,CAyBAH,EAAK,UAAU,WAEf,OAAO,eAAeA,EAAK,UAAW,aAAc,CAAE,MAAO,EAAK,CAAC,EAQnE,SAASI,EAAOC,EAAK,CACnB,OAAQA,GAAOA,EAAI,cAAmB,EACxC,CAQA,SAASC,GAAMC,EAAO,CACpB,IAAIC,EAAI,KAAK,MAAMD,EAAQ,CAACA,CAAK,EACjC,OAAOA,EAAQ,GAAKC,EAAIA,CAC1B,CAQAR,EAAK,OAASI,EAOd,IAAIK,GAAY,CAAC,EAObC,GAAa,CAAC,EAQlB,SAASC,GAAQJ,EAAOJ,EAAU,CAChC,IAAIE,EAAKO,EAAWC,EACpB,OAAIV,GACFI,KAAW,GACNM,EAAQ,GAAKN,GAASA,EAAQ,OACjCK,EAAYF,GAAWH,CAAK,EACxBK,GAAkBA,GAExBP,EAAMS,EAASP,EAAO,EAAG,EAAI,EACzBM,IAAOH,GAAWH,CAAK,EAAIF,GACxBA,KAEPE,GAAS,GACJM,EAAQ,MAAQN,GAASA,EAAQ,OACpCK,EAAYH,GAAUF,CAAK,EACvBK,GAAkBA,GAExBP,EAAMS,EAASP,EAAOA,EAAQ,EAAI,GAAK,EAAG,EAAK,EAC3CM,IAAOJ,GAAUF,CAAK,EAAIF,GACvBA,GAEX,CASAL,EAAK,QAAUW,GAQf,SAASI,EAAWR,EAAOJ,EAAU,CACnC,GAAI,MAAMI,CAAK,EAAG,OAAOJ,EAAWa,GAAQC,EAC5C,GAAId,EAAU,CACZ,GAAII,EAAQ,EAAG,OAAOS,GACtB,GAAIT,GAASW,GAAgB,OAAOC,EACtC,KAAO,CACL,GAAIZ,GAAS,CAACa,GAAgB,OAAOC,EACrC,GAAId,EAAQ,GAAKa,GAAgB,OAAOE,EAC1C,CACA,OAAIf,EAAQ,EAAUQ,EAAW,CAACR,EAAOJ,CAAQ,EAAE,IAAI,EAChDW,EACLP,EAAQgB,GAAiB,EACxBhB,EAAQgB,GAAkB,EAC3BpB,CACF,CACF,CASAH,EAAK,WAAae,EASlB,SAASD,EAASU,EAASC,EAAUtB,EAAU,CAC7C,OAAO,IAAIH,EAAKwB,EAASC,EAAUtB,CAAQ,CAC7C,CAWAH,EAAK,SAAWc,EAShB,IAAIY,GAAU,KAAK,IASnB,SAASC,GAAWC,EAAKzB,EAAU0B,EAAO,CACxC,GAAID,EAAI,SAAW,EAAG,MAAM,MAAM,cAAc,EAQhD,GAPI,OAAOzB,GAAa,UAEtB0B,EAAQ1B,EACRA,EAAW,IAEXA,EAAW,CAAC,CAACA,EAGbyB,IAAQ,OACRA,IAAQ,YACRA,IAAQ,aACRA,IAAQ,YAER,OAAOzB,EAAWa,GAAQC,EAE5B,GADAY,EAAQA,GAAS,GACbA,EAAQ,GAAK,GAAKA,EAAO,MAAM,WAAW,OAAO,EAErD,IAAIC,EACJ,IAAKA,EAAIF,EAAI,QAAQ,GAAG,GAAK,EAAG,MAAM,MAAM,iBAAiB,EACxD,GAAIE,IAAM,EACb,OAAOH,GAAWC,EAAI,UAAU,CAAC,EAAGzB,EAAU0B,CAAK,EAAE,IAAI,EAQ3D,QAHIE,EAAehB,EAAWW,GAAQG,EAAO,CAAC,CAAC,EAE3CG,EAASf,EACJgB,EAAI,EAAGA,EAAIL,EAAI,OAAQK,GAAK,EAAG,CACtC,IAAIC,EAAO,KAAK,IAAI,EAAGN,EAAI,OAASK,CAAC,EACnC1B,EAAQ,SAASqB,EAAI,UAAUK,EAAGA,EAAIC,CAAI,EAAGL,CAAK,EACpD,GAAIK,EAAO,EAAG,CACZ,IAAIC,EAAQpB,EAAWW,GAAQG,EAAOK,CAAI,CAAC,EAC3CF,EAASA,EAAO,IAAIG,CAAK,EAAE,IAAIpB,EAAWR,CAAK,CAAC,CAClD,MACEyB,EAASA,EAAO,IAAID,CAAY,EAChCC,EAASA,EAAO,IAAIjB,EAAWR,CAAK,CAAC,CAEzC,CACA,OAAAyB,EAAO,SAAW7B,EACX6B,CACT,CAUAhC,EAAK,WAAa2B,GASlB,SAASS,EAAUC,EAAKlC,EAAU,CAChC,OAAI,OAAOkC,GAAQ,SAAiBtB,EAAWsB,EAAKlC,CAAQ,EACxD,OAAOkC,GAAQ,SAAiBV,GAAWU,EAAKlC,CAAQ,EAErDW,EACLuB,EAAI,IACJA,EAAI,KACJ,OAAOlC,GAAa,UAAYA,EAAWkC,EAAI,QACjD,CACF,CASArC,EAAK,UAAYoC,EAUjB,IAAIE,GAAiB,MAOjBC,GAAiB,GAAK,GAOtBhB,GAAiBe,GAAiBA,GAOlCpB,GAAiBK,GAAiBA,GAOlCH,GAAiBF,GAAiB,EAOlCsB,GAAa7B,GAAQ4B,EAAc,EAMnCtB,EAAON,GAAQ,CAAC,EAMpBX,EAAK,KAAOiB,EAMZ,IAAID,GAAQL,GAAQ,EAAG,EAAI,EAM3BX,EAAK,MAAQgB,GAMb,IAAIyB,GAAM9B,GAAQ,CAAC,EAMnBX,EAAK,IAAMyC,GAMX,IAAIC,GAAO/B,GAAQ,EAAG,EAAI,EAM1BX,EAAK,KAAO0C,GAMZ,IAAIC,GAAUhC,GAAQ,EAAE,EAMxBX,EAAK,QAAU2C,GAMf,IAAIrB,GAAYR,EAAS,GAAgB,WAAgB,EAAK,EAM9Dd,EAAK,UAAYsB,GAMjB,IAAIH,GAAqBL,EAAS,GAAgB,GAAgB,EAAI,EAMtEd,EAAK,mBAAqBmB,GAM1B,IAAIE,EAAYP,EAAS,EAAG,YAAgB,EAAK,EAMjDd,EAAK,UAAYqB,EAMjB,IAAIuB,EAAgB5C,EAAK,UAOzB4C,EAAc,MAAQ,UAAiB,CACrC,OAAO,KAAK,SAAW,KAAK,MAAQ,EAAI,KAAK,GAC/C,EAOAA,EAAc,SAAW,UAAoB,CAC3C,OAAI,KAAK,UACC,KAAK,OAAS,GAAKrB,IAAkB,KAAK,MAAQ,GACrD,KAAK,KAAOA,IAAkB,KAAK,MAAQ,EACpD,EAUAqB,EAAc,SAAW,SAAkBf,EAAO,CAEhD,GADAA,EAAQA,GAAS,GACbA,EAAQ,GAAK,GAAKA,EAAO,MAAM,WAAW,OAAO,EACrD,GAAI,KAAK,OAAO,EAAG,MAAO,IAC1B,GAAI,KAAK,WAAW,EAElB,GAAI,KAAK,GAAGR,CAAS,EAAG,CAGtB,IAAIwB,EAAY9B,EAAWc,CAAK,EAC9BiB,EAAM,KAAK,IAAID,CAAS,EACxBE,EAAOD,EAAI,IAAID,CAAS,EAAE,IAAI,IAAI,EACpC,OAAOC,EAAI,SAASjB,CAAK,EAAIkB,EAAK,MAAM,EAAE,SAASlB,CAAK,CAC1D,KAAO,OAAO,IAAM,KAAK,IAAI,EAAE,SAASA,CAAK,EAQ/C,QAHIE,EAAehB,EAAWW,GAAQG,EAAO,CAAC,EAAG,KAAK,QAAQ,EAC5DmB,EAAM,KACJhB,EAAS,KACA,CACX,IAAIiB,EAASD,EAAI,IAAIjB,CAAY,EAC/BmB,EAASF,EAAI,IAAIC,EAAO,IAAIlB,CAAY,CAAC,EAAE,MAAM,IAAM,EACvDoB,EAASD,EAAO,SAASrB,CAAK,EAEhC,GADAmB,EAAMC,EACFD,EAAI,OAAO,EAAG,OAAOG,EAASnB,EAEhC,KAAOmB,EAAO,OAAS,GAAGA,EAAS,IAAMA,EACzCnB,EAAS,GAAKmB,EAASnB,CAE3B,CACF,EAOAY,EAAc,YAAc,UAAuB,CACjD,OAAO,KAAK,IACd,EAOAA,EAAc,oBAAsB,UAA+B,CACjE,OAAO,KAAK,OAAS,CACvB,EAOAA,EAAc,WAAa,UAAsB,CAC/C,OAAO,KAAK,GACd,EAOAA,EAAc,mBAAqB,UAA8B,CAC/D,OAAO,KAAK,MAAQ,CACtB,EAOAA,EAAc,cAAgB,UAAyB,CACrD,GAAI,KAAK,WAAW,EAElB,OAAO,KAAK,GAAGvB,CAAS,EAAI,GAAK,KAAK,IAAI,EAAE,cAAc,EAE5D,QADIgB,EAAM,KAAK,MAAQ,EAAI,KAAK,KAAO,KAAK,IACnCe,EAAM,GAAIA,EAAM,IAAef,EAAO,GAAKe,IAAS,EAAjCA,IAAO,CACnC,OAAO,KAAK,MAAQ,EAAIA,EAAM,GAAKA,EAAM,CAC3C,EAOAR,EAAc,cAAgB,UAAyB,CAErD,IAAIS,EAAY,KAAK,MAAQ,GAE7B,OAAKA,EAED,KAAK,SAAiB,GAEnBA,IAAc,IAAM,EAAE,KAAK,MAAQ,GAAK,KAAK,OAAS,UAJtC,EAKzB,EAOAT,EAAc,OAAS,UAAkB,CACvC,OAAO,KAAK,OAAS,GAAK,KAAK,MAAQ,CACzC,EAMAA,EAAc,IAAMA,EAAc,OAOlCA,EAAc,WAAa,UAAsB,CAC/C,MAAO,CAAC,KAAK,UAAY,KAAK,KAAO,CACvC,EAOAA,EAAc,WAAa,UAAsB,CAC/C,OAAO,KAAK,UAAY,KAAK,MAAQ,CACvC,EAOAA,EAAc,MAAQ,UAAiB,CACrC,OAAQ,KAAK,IAAM,KAAO,CAC5B,EAOAA,EAAc,OAAS,UAAkB,CACvC,OAAQ,KAAK,IAAM,KAAO,CAC5B,EAQAA,EAAc,OAAS,SAAgBU,EAAO,CAE5C,OADKlD,EAAOkD,CAAK,IAAGA,EAAQlB,EAAUkB,CAAK,GAEzC,KAAK,WAAaA,EAAM,UACxB,KAAK,OAAS,KAAO,GACrBA,EAAM,OAAS,KAAO,EAEf,GACF,KAAK,OAASA,EAAM,MAAQ,KAAK,MAAQA,EAAM,GACxD,EAQAV,EAAc,GAAKA,EAAc,OAQjCA,EAAc,UAAY,SAAmBU,EAAO,CAClD,MAAO,CAAC,KAAK,GAAmBA,CAAK,CACvC,EAQAV,EAAc,IAAMA,EAAc,UAQlCA,EAAc,GAAKA,EAAc,UAQjCA,EAAc,SAAW,SAAkBU,EAAO,CAChD,OAAO,KAAK,KAAqBA,CAAK,EAAI,CAC5C,EAQAV,EAAc,GAAKA,EAAc,SAQjCA,EAAc,gBAAkB,SAAyBU,EAAO,CAC9D,OAAO,KAAK,KAAqBA,CAAK,GAAK,CAC7C,EAQAV,EAAc,IAAMA,EAAc,gBAQlCA,EAAc,GAAKA,EAAc,gBAQjCA,EAAc,YAAc,SAAqBU,EAAO,CACtD,OAAO,KAAK,KAAqBA,CAAK,EAAI,CAC5C,EAQAV,EAAc,GAAKA,EAAc,YAQjCA,EAAc,mBAAqB,SAA4BU,EAAO,CACpE,OAAO,KAAK,KAAqBA,CAAK,GAAK,CAC7C,EAQAV,EAAc,IAAMA,EAAc,mBAQlCA,EAAc,GAAKA,EAAc,mBASjCA,EAAc,QAAU,SAAiBU,EAAO,CAE9C,GADKlD,EAAOkD,CAAK,IAAGA,EAAQlB,EAAUkB,CAAK,GACvC,KAAK,GAAGA,CAAK,EAAG,MAAO,GAC3B,IAAIC,EAAU,KAAK,WAAW,EAC5BC,EAAWF,EAAM,WAAW,EAC9B,OAAIC,GAAW,CAACC,EAAiB,GAC7B,CAACD,GAAWC,EAAiB,EAE5B,KAAK,SAEHF,EAAM,OAAS,EAAI,KAAK,OAAS,GACrCA,EAAM,OAAS,KAAK,MAAQA,EAAM,MAAQ,EAAI,KAAK,MAAQ,EAC1D,GACA,EALuB,KAAK,IAAIA,CAAK,EAAE,WAAW,EAAI,GAAK,CAMjE,EASAV,EAAc,KAAOA,EAAc,QAOnCA,EAAc,OAAS,UAAkB,CACvC,MAAI,CAAC,KAAK,UAAY,KAAK,GAAGvB,CAAS,EAAUA,EAC1C,KAAK,IAAI,EAAE,IAAIoB,EAAG,CAC3B,EAOAG,EAAc,IAAMA,EAAc,OAQlCA,EAAc,IAAM,SAAaa,EAAQ,CAClCrD,EAAOqD,CAAM,IAAGA,EAASrB,EAAUqB,CAAM,GAI9C,IAAIC,EAAM,KAAK,OAAS,GACpBC,EAAM,KAAK,KAAO,MAClBC,EAAM,KAAK,MAAQ,GACnBC,EAAM,KAAK,IAAM,MAEjBC,EAAML,EAAO,OAAS,GACtBM,EAAMN,EAAO,KAAO,MACpBO,EAAMP,EAAO,MAAQ,GACrBQ,EAAMR,EAAO,IAAM,MAEnBS,EAAM,EACRC,EAAM,EACNC,EAAM,EACNC,EAAM,EACR,OAAAA,GAAOR,EAAMI,EACbG,GAAOC,IAAQ,GACfA,GAAO,MACPD,GAAOR,EAAMI,EACbG,GAAOC,IAAQ,GACfA,GAAO,MACPD,GAAOR,EAAMI,EACbG,GAAOC,IAAQ,GACfA,GAAO,MACPD,GAAOR,EAAMI,EACbI,GAAO,MACApD,EAAUsD,GAAO,GAAMC,EAAMH,GAAO,GAAMC,EAAK,KAAK,QAAQ,CACrE,EAQAvB,EAAc,SAAW,SAAkB0B,EAAY,CACrD,OAAKlE,EAAOkE,CAAU,IAAGA,EAAalC,EAAUkC,CAAU,GACnD,KAAK,IAAIA,EAAW,IAAI,CAAC,CAClC,EAQA1B,EAAc,IAAMA,EAAc,SAQlCA,EAAc,SAAW,SAAkB2B,EAAY,CACrD,GAAI,KAAK,OAAO,EAAG,OAAO,KAI1B,GAHKnE,EAAOmE,CAAU,IAAGA,EAAanC,EAAUmC,CAAU,GAGtDxE,EAAM,CACR,IAAIE,EAAMF,EAAK,IAAO,KAAK,IAAK,KAAK,KAAMwE,EAAW,IAAKA,EAAW,IAAI,EAC1E,OAAOzD,EAASb,EAAKF,EAAK,SAAY,EAAG,KAAK,QAAQ,CACxD,CAEA,GAAIwE,EAAW,OAAO,EAAG,OAAO,KAAK,SAAWvD,GAAQC,EACxD,GAAI,KAAK,GAAGI,CAAS,EAAG,OAAOkD,EAAW,MAAM,EAAIlD,EAAYJ,EAChE,GAAIsD,EAAW,GAAGlD,CAAS,EAAG,OAAO,KAAK,MAAM,EAAIA,EAAYJ,EAEhE,GAAI,KAAK,WAAW,EAClB,OAAIsD,EAAW,WAAW,EAAU,KAAK,IAAI,EAAE,IAAIA,EAAW,IAAI,CAAC,EACvD,KAAK,IAAI,EAAE,IAAIA,CAAU,EAAE,IAAI,EACtC,GAAIA,EAAW,WAAW,EAAG,OAAO,KAAK,IAAIA,EAAW,IAAI,CAAC,EAAE,IAAI,EAG1E,GAAI,KAAK,GAAG/B,EAAU,GAAK+B,EAAW,GAAG/B,EAAU,EACjD,OAAOzB,EAAW,KAAK,SAAS,EAAIwD,EAAW,SAAS,EAAG,KAAK,QAAQ,EAK1E,IAAIb,EAAM,KAAK,OAAS,GACpBC,EAAM,KAAK,KAAO,MAClBC,EAAM,KAAK,MAAQ,GACnBC,EAAM,KAAK,IAAM,MAEjBC,EAAMS,EAAW,OAAS,GAC1BR,EAAMQ,EAAW,KAAO,MACxBP,EAAMO,EAAW,MAAQ,GACzBN,EAAMM,EAAW,IAAM,MAEvBL,EAAM,EACRC,EAAM,EACNC,EAAM,EACNC,GAAM,EACR,OAAAA,IAAOR,EAAMI,EACbG,GAAOC,KAAQ,GACfA,IAAO,MACPD,GAAOR,EAAMK,EACbE,GAAOC,IAAQ,GACfA,GAAO,MACPA,GAAOP,EAAMG,EACbG,GAAOC,IAAQ,GACfA,GAAO,MACPD,GAAOR,EAAMM,EACbC,GAAOC,IAAQ,GACfA,GAAO,MACPA,GAAOP,EAAMI,EACbE,GAAOC,IAAQ,GACfA,GAAO,MACPA,GAAON,EAAME,EACbG,GAAOC,IAAQ,GACfA,GAAO,MACPD,GAAOR,EAAMO,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EACjDI,GAAO,MACApD,EAAUsD,GAAO,GAAMC,GAAMH,GAAO,GAAMC,EAAK,KAAK,QAAQ,CACrE,EAQAvB,EAAc,IAAMA,EAAc,SASlCA,EAAc,OAAS,SAAgB4B,EAAS,CAE9C,GADKpE,EAAOoE,CAAO,IAAGA,EAAUpC,EAAUoC,CAAO,GAC7CA,EAAQ,OAAO,EAAG,MAAM,MAAM,kBAAkB,EAGpD,GAAIzE,EAAM,CAIR,GACE,CAAC,KAAK,UACN,KAAK,OAAS,aACdyE,EAAQ,MAAQ,IAChBA,EAAQ,OAAS,GAGjB,OAAO,KAET,IAAIvE,GAAO,KAAK,SAAWF,EAAK,MAAWA,EAAK,OAC9C,KAAK,IACL,KAAK,KACLyE,EAAQ,IACRA,EAAQ,IACV,EACA,OAAO1D,EAASb,EAAKF,EAAK,SAAY,EAAG,KAAK,QAAQ,CACxD,CAEA,GAAI,KAAK,OAAO,EAAG,OAAO,KAAK,SAAWiB,GAAQC,EAClD,IAAIwD,EAAQzB,EAAK0B,EACjB,GAAK,KAAK,SAyBH,CAIL,GADKF,EAAQ,WAAUA,EAAUA,EAAQ,WAAW,GAChDA,EAAQ,GAAG,IAAI,EAAG,OAAOxD,GAC7B,GAAIwD,EAAQ,GAAG,KAAK,KAAK,CAAC,CAAC,EAEzB,OAAO9B,GACTgC,EAAM1D,EACR,KAlCoB,CAGlB,GAAI,KAAK,GAAGK,CAAS,EAAG,CACtB,GAAImD,EAAQ,GAAG/B,EAAG,GAAK+B,EAAQ,GAAG7B,EAAO,EACvC,OAAOtB,EACJ,GAAImD,EAAQ,GAAGnD,CAAS,EAAG,OAAOoB,GAGrC,IAAIkC,EAAW,KAAK,IAAI,CAAC,EAEzB,OADAF,EAASE,EAAS,IAAIH,CAAO,EAAE,IAAI,CAAC,EAChCC,EAAO,GAAGxD,CAAI,EACTuD,EAAQ,WAAW,EAAI/B,GAAME,IAEpCK,EAAM,KAAK,IAAIwB,EAAQ,IAAIC,CAAM,CAAC,EAClCC,EAAMD,EAAO,IAAIzB,EAAI,IAAIwB,CAAO,CAAC,EAC1BE,EAGb,SAAWF,EAAQ,GAAGnD,CAAS,EAAG,OAAO,KAAK,SAAWL,GAAQC,EACjE,GAAI,KAAK,WAAW,EAClB,OAAIuD,EAAQ,WAAW,EAAU,KAAK,IAAI,EAAE,IAAIA,EAAQ,IAAI,CAAC,EACtD,KAAK,IAAI,EAAE,IAAIA,CAAO,EAAE,IAAI,EAC9B,GAAIA,EAAQ,WAAW,EAAG,OAAO,KAAK,IAAIA,EAAQ,IAAI,CAAC,EAAE,IAAI,EACpEE,EAAMzD,CACR,CAiBA,IADA+B,EAAM,KACCA,EAAI,IAAIwB,CAAO,GAAG,CAGvBC,EAAS,KAAK,IAAI,EAAG,KAAK,MAAMzB,EAAI,SAAS,EAAIwB,EAAQ,SAAS,CAAC,CAAC,EAUpE,QANII,EAAO,KAAK,KAAK,KAAK,IAAIH,CAAM,EAAI,KAAK,GAAG,EAC9CI,EAAQD,GAAQ,GAAK,EAAIlD,GAAQ,EAAGkD,EAAO,EAAE,EAG7CE,EAAY/D,EAAW0D,CAAM,EAC7BM,EAAYD,EAAU,IAAIN,CAAO,EAC5BO,EAAU,WAAW,GAAKA,EAAU,GAAG/B,CAAG,GAC/CyB,GAAUI,EACVC,EAAY/D,EAAW0D,EAAQ,KAAK,QAAQ,EAC5CM,EAAYD,EAAU,IAAIN,CAAO,EAK/BM,EAAU,OAAO,IAAGA,EAAYrC,IAEpCiC,EAAMA,EAAI,IAAII,CAAS,EACvB9B,EAAMA,EAAI,IAAI+B,CAAS,CACzB,CACA,OAAOL,CACT,EAQA9B,EAAc,IAAMA,EAAc,OAQlCA,EAAc,OAAS,SAAgB4B,EAAS,CAI9C,GAHKpE,EAAOoE,CAAO,IAAGA,EAAUpC,EAAUoC,CAAO,GAG7CzE,EAAM,CACR,IAAIE,GAAO,KAAK,SAAWF,EAAK,MAAWA,EAAK,OAC9C,KAAK,IACL,KAAK,KACLyE,EAAQ,IACRA,EAAQ,IACV,EACA,OAAO1D,EAASb,EAAKF,EAAK,SAAY,EAAG,KAAK,QAAQ,CACxD,CAEA,OAAO,KAAK,IAAI,KAAK,IAAIyE,CAAO,EAAE,IAAIA,CAAO,CAAC,CAChD,EAQA5B,EAAc,IAAMA,EAAc,OAQlCA,EAAc,IAAMA,EAAc,OAOlCA,EAAc,IAAM,UAAe,CACjC,OAAO9B,EAAS,CAAC,KAAK,IAAK,CAAC,KAAK,KAAM,KAAK,QAAQ,CACtD,EAOA8B,EAAc,kBAAoB,UAA6B,CAC7D,OAAO,KAAK,KAAO,KAAK,MAAM,KAAK,IAAI,EAAI,KAAK,MAAM,KAAK,GAAG,EAAI,EACpE,EAQAA,EAAc,IAAMA,EAAc,kBAOlCA,EAAc,mBAAqB,UAA8B,CAC/D,OAAO,KAAK,IAAMtC,GAAM,KAAK,GAAG,EAAIA,GAAM,KAAK,IAAI,EAAI,EACzD,EAQAsC,EAAc,IAAMA,EAAc,mBAQlCA,EAAc,IAAM,SAAaU,EAAO,CACtC,OAAKlD,EAAOkD,CAAK,IAAGA,EAAQlB,EAAUkB,CAAK,GACpCxC,EAAS,KAAK,IAAMwC,EAAM,IAAK,KAAK,KAAOA,EAAM,KAAM,KAAK,QAAQ,CAC7E,EAQAV,EAAc,GAAK,SAAYU,EAAO,CACpC,OAAKlD,EAAOkD,CAAK,IAAGA,EAAQlB,EAAUkB,CAAK,GACpCxC,EAAS,KAAK,IAAMwC,EAAM,IAAK,KAAK,KAAOA,EAAM,KAAM,KAAK,QAAQ,CAC7E,EAQAV,EAAc,IAAM,SAAaU,EAAO,CACtC,OAAKlD,EAAOkD,CAAK,IAAGA,EAAQlB,EAAUkB,CAAK,GACpCxC,EAAS,KAAK,IAAMwC,EAAM,IAAK,KAAK,KAAOA,EAAM,KAAM,KAAK,QAAQ,CAC7E,EAQAV,EAAc,UAAY,SAAmBoC,EAAS,CAEpD,OADI5E,EAAO4E,CAAO,IAAGA,EAAUA,EAAQ,MAAM,IACxCA,GAAW,MAAQ,EAAU,KACzBA,EAAU,GACVlE,EACL,KAAK,KAAOkE,EACX,KAAK,MAAQA,EAAY,KAAK,MAAS,GAAKA,EAC7C,KAAK,QACP,EACUlE,EAAS,EAAG,KAAK,KAAQkE,EAAU,GAAK,KAAK,QAAQ,CACnE,EAQApC,EAAc,IAAMA,EAAc,UAQlCA,EAAc,WAAa,SAAoBoC,EAAS,CAEtD,OADI5E,EAAO4E,CAAO,IAAGA,EAAUA,EAAQ,MAAM,IACxCA,GAAW,MAAQ,EAAU,KACzBA,EAAU,GACVlE,EACJ,KAAK,MAAQkE,EAAY,KAAK,MAAS,GAAKA,EAC7C,KAAK,MAAQA,EACb,KAAK,QACP,EAEOlE,EACL,KAAK,MAASkE,EAAU,GACxB,KAAK,MAAQ,EAAI,EAAI,GACrB,KAAK,QACP,CACJ,EAQApC,EAAc,IAAMA,EAAc,WAQlCA,EAAc,mBAAqB,SAA4BoC,EAAS,CAEtE,OADI5E,EAAO4E,CAAO,IAAGA,EAAUA,EAAQ,MAAM,IACxCA,GAAW,MAAQ,EAAU,KAC9BA,EAAU,GACLlE,EACJ,KAAK,MAAQkE,EAAY,KAAK,MAAS,GAAKA,EAC7C,KAAK,OAASA,EACd,KAAK,QACP,EACEA,IAAY,GAAWlE,EAAS,KAAK,KAAM,EAAG,KAAK,QAAQ,EACxDA,EAAS,KAAK,OAAUkE,EAAU,GAAK,EAAG,KAAK,QAAQ,CAChE,EAQApC,EAAc,KAAOA,EAAc,mBAQnCA,EAAc,MAAQA,EAAc,mBAQpCA,EAAc,WAAa,SAAoBoC,EAAS,CACtD,IAAIC,EAEJ,OADI7E,EAAO4E,CAAO,IAAGA,EAAUA,EAAQ,MAAM,IACxCA,GAAW,MAAQ,EAAU,KAC9BA,IAAY,GAAWlE,EAAS,KAAK,KAAM,KAAK,IAAK,KAAK,QAAQ,EAClEkE,EAAU,IACZC,EAAI,GAAKD,EACFlE,EACJ,KAAK,KAAOkE,EAAY,KAAK,OAASC,EACtC,KAAK,MAAQD,EAAY,KAAK,MAAQC,EACvC,KAAK,QACP,IAEFD,GAAW,GACXC,EAAI,GAAKD,EACFlE,EACJ,KAAK,MAAQkE,EAAY,KAAK,MAAQC,EACtC,KAAK,KAAOD,EAAY,KAAK,OAASC,EACvC,KAAK,QACP,EACF,EAOArC,EAAc,KAAOA,EAAc,WAQnCA,EAAc,YAAc,SAAqBoC,EAAS,CACxD,IAAIC,EAEJ,OADI7E,EAAO4E,CAAO,IAAGA,EAAUA,EAAQ,MAAM,IACxCA,GAAW,MAAQ,EAAU,KAC9BA,IAAY,GAAWlE,EAAS,KAAK,KAAM,KAAK,IAAK,KAAK,QAAQ,EAClEkE,EAAU,IACZC,EAAI,GAAKD,EACFlE,EACJ,KAAK,MAAQmE,EAAM,KAAK,MAAQD,EAChC,KAAK,KAAOC,EAAM,KAAK,OAASD,EACjC,KAAK,QACP,IAEFA,GAAW,GACXC,EAAI,GAAKD,EACFlE,EACJ,KAAK,KAAOmE,EAAM,KAAK,OAASD,EAChC,KAAK,MAAQC,EAAM,KAAK,MAAQD,EACjC,KAAK,QACP,EACF,EAOApC,EAAc,KAAOA,EAAc,YAOnCA,EAAc,SAAW,UAAoB,CAC3C,OAAK,KAAK,SACH9B,EAAS,KAAK,IAAK,KAAK,KAAM,EAAK,EADf,IAE7B,EAOA8B,EAAc,WAAa,UAAsB,CAC/C,OAAI,KAAK,SAAiB,KACnB9B,EAAS,KAAK,IAAK,KAAK,KAAM,EAAI,CAC3C,EAQA8B,EAAc,QAAU,SAAiBsC,EAAI,CAC3C,OAAOA,EAAK,KAAK,UAAU,EAAI,KAAK,UAAU,CAChD,EAOAtC,EAAc,UAAY,UAAqB,CAC7C,IAAIuC,EAAK,KAAK,KACZC,EAAK,KAAK,IACZ,MAAO,CACLA,EAAK,IACJA,IAAO,EAAK,IACZA,IAAO,GAAM,IACdA,IAAO,GACPD,EAAK,IACJA,IAAO,EAAK,IACZA,IAAO,GAAM,IACdA,IAAO,EACT,CACF,EAOAvC,EAAc,UAAY,UAAqB,CAC7C,IAAIuC,EAAK,KAAK,KACZC,EAAK,KAAK,IACZ,MAAO,CACLD,IAAO,GACNA,IAAO,GAAM,IACbA,IAAO,EAAK,IACbA,EAAK,IACLC,IAAO,GACNA,IAAO,GAAM,IACbA,IAAO,EAAK,IACbA,EAAK,GACP,CACF,EASApF,EAAK,UAAY,SAAmBqF,EAAOlF,EAAU+E,EAAI,CACvD,OAAOA,EACHlF,EAAK,YAAYqF,EAAOlF,CAAQ,EAChCH,EAAK,YAAYqF,EAAOlF,CAAQ,CACtC,EAQAH,EAAK,YAAc,SAAqBqF,EAAOlF,EAAU,CACvD,OAAO,IAAIH,EACTqF,EAAM,CAAC,EAAKA,EAAM,CAAC,GAAK,EAAMA,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,GAC7DA,EAAM,CAAC,EAAKA,EAAM,CAAC,GAAK,EAAMA,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,GAC7DlF,CACF,CACF,EAQAH,EAAK,YAAc,SAAqBqF,EAAOlF,EAAU,CACvD,OAAO,IAAIH,EACRqF,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,EAAKA,EAAM,CAAC,EAC9DA,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,GAAOA,EAAM,CAAC,GAAK,EAAKA,EAAM,CAAC,EAC/DlF,CACF,CACF,EAGI,OAAO,QAAW,aAQpBH,EAAK,WAAa,SAAoBO,EAAOJ,EAAU,CACrD,IAAIqB,EAAU,OAAO,OAAO,OAAO,GAAIjB,CAAK,CAAC,EACzCkB,EAAW,OAAO,OAAO,OAAO,GAAIlB,GAAS,OAAO,EAAE,CAAC,CAAC,EAC5D,OAAOO,EAASU,EAASC,EAAUtB,CAAQ,CAC7C,EAGAH,EAAK,UAAY,SAA6BO,EAAOJ,EAAU,CAC7D,OAAI,OAAOI,GAAU,SAAiBP,EAAK,WAAWO,EAAOJ,CAAQ,EAC9DiC,EAAU7B,EAAOJ,CAAQ,CAClC,EAOAyC,EAAc,SAAW,UAAoB,CAC3C,IAAI0C,EAAY,OAAO,KAAK,MAAQ,CAAC,EACjCC,EAAa,OAAO,KAAK,SAAW,KAAK,OAAS,EAAI,KAAK,IAAI,EACnE,OAAQA,GAAc,OAAO,EAAE,EAAKD,CACtC,GAGF,IAAOE,GAAQxF,ECpiDf,IAAAyF,GAAgB,SAEhB,SAASC,IAAsB,CAC3B,MAAO,CAAE,QAAS,EAAG,MAAO,CAAE,CAClC,CACO,IAAMC,GAAY,CACrB,MAAO,4BACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,GACpBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,OAAO,EAEtCA,EAAQ,QAAU,GAClBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,KAAK,EAElCC,CACX,EACA,OAAOE,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAD,QAAI,OAASC,EAAQ,GAAAD,QAAI,OAAO,OAAOC,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDJ,EAAUF,GAAoB,EACpC,KAAOO,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJP,EAAQ,QAAUQ,GAAaH,EAAO,MAAM,CAAC,EAC7C,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJP,EAAQ,MAAQK,EAAO,MAAM,EAC7B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOP,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CACH,QAASC,GAAMD,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,EACrE,MAAOC,GAAMD,EAAO,KAAK,EAAI,WAAW,OAAOA,EAAO,KAAK,EAAI,CACnE,CACJ,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,UAAY,IACpBW,EAAI,QAAU,KAAK,MAAMX,EAAQ,OAAO,GAExCA,EAAQ,QAAU,IAClBW,EAAI,MAAQ,KAAK,MAAMX,EAAQ,KAAK,GAEjCW,CACX,EACA,OAAOC,EAAM,CACT,OAAOb,GAAU,YAAYa,GAAQ,CAAC,CAAC,CAC3C,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAUF,GAAoB,EACpC,OAAAE,EAAQ,QAAUS,EAAO,SAAW,EACpCT,EAAQ,MAAQS,EAAO,OAAS,EACzBT,CACX,CACJ,EACAa,EAAoB,IAAId,GAAU,MAAOA,EAAS,EAClD,SAASS,GAAaM,EAAM,CACxB,GAAIA,EAAK,GAAG,WAAW,OAAO,gBAAgB,EAC1C,MAAM,IAAI,WAAW,MAAM,8CAA8C,EAE7E,OAAOA,EAAK,SAAS,CACzB,CACI,GAAAZ,QAAI,KAAK,OAASa,KAClB,GAAAb,QAAI,KAAK,KAAOa,GAChB,GAAAb,QAAI,UAAU,GAElB,SAASQ,GAAMM,EAAO,CAClB,OAAOA,GAAU,IACrB,CF/EO,IAAIC,IACV,SAAUA,EAAe,CAEtBA,EAAcA,EAAc,uBAA4B,CAAC,EAAI,yBAE7DA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAE9CA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,aAAkB,EAAE,EAAI,cACxD,GAAGA,KAAkBA,GAAgB,CAAC,EAAE,EACjC,SAASC,GAAsBC,EAAQ,CAC1C,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,yBACD,OAAOF,GAAc,uBACzB,IAAK,GACL,IAAK,UACD,OAAOA,GAAc,QACzB,IAAK,GACL,IAAK,UACD,OAAOA,GAAc,QACzB,IAAK,GACL,IAAK,eACL,QACI,OAAOA,GAAc,YAC7B,CACJ,CACO,SAASG,GAAoBD,EAAQ,CACxC,OAAQA,EAAQ,CACZ,KAAKF,GAAc,uBACf,MAAO,GACX,KAAKA,GAAc,QACf,MAAO,GACX,KAAKA,GAAc,QACf,MAAO,GACX,KAAKA,GAAc,aACnB,QACI,MAAO,EACf,CACJ,CAEO,IAAII,GACV,SAAUA,EAAO,CAEdA,EAAMA,EAAM,cAAmB,CAAC,EAAI,gBAEpCA,EAAMA,EAAM,YAAiB,CAAC,EAAI,cAElCA,EAAMA,EAAM,eAAoB,CAAC,EAAI,iBAErCA,EAAMA,EAAM,uBAA4B,CAAC,EAAI,yBAC7CA,EAAMA,EAAM,aAAkB,EAAE,EAAI,cACxC,GAAGA,IAAUA,EAAQ,CAAC,EAAE,EACjB,SAASC,GAAcH,EAAQ,CAClC,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,gBACD,OAAOE,EAAM,cACjB,IAAK,GACL,IAAK,cACD,OAAOA,EAAM,YACjB,IAAK,GACL,IAAK,iBACD,OAAOA,EAAM,eACjB,IAAK,GACL,IAAK,yBACD,OAAOA,EAAM,uBACjB,IAAK,GACL,IAAK,eACL,QACI,OAAOA,EAAM,YACrB,CACJ,CACO,SAASE,GAAYJ,EAAQ,CAChC,OAAQA,EAAQ,CACZ,KAAKE,EAAM,cACP,MAAO,GACX,KAAKA,EAAM,YACP,MAAO,GACX,KAAKA,EAAM,eACP,MAAO,GACX,KAAKA,EAAM,uBACP,MAAO,GACX,KAAKA,EAAM,aACX,QACI,MAAO,EACf,CACJ,CACA,SAASG,IAA0B,CAC/B,MAAO,CAAE,QAAS,GAAI,YAAa,GAAI,OAAQ,CAAC,EAAG,cAAe,EAAG,UAAW,MAAU,CAC9F,CACO,IAAMC,GAAgB,CACzB,MAAO,gDACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CACtCF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,cAAgB,IACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEhDC,EAAO,OAAO,EAAE,EAAE,KAAK,EACvB,QAAWE,KAAKH,EAAQ,OACpBC,EAAO,MAAME,CAAC,EAElB,OAAAF,EAAO,OAAO,EACVD,EAAQ,gBAAkB,GAC1BC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,aAAa,EAE7CA,EAAQ,YAAc,QACtBI,GAAU,OAAOC,GAAYL,EAAQ,SAAS,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE/EA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUF,GAAwB,EACxC,KAAOU,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GAAI,CACZV,EAAQ,OAAO,KAAKQ,EAAO,MAAM,CAAC,EAClC,QACJ,CACA,GAAIE,IAAQ,GAAI,CACZ,IAAMC,EAAOH,EAAO,OAAO,EAAIA,EAAO,IACtC,KAAOA,EAAO,IAAMG,GAChBX,EAAQ,OAAO,KAAKQ,EAAO,MAAM,CAAC,EAEtC,QACJ,CACA,MACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,cAAgBQ,EAAO,MAAM,EACrC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,UAAYY,GAAcR,GAAU,OAAOI,EAAQA,EAAO,OAAO,CAAC,CAAC,EAC3E,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CACH,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,YAAaoB,EAAMpB,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,GACjF,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAIA,EAAO,OAAO,IAAKqB,GAAMlB,GAAckB,CAAC,CAAC,EAAI,CAAC,EACjG,cAAeD,EAAMpB,EAAO,aAAa,EAAID,GAAsBC,EAAO,aAAa,EAAI,EAC3F,UAAWoB,EAAMpB,EAAO,SAAS,EAAIsB,GAAkBtB,EAAO,SAAS,EAAI,MAC/E,CACJ,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEtBA,EAAQ,cAAgB,KACxBgB,EAAI,YAAchB,EAAQ,aAE1BA,EAAQ,QAAQ,SAChBgB,EAAI,OAAShB,EAAQ,OAAO,IAAKc,GAAMjB,GAAYiB,CAAC,CAAC,GAErDd,EAAQ,gBAAkB,IAC1BgB,EAAI,cAAgBtB,GAAoBM,EAAQ,aAAa,GAE7DA,EAAQ,YAAc,SACtBgB,EAAI,UAAYhB,EAAQ,UAAU,YAAY,GAE3CgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOlB,GAAc,YAAYkB,GAAQ,CAAC,CAAC,CAC/C,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUF,GAAwB,EACxC,OAAAE,EAAQ,QAAUP,EAAO,SAAW,GACpCO,EAAQ,YAAcP,EAAO,aAAe,GAC5CO,EAAQ,OAASP,EAAO,QAAQ,IAAKqB,GAAMA,CAAC,GAAK,CAAC,EAClDd,EAAQ,cAAgBP,EAAO,eAAiB,EAChDO,EAAQ,UAAYP,EAAO,WAAa,OACjCO,CACX,CACJ,EACAkB,EAAoB,IAAInB,GAAc,MAAOA,EAAa,EAC1D,SAASoB,IAAsB,CAC3B,MAAO,CAAE,QAAS,GAAI,QAAS,EAAG,CACtC,CACO,IAAMC,GAAY,CACrB,MAAO,4CACP,OAAOpB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAErCC,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUmB,GAAoB,EACpC,KAAOX,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CACH,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,EACzE,CACJ,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEtBA,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEnBgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAAU,YAAYH,GAAQ,CAAC,CAAC,CAC3C,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUmB,GAAoB,EACpC,OAAAnB,EAAQ,QAAUP,EAAO,SAAW,GACpCO,EAAQ,QAAUP,EAAO,SAAW,GAC7BO,CACX,CACJ,EACAkB,EAAoB,IAAIE,GAAU,MAAOA,EAAS,EAClD,SAASC,IAA6C,CAClD,MAAO,CAAE,OAAQ,EAAG,CACxB,CACO,IAAMC,GAAmC,CAC5C,MAAO,mEACP,OAAOtB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,SAAW,IACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEpCC,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUqB,GAA2C,EAC3D,KAAOb,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,OAASQ,EAAO,OAAO,EAC/B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CAAE,OAAQoB,EAAMpB,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,EAAG,CAClF,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,SAAW,KACnBgB,EAAI,OAAShB,EAAQ,QAElBgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOK,GAAiC,YAAYL,GAAQ,CAAC,CAAC,CAClE,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUqB,GAA2C,EAC3D,OAAArB,EAAQ,OAASP,EAAO,QAAU,GAC3BO,CACX,CACJ,EACAkB,EAAoB,IAAII,GAAiC,MAAOA,EAAgC,EAChG,SAASC,IAA8C,CACnD,MAAO,CAAE,eAAgB,CAAC,EAAG,WAAY,CAAC,CAAE,CAChD,CACO,IAAMC,GAAoC,CAC7C,MAAO,oEACP,OAAOxB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWC,KAAKH,EAAQ,eACpBD,GAAc,OAAOI,EAAGF,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE7D,QAAWE,KAAKH,EAAQ,WACpBoB,GAAU,OAAOjB,EAAGF,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEzD,OAAOA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUuB,GAA4C,EAC5D,KAAOf,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,eAAe,KAAKD,GAAc,OAAOS,EAAQA,EAAO,OAAO,CAAC,CAAC,EACzE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,WAAW,KAAKoB,GAAU,OAAOZ,EAAQA,EAAO,OAAO,CAAC,CAAC,EACjE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CACH,eAAgB,WAAW,MAAM,QAAQA,GAAQ,cAAc,EACzDA,EAAO,eAAe,IAAKqB,GAAMf,GAAc,SAASe,CAAC,CAAC,EAC1D,CAAC,EACP,WAAY,WAAW,MAAM,QAAQrB,GAAQ,UAAU,EACjDA,EAAO,WAAW,IAAKqB,GAAMM,GAAU,SAASN,CAAC,CAAC,EAClD,CAAC,CACX,CACJ,EACA,OAAOd,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,gBAAgB,SACxBgB,EAAI,eAAiBhB,EAAQ,eAAe,IAAKc,GAAMf,GAAc,OAAOe,CAAC,CAAC,GAE9Ed,EAAQ,YAAY,SACpBgB,EAAI,WAAahB,EAAQ,WAAW,IAAKc,GAAMM,GAAU,OAAON,CAAC,CAAC,GAE/DE,CACX,EACA,OAAOC,EAAM,CACT,OAAOO,GAAkC,YAAYP,GAAQ,CAAC,CAAC,CACnE,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUuB,GAA4C,EAC5D,OAAAvB,EAAQ,eAAiBP,EAAO,gBAAgB,IAAKqB,GAAMf,GAAc,YAAYe,CAAC,CAAC,GAAK,CAAC,EAC7Fd,EAAQ,WAAaP,EAAO,YAAY,IAAKqB,GAAMM,GAAU,YAAYN,CAAC,CAAC,GAAK,CAAC,EAC1Ed,CACX,CACJ,EACAkB,EAAoB,IAAIM,GAAkC,MAAOA,EAAiC,EAClG,SAASC,IAAsC,CAC3C,MAAO,CAAE,OAAQ,GAAI,QAAS,GAAI,YAAa,GAAI,OAAQ,CAAC,CAAE,CAClE,CACO,IAAMC,GAA4B,CACrC,MAAO,4DACP,OAAO1B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CACtCF,EAAQ,SAAW,IACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEvCA,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,cAAgB,IACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEhDC,EAAO,OAAO,EAAE,EAAE,KAAK,EACvB,QAAWE,KAAKH,EAAQ,OACpBC,EAAO,MAAME,CAAC,EAElB,OAAAF,EAAO,OAAO,EACPA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUyB,GAAoC,EACpD,KAAOjB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,OAASQ,EAAO,OAAO,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,SACJ,IAAK,GACD,GAAIE,IAAQ,GAAI,CACZV,EAAQ,OAAO,KAAKQ,EAAO,MAAM,CAAC,EAClC,QACJ,CACA,GAAIE,IAAQ,GAAI,CACZ,IAAMC,EAAOH,EAAO,OAAO,EAAIA,EAAO,IACtC,KAAOA,EAAO,IAAMG,GAChBX,EAAQ,OAAO,KAAKQ,EAAO,MAAM,CAAC,EAEtC,QACJ,CACA,KACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CACH,OAAQoB,EAAMpB,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,GAClE,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,YAAaoB,EAAMpB,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,GACjF,OAAQ,WAAW,MAAM,QAAQA,GAAQ,MAAM,EAAIA,EAAO,OAAO,IAAKqB,GAAMlB,GAAckB,CAAC,CAAC,EAAI,CAAC,CACrG,CACJ,EACA,OAAOd,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,SAAW,KACnBgB,EAAI,OAAShB,EAAQ,QAErBA,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEtBA,EAAQ,cAAgB,KACxBgB,EAAI,YAAchB,EAAQ,aAE1BA,EAAQ,QAAQ,SAChBgB,EAAI,OAAShB,EAAQ,OAAO,IAAKc,GAAMjB,GAAYiB,CAAC,CAAC,GAElDE,CACX,EACA,OAAOC,EAAM,CACT,OAAOS,GAA0B,YAAYT,GAAQ,CAAC,CAAC,CAC3D,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUyB,GAAoC,EACpD,OAAAzB,EAAQ,OAASP,EAAO,QAAU,GAClCO,EAAQ,QAAUP,EAAO,SAAW,GACpCO,EAAQ,YAAcP,EAAO,aAAe,GAC5CO,EAAQ,OAASP,EAAO,QAAQ,IAAKqB,GAAMA,CAAC,GAAK,CAAC,EAC3Cd,CACX,CACJ,EACAkB,EAAoB,IAAIQ,GAA0B,MAAOA,EAAyB,EAClF,SAASC,IAAuC,CAC5C,MAAO,CAAE,MAAO,MAAU,CAC9B,CACO,IAAMC,GAA6B,CACtC,MAAO,6DACP,OAAO5B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,QAAU,QAClB6B,EAAa,OAAO7B,EAAQ,MAAOC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjEA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAU2B,GAAqC,EACrD,KAAOnB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,MAAQ6B,EAAa,OAAOrB,EAAQA,EAAO,OAAO,CAAC,EAC3D,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CAAE,MAAOoB,EAAMpB,EAAO,KAAK,EAAIoC,EAAa,SAASpC,EAAO,KAAK,EAAI,MAAU,CAC1F,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,QAAU,SAClBgB,EAAI,MAAQa,EAAa,OAAO7B,EAAQ,KAAK,GAE1CgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOW,GAA2B,YAAYX,GAAQ,CAAC,CAAC,CAC5D,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAU2B,GAAqC,EACrD,OAAA3B,EAAQ,MAASP,EAAO,QAAU,QAAaA,EAAO,QAAU,KAC1DoC,EAAa,YAAYpC,EAAO,KAAK,EACrC,OACCO,CACX,CACJ,EACAkB,EAAoB,IAAIU,GAA2B,MAAOA,EAA0B,EACpF,SAASE,IAAuC,CAC5C,MAAO,CAAE,QAAS,GAAI,OAAQ,GAAI,YAAa,EAAG,CACtD,CACO,IAAMC,GAA6B,CACtC,MAAO,6DACP,OAAO/B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,SAAW,IACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEvCA,EAAQ,cAAgB,IACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEzCC,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAU8B,GAAqC,EACrD,KAAOtB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,OAASQ,EAAO,OAAO,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJV,EAAQ,YAAcQ,EAAO,OAAO,EACpC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CACH,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,OAAQoB,EAAMpB,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,GAClE,YAAaoB,EAAMpB,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,EACrF,CACJ,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEtBA,EAAQ,SAAW,KACnBgB,EAAI,OAAShB,EAAQ,QAErBA,EAAQ,cAAgB,KACxBgB,EAAI,YAAchB,EAAQ,aAEvBgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOc,GAA2B,YAAYd,GAAQ,CAAC,CAAC,CAC5D,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAU8B,GAAqC,EACrD,OAAA9B,EAAQ,QAAUP,EAAO,SAAW,GACpCO,EAAQ,OAASP,EAAO,QAAU,GAClCO,EAAQ,YAAcP,EAAO,aAAe,GACrCO,CACX,CACJ,EACAkB,EAAoB,IAAIa,GAA2B,MAAOA,EAA0B,EACpF,SAASC,IAAwC,CAC7C,MAAO,CAAE,MAAO,MAAU,CAC9B,CACO,IAAMC,GAA8B,CACvC,MAAO,8DACP,OAAOjC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,QAAU,QAClB6B,EAAa,OAAO7B,EAAQ,MAAOC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEjEA,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUgC,GAAsC,EACtD,KAAOxB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,MAAQ6B,EAAa,OAAOrB,EAAQA,EAAO,OAAO,CAAC,EAC3D,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CAAE,MAAOoB,EAAMpB,EAAO,KAAK,EAAIoC,EAAa,SAASpC,EAAO,KAAK,EAAI,MAAU,CAC1F,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,QAAU,SAClBgB,EAAI,MAAQa,EAAa,OAAO7B,EAAQ,KAAK,GAE1CgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOgB,GAA4B,YAAYhB,GAAQ,CAAC,CAAC,CAC7D,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUgC,GAAsC,EACtD,OAAAhC,EAAQ,MAASP,EAAO,QAAU,QAAaA,EAAO,QAAU,KAC1DoC,EAAa,YAAYpC,EAAO,KAAK,EACrC,OACCO,CACX,CACJ,EACAkB,EAAoB,IAAIe,GAA4B,MAAOA,EAA2B,EACtF,SAASC,IAAyB,CAC9B,MAAO,CAAE,QAAS,EAAG,CACzB,CACO,IAAML,EAAe,CACxB,MAAO,+CACP,OAAO7B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAErCC,CACX,EACA,OAAOK,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAJ,QAAI,OAASI,EAAQ,EAAAJ,QAAI,OAAO,OAAOI,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDP,EAAUkC,GAAuB,EACvC,KAAO1B,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJV,EAAQ,QAAUQ,EAAO,OAAO,EAChC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOV,CACX,EACA,SAASP,EAAQ,CACb,MAAO,CAAE,QAASoB,EAAMpB,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,EAAG,CACrF,EACA,OAAOO,EAAS,CACZ,IAAMgB,EAAM,CAAC,EACb,OAAIhB,EAAQ,UAAY,KACpBgB,EAAI,QAAUhB,EAAQ,SAEnBgB,CACX,EACA,OAAOC,EAAM,CACT,OAAOY,EAAa,YAAYZ,GAAQ,CAAC,CAAC,CAC9C,EACA,YAAYxB,EAAQ,CAChB,IAAMO,EAAUkC,GAAuB,EACvC,OAAAlC,EAAQ,QAAUP,EAAO,SAAW,GAC7BO,CACX,CACJ,EACAkB,EAAoB,IAAIW,EAAa,MAAOA,CAAY,EACxD,SAASxB,GAAY8B,EAAM,CACvB,IAAMC,EAAU,KAAK,MAAMD,EAAK,QAAQ,EAAI,GAAI,EAC1CE,EAASF,EAAK,QAAQ,EAAI,IAAQ,IACxC,MAAO,CAAE,QAAAC,EAAS,MAAAC,CAAM,CAC5B,CACA,SAASzB,GAAc0B,EAAG,CACtB,IAAIC,GAAUD,EAAE,SAAW,GAAK,IAChC,OAAAC,IAAWD,EAAE,OAAS,GAAK,IACpB,IAAI,WAAW,KAAKC,CAAM,CACrC,CACA,SAASxB,GAAkByB,EAAG,CAC1B,OAAIA,aAAa,WAAW,KACjBA,EAEF,OAAOA,GAAM,SACX,IAAI,WAAW,KAAKA,CAAC,EAGrB5B,GAAcR,GAAU,SAASoC,CAAC,CAAC,CAElD,CACA,SAAS3B,EAAM4B,EAAO,CAClB,OAAOA,GAAU,IACrB,CDlwBA,SAASC,IAA+B,CACpC,MAAO,CAAE,OAAQ,OAAW,QAAS,OAAW,YAAa,MAAU,CAC3E,CACO,IAAMC,GAAqB,CAC9B,MAAO,+CACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,SAAW,QACnBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,MAAM,EAEvCA,EAAQ,UAAY,QACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,cAAgB,QACxBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,WAAW,EAEzCC,CACX,EACA,OAAOE,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAD,QAAI,OAASC,EAAQ,GAAAD,QAAI,OAAO,OAAOC,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDJ,EAAUF,GAA6B,EAC7C,KAAOO,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJP,EAAQ,OAASK,EAAO,OAAO,EAC/B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJP,EAAQ,QAAUK,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJP,EAAQ,YAAcK,EAAO,OAAO,EACpC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOP,CACX,EACA,SAASQ,EAAQ,CACb,MAAO,CACH,OAAQC,GAAMD,EAAO,MAAM,EAAI,WAAW,OAAOA,EAAO,MAAM,EAAI,OAClE,QAASC,GAAMD,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,OACrE,YAAaC,GAAMD,EAAO,WAAW,EAAI,WAAW,OAAOA,EAAO,WAAW,EAAI,MACrF,CACJ,EACA,OAAOR,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,SAAW,SACnBU,EAAI,OAASV,EAAQ,QAErBA,EAAQ,UAAY,SACpBU,EAAI,QAAUV,EAAQ,SAEtBA,EAAQ,cAAgB,SACxBU,EAAI,YAAcV,EAAQ,aAEvBU,CACX,EACA,OAAOC,EAAM,CACT,OAAOZ,GAAmB,YAAYY,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYH,EAAQ,CAChB,IAAMR,EAAUF,GAA6B,EAC7C,OAAAE,EAAQ,OAASQ,EAAO,QAAU,OAClCR,EAAQ,QAAUQ,EAAO,SAAW,OACpCR,EAAQ,YAAcQ,EAAO,aAAe,OACrCR,CACX,CACJ,EACAY,EAAoB,IAAIb,GAAmB,MAAOA,EAAkB,EACpE,SAASc,IAA+B,CACpC,MAAO,CAAE,cAAe,CAAE,CAC9B,CACO,IAAMC,GAAqB,CAC9B,MAAO,+CACP,OAAOd,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,gBAAkB,GAC1BC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,aAAa,EAEzCC,CACX,EACA,OAAOE,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAD,QAAI,OAASC,EAAQ,GAAAD,QAAI,OAAO,OAAOC,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDJ,EAAUa,GAA6B,EAC7C,KAAOR,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJP,EAAQ,cAAgBK,EAAO,MAAM,EACrC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOP,CACX,EACA,SAASQ,EAAQ,CACb,MAAO,CAAE,cAAeC,GAAMD,EAAO,aAAa,EAAIO,GAAsBP,EAAO,aAAa,EAAI,CAAE,CAC1G,EACA,OAAOR,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,gBAAkB,IAC1BU,EAAI,cAAgBM,GAAoBhB,EAAQ,aAAa,GAE1DU,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAAmB,YAAYH,GAAQ,CAAC,CAAC,CACpD,EACA,YAAYH,EAAQ,CAChB,IAAMR,EAAUa,GAA6B,EAC7C,OAAAb,EAAQ,cAAgBQ,EAAO,eAAiB,EACzCR,CACX,CACJ,EACAY,EAAoB,IAAIE,GAAmB,MAAOA,EAAkB,EACpE,SAASL,GAAMQ,EAAO,CAClB,OAAOA,GAAU,IACrB,CI3IA,IAAAC,GAAgB,SCAhB,IAAAC,GAAgB,SCAhB,IAAAC,GAAgB,SAEhB,SAASC,IAAkB,CACvB,MAAO,CAAC,CACZ,CACO,IAAMC,GAAQ,CACjB,MAAO,wBACP,OAAOC,EAAGC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CACpC,OAAOD,CACX,EACA,OAAOE,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAD,QAAI,OAASC,EAAQ,GAAAD,QAAI,OAAO,OAAOC,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDG,EAAUT,GAAgB,EAChC,KAAOO,EAAO,IAAMC,GAAK,CACrB,IAAME,EAAMH,EAAO,OAAO,EAG1B,GAFQG,IAAQ,GAEXA,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJH,EAAO,SAASG,EAAM,CAAC,CAC3B,CACA,OAAOD,CACX,EACA,SAASP,EAAG,CACR,MAAO,CAAC,CACZ,EACA,OAAOA,EAAG,CAEN,MADY,CAAC,CAEjB,EACA,OAAOS,EAAM,CACT,OAAOV,GAAM,YAAYU,GAAQ,CAAC,CAAC,CACvC,EACA,YAAYT,EAAG,CAEX,OADgBF,GAAgB,CAEpC,CACJ,EACAY,EAAoB,IAAIX,GAAM,MAAOA,EAAK,EDnC1C,SAASY,IAA4B,CACjC,MAAO,CAAE,SAAU,CAAC,CAAE,CAC1B,CACO,IAAMC,GAAkB,CAC3B,MAAO,wCACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWC,KAAKH,EAAQ,SACpBC,EAAO,OAAO,EAAE,EAAE,OAAOE,CAAC,EAE9B,OAAOF,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAF,QAAI,OAASE,EAAQ,GAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUF,GAA0B,EAC1C,KAAOQ,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,SAAS,KAAKM,EAAO,OAAO,CAAC,EACrC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CACH,SAAU,WAAW,MAAM,QAAQA,GAAQ,QAAQ,EAAIA,EAAO,SAAS,IAAKC,GAAM,WAAW,OAAOA,CAAC,CAAC,EAAI,CAAC,CAC/G,CACJ,EACA,OAAOV,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,UAAU,SAClBW,EAAI,SAAWX,EAAQ,UAEpBW,CACX,EACA,OAAOC,EAAM,CACT,OAAOb,GAAgB,YAAYa,GAAQ,CAAC,CAAC,CACjD,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAUF,GAA0B,EAC1C,OAAAE,EAAQ,SAAWS,EAAO,UAAU,IAAKC,GAAMA,CAAC,GAAK,CAAC,EAC/CV,CACX,CACJ,EACAa,EAAoB,IAAId,GAAgB,MAAOA,EAAe,EAC9D,SAASe,IAA0B,CAC/B,MAAO,CAAE,QAAS,GAAI,KAAM,MAAU,CAC1C,CACO,IAAMC,GAAgB,CACzB,MAAO,sCACP,OAAOf,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,IACpBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,OAAO,EAExCA,EAAQ,OAAS,QACjBgB,EAAO,OAAOA,EAAO,KAAKhB,EAAQ,IAAI,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEvEA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAF,QAAI,OAASE,EAAQ,GAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUc,GAAwB,EACxC,KAAOR,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,QAAUM,EAAO,OAAO,EAChC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,KAAOgB,EAAO,OAAOA,EAAO,OAAOV,EAAQA,EAAO,OAAO,CAAC,CAAC,EACnE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASS,EAAQ,CACb,MAAO,CACH,QAASQ,GAAMR,EAAO,OAAO,EAAI,WAAW,OAAOA,EAAO,OAAO,EAAI,GACrE,KAAMS,GAAST,EAAO,IAAI,EAAIA,EAAO,KAAO,MAChD,CACJ,EACA,OAAOT,EAAS,CACZ,IAAMW,EAAM,CAAC,EACb,OAAIX,EAAQ,UAAY,KACpBW,EAAI,QAAUX,EAAQ,SAEtBA,EAAQ,OAAS,SACjBW,EAAI,KAAOX,EAAQ,MAEhBW,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAAc,YAAYH,GAAQ,CAAC,CAAC,CAC/C,EACA,YAAYH,EAAQ,CAChB,IAAMT,EAAUc,GAAwB,EACxC,OAAAd,EAAQ,QAAUS,EAAO,SAAW,GACpCT,EAAQ,KAAOS,EAAO,MAAQ,OACvBT,CACX,CACJ,EACAa,EAAoB,IAAIE,GAAc,MAAOA,EAAa,EA0C1D,SAASI,GAASC,EAAO,CACrB,OAAO,OAAOA,GAAU,UAAYA,IAAU,IAClD,CACA,SAASC,GAAMD,EAAO,CAClB,OAAOA,GAAU,IACrB,CD1KO,IAAIE,IACV,SAAUA,EAA4B,CACnCA,EAA2BA,EAA2B,oBAAyB,CAAC,EAAI,sBACpFA,EAA2BA,EAA2B,sBAA2B,CAAC,EAAI,wBACtFA,EAA2BA,EAA2B,aAAkB,EAAE,EAAI,cAClF,GAAGA,KAA+BA,GAA6B,CAAC,EAAE,EAC3D,SAASC,GAAmCC,EAAQ,CACvD,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,sBACD,OAAOF,GAA2B,oBACtC,IAAK,GACL,IAAK,wBACD,OAAOA,GAA2B,sBACtC,IAAK,GACL,IAAK,eACL,QACI,OAAOA,GAA2B,YAC1C,CACJ,CACO,SAASG,GAAiCD,EAAQ,CACrD,OAAQA,EAAQ,CACZ,KAAKF,GAA2B,oBAC5B,MAAO,GACX,KAAKA,GAA2B,sBAC5B,MAAO,GACX,KAAKA,GAA2B,aAChC,QACI,MAAO,EACf,CACJ,CACA,SAASI,IAAwC,CAC7C,MAAO,CAAE,gBAAiB,CAAC,CAAE,CACjC,CACO,IAAMC,GAA8B,CACvC,MAAO,wDACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,QAAWC,KAAKH,EAAQ,gBACpBC,EAAO,OAAO,EAAE,EAAE,OAAOE,CAAC,EAE9B,OAAOF,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAF,QAAI,OAASE,EAAQ,GAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUF,GAAsC,EACtD,KAAOQ,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,gBAAgB,KAAKM,EAAO,OAAO,CAAC,EAC5C,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,gBAAiB,WAAW,MAAM,QAAQA,GAAQ,eAAe,EAC3DA,EAAO,gBAAgB,IAAKa,GAAM,WAAW,OAAOA,CAAC,CAAC,EACtD,CAAC,CACX,CACJ,EACA,OAAOT,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,iBAAiB,SACzBU,EAAI,gBAAkBV,EAAQ,iBAE3BU,CACX,EACA,OAAOC,EAAM,CACT,OAAOZ,GAA4B,YAAYY,GAAQ,CAAC,CAAC,CAC7D,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUF,GAAsC,EACtD,OAAAE,EAAQ,gBAAkBJ,EAAO,iBAAiB,IAAKa,GAAMA,CAAC,GAAK,CAAC,EAC7DT,CACX,CACJ,EACAY,EAAoB,IAAIb,GAA4B,MAAOA,EAA2B,EACtF,SAASc,IAAsC,CAC3C,MAAO,CAAE,MAAO,OAAW,OAAQ,MAAU,CACjD,CACO,IAAMC,GAA4B,CACrC,MAAO,sDACP,OAAOd,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,QAAU,QAClBe,GAAc,OAAOf,EAAQ,MAAOC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAErED,EAAQ,SAAW,QACnBC,EAAO,OAAO,EAAE,EAAE,MAAMD,EAAQ,MAAM,EAEnCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAF,QAAI,OAASE,EAAQ,GAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUa,GAAoC,EACpD,KAAOP,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,MAAQe,GAAc,OAAOT,EAAQA,EAAO,OAAO,CAAC,EAC5D,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,OAASM,EAAO,MAAM,EAC9B,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,MAAOoB,GAAMpB,EAAO,KAAK,EAAImB,GAAc,SAASnB,EAAO,KAAK,EAAI,OACpE,OAAQoB,GAAMpB,EAAO,MAAM,EAAID,GAAmCC,EAAO,MAAM,EAAI,MACvF,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,QAAU,SAClBU,EAAI,MAAQK,GAAc,OAAOf,EAAQ,KAAK,GAE9CA,EAAQ,SAAW,SACnBU,EAAI,OAASb,GAAiCG,EAAQ,MAAM,GAEzDU,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAA0B,YAAYH,GAAQ,CAAC,CAAC,CAC3D,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUa,GAAoC,EACpD,OAAAb,EAAQ,MAASJ,EAAO,QAAU,QAAaA,EAAO,QAAU,KAC1DmB,GAAc,YAAYnB,EAAO,KAAK,EACtC,OACNI,EAAQ,OAASJ,EAAO,QAAU,OAC3BI,CACX,CACJ,EACAY,EAAoB,IAAIE,GAA0B,MAAOA,EAAyB,EAClF,SAASE,GAAMC,EAAO,CAClB,OAAOA,GAAU,IACrB,CGlKA,IAAAC,GAAgB,SAGT,IAAIC,IACV,SAAUA,EAAsB,CAC7BA,EAAqBA,EAAqB,YAAiB,CAAC,EAAI,cAKhEA,EAAqBA,EAAqB,YAAiB,CAAC,EAAI,cAKhEA,EAAqBA,EAAqB,eAAoB,CAAC,EAAI,iBACnEA,EAAqBA,EAAqB,aAAkB,EAAE,EAAI,cACtE,GAAGA,KAAyBA,GAAuB,CAAC,EAAE,EAC/C,SAASC,GAA6BC,EAAQ,CACjD,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,cACD,OAAOF,GAAqB,YAChC,IAAK,GACL,IAAK,cACD,OAAOA,GAAqB,YAChC,IAAK,GACL,IAAK,iBACD,OAAOA,GAAqB,eAChC,IAAK,GACL,IAAK,eACL,QACI,OAAOA,GAAqB,YACpC,CACJ,CACO,SAASG,GAA2BD,EAAQ,CAC/C,OAAQA,EAAQ,CACZ,KAAKF,GAAqB,YACtB,MAAO,GACX,KAAKA,GAAqB,YACtB,MAAO,GACX,KAAKA,GAAqB,eACtB,MAAO,GACX,KAAKA,GAAqB,aAC1B,QACI,MAAO,EACf,CACJ,CACA,SAASI,IAAuC,CAC5C,MAAO,CAAE,cAAe,EAAG,SAAU,MAAU,CACnD,CACO,IAAMC,GAA6B,CACtC,MAAO,gEACP,OAAOC,EAASC,EAAS,GAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,gBAAkB,GAC1BC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,aAAa,EAE5CA,EAAQ,WAAa,QACrBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,QAAQ,EAEtCC,CACX,EACA,OAAOE,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,GAAAD,QAAI,OAASC,EAAQ,GAAAD,QAAI,OAAO,OAAOC,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDJ,EAAUF,GAAqC,EACrD,KAAOO,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJP,EAAQ,cAAgBK,EAAO,MAAM,EACrC,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJP,EAAQ,SAAWK,EAAO,OAAO,EACjC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOP,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,cAAeY,GAAMZ,EAAO,aAAa,EAAID,GAA6BC,EAAO,aAAa,EAAI,EAClG,SAAUY,GAAMZ,EAAO,QAAQ,EAAI,WAAW,OAAOA,EAAO,QAAQ,EAAI,MAC5E,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMS,EAAM,CAAC,EACb,OAAIT,EAAQ,gBAAkB,IAC1BS,EAAI,cAAgBZ,GAA2BG,EAAQ,aAAa,GAEpEA,EAAQ,WAAa,SACrBS,EAAI,SAAWT,EAAQ,UAEpBS,CACX,EACA,OAAOC,EAAM,CACT,OAAOX,GAA2B,YAAYW,GAAQ,CAAC,CAAC,CAC5D,EACA,YAAYd,EAAQ,CAChB,IAAMI,EAAUF,GAAqC,EACrD,OAAAE,EAAQ,cAAgBJ,EAAO,eAAiB,EAChDI,EAAQ,SAAWJ,EAAO,UAAY,OAC/BI,CACX,CACJ,EACAW,EAAoB,IAAIZ,GAA2B,MAAOA,EAA0B,EACpF,SAASS,GAAMI,EAAO,CAClB,OAAOA,GAAU,IACrB,Cf/GO,IAAIC,IACV,SAAUA,EAAmB,CAC1BA,EAAkBA,EAAkB,gBAAqB,CAAC,EAAI,kBAC9DA,EAAkBA,EAAkB,eAAoB,CAAC,EAAI,iBAC7DA,EAAkBA,EAAkB,aAAkB,EAAE,EAAI,cAChE,GAAGA,KAAsBA,GAAoB,CAAC,EAAE,EACzC,SAASC,GAA0BC,EAAQ,CAC9C,OAAQA,EAAQ,CACZ,IAAK,GACL,IAAK,kBACD,OAAOF,GAAkB,gBAC7B,IAAK,GACL,IAAK,iBACD,OAAOA,GAAkB,eAC7B,IAAK,GACL,IAAK,eACL,QACI,OAAOA,GAAkB,YACjC,CACJ,CACO,SAASG,GAAwBD,EAAQ,CAC5C,OAAQA,EAAQ,CACZ,KAAKF,GAAkB,gBACnB,MAAO,GACX,KAAKA,GAAkB,eACnB,MAAO,GACX,KAAKA,GAAkB,aACvB,QACI,MAAO,EACf,CACJ,CACA,SAASI,IAAoC,CACzC,MAAO,CAAE,QAAS,OAAW,WAAY,EAAG,CAChD,CACO,IAAMC,GAA0B,CACnC,MAAO,mDACP,OAAOC,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,UAAY,QACpBG,EAAM,OAAOA,EAAM,KAAKH,EAAQ,OAAO,EAAGC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE3ED,EAAQ,aAAe,IACvBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,UAAU,EAExCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUF,GAAkC,EAClD,KAAOQ,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,QAAUG,EAAM,OAAOA,EAAM,OAAOG,EAAQA,EAAO,OAAO,CAAC,CAAC,EACpE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,WAAaM,EAAO,OAAO,EACnC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,QAASa,EAAMb,GAAQ,OAAO,EAAIA,EAAO,QAAU,OACnD,WAAYa,EAAMb,EAAO,UAAU,EAAI,WAAW,OAAOA,EAAO,UAAU,EAAI,EAClF,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,UAAY,SACpBU,EAAI,QAAUV,EAAQ,SAEtBA,EAAQ,aAAe,KACvBU,EAAI,WAAaV,EAAQ,YAEtBU,CACX,EACA,OAAOC,EAAM,CACT,OAAOZ,GAAwB,YAAYY,GAAQ,CAAC,CAAC,CACzD,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUF,GAAkC,EAClD,OAAAE,EAAQ,QAAUJ,EAAO,SAAW,OACpCI,EAAQ,WAAaJ,EAAO,YAAc,GACnCI,CACX,CACJ,EACAY,EAAoB,IAAIb,GAAwB,MAAOA,EAAuB,EAC9E,SAASc,IAAmC,CACxC,MAAO,CAAE,WAAY,CAAE,CAC3B,CACO,IAAMC,GAAyB,CAClC,MAAO,kDACP,OAAOd,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,aAAe,GACvBC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,UAAU,EAEtCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUa,GAAiC,EACjD,KAAOP,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJR,EAAQ,WAAaM,EAAO,MAAM,EAClC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CAAE,WAAYa,EAAMb,EAAO,UAAU,EAAID,GAA0BC,EAAO,UAAU,EAAI,CAAE,CACrG,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,aAAe,IACvBU,EAAI,WAAab,GAAwBG,EAAQ,UAAU,GAExDU,CACX,EACA,OAAOC,EAAM,CACT,OAAOG,GAAuB,YAAYH,GAAQ,CAAC,CAAC,CACxD,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUa,GAAiC,EACjD,OAAAb,EAAQ,WAAaJ,EAAO,YAAc,EACnCI,CACX,CACJ,EACAY,EAAoB,IAAIE,GAAuB,MAAOA,EAAsB,EAC5E,SAASC,IAAyB,CAC9B,MAAO,CAAE,YAAa,OAAW,WAAY,MAAU,CAC3D,CACO,IAAMC,GAAe,CACxB,MAAO,wCACP,OAAOhB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,cAAgB,QACxBD,GAAwB,OAAOC,EAAQ,YAAaC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAErFD,EAAQ,aAAe,QACvBc,GAAuB,OAAOd,EAAQ,WAAYC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEhFA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUe,GAAuB,EACvC,KAAOT,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,YAAcD,GAAwB,OAAOO,EAAQA,EAAO,OAAO,CAAC,EAC5E,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,WAAac,GAAuB,OAAOR,EAAQA,EAAO,OAAO,CAAC,EAC1E,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,YAAaa,EAAMb,EAAO,WAAW,EAAIG,GAAwB,SAASH,EAAO,WAAW,EAAI,OAChG,WAAYa,EAAMb,EAAO,UAAU,EAAIkB,GAAuB,SAASlB,EAAO,UAAU,EAAI,MAChG,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,cAAgB,SACxBU,EAAI,YAAcX,GAAwB,OAAOC,EAAQ,WAAW,GAEpEA,EAAQ,aAAe,SACvBU,EAAI,WAAaI,GAAuB,OAAOd,EAAQ,UAAU,GAE9DU,CACX,EACA,OAAOC,EAAM,CACT,OAAOK,GAAa,YAAYL,GAAQ,CAAC,CAAC,CAC9C,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUe,GAAuB,EACvC,OAAAf,EAAQ,YAAeJ,EAAO,cAAgB,QAAaA,EAAO,cAAgB,KAC5EG,GAAwB,YAAYH,EAAO,WAAW,EACtD,OACNI,EAAQ,WAAcJ,EAAO,aAAe,QAAaA,EAAO,aAAe,KACzEkB,GAAuB,YAAYlB,EAAO,UAAU,EACpD,OACCI,CACX,CACJ,EACAY,EAAoB,IAAII,GAAa,MAAOA,EAAY,EACxD,SAASC,IAA6C,CAClD,MAAO,CAAE,cAAe,CAAE,CAC9B,CACO,IAAMC,GAAmC,CAC5C,MAAO,4DACP,OAAOlB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,gBAAkB,GAC1BC,EAAO,OAAO,CAAC,EAAE,MAAMD,EAAQ,aAAa,EAEzCC,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUiB,GAA2C,EAC3D,KAAOX,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,EACR,MAEJR,EAAQ,cAAgBM,EAAO,MAAM,EACrC,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CAAE,cAAea,EAAMb,EAAO,aAAa,EAAIuB,GAA6BvB,EAAO,aAAa,EAAI,CAAE,CACjH,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,gBAAkB,IAC1BU,EAAI,cAAgBU,GAA2BpB,EAAQ,aAAa,GAEjEU,CACX,EACA,OAAOC,EAAM,CACT,OAAOO,GAAiC,YAAYP,GAAQ,CAAC,CAAC,CAClE,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUiB,GAA2C,EAC3D,OAAAjB,EAAQ,cAAgBJ,EAAO,eAAiB,EACzCI,CACX,CACJ,EACAY,EAAoB,IAAIM,GAAiC,MAAOA,EAAgC,EAChG,SAASG,IAAwC,CAC7C,MAAO,CACH,GAAI,GACJ,aAAc,OACd,cAAe,OACf,cAAe,OACf,mBAAoB,OACpB,cAAe,MACnB,CACJ,CACO,IAAMC,GAA8B,CACvC,MAAO,uDACP,OAAOtB,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,KAAO,IACfC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,EAAE,EAEnCA,EAAQ,eAAiB,QACzBuB,GAAkB,OAAOvB,EAAQ,aAAcC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEhFD,EAAQ,gBAAkB,QAC1BwB,GAAmB,OAAOxB,EAAQ,cAAeC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAElFD,EAAQ,gBAAkB,QAC1ByB,GAA0B,OAAOzB,EAAQ,cAAeC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEzFD,EAAQ,qBAAuB,QAC/BkB,GAAiC,OAAOlB,EAAQ,mBAAoBC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAErGD,EAAQ,gBAAkB,QAC1B0B,GAAmB,OAAO1B,EAAQ,cAAeC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE/EA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAUqB,GAAsC,EACtD,KAAOf,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,GAAKM,EAAO,OAAO,EAC3B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,aAAeuB,GAAkB,OAAOjB,EAAQA,EAAO,OAAO,CAAC,EACvE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,cAAgBwB,GAAmB,OAAOlB,EAAQA,EAAO,OAAO,CAAC,EACzE,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,cAAgByB,GAA0B,OAAOnB,EAAQA,EAAO,OAAO,CAAC,EAChF,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,mBAAqBkB,GAAiC,OAAOZ,EAAQA,EAAO,OAAO,CAAC,EAC5F,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,cAAgB0B,GAAmB,OAAOpB,EAAQA,EAAO,OAAO,CAAC,EACzE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,GAAIa,EAAMb,EAAO,EAAE,EAAI,WAAW,OAAOA,EAAO,EAAE,EAAI,GACtD,aAAca,EAAMb,EAAO,YAAY,EAAI2B,GAAkB,SAAS3B,EAAO,YAAY,EAAI,OAC7F,cAAea,EAAMb,EAAO,aAAa,EAAI4B,GAAmB,SAAS5B,EAAO,aAAa,EAAI,OACjG,cAAea,EAAMb,EAAO,aAAa,EAAI6B,GAA0B,SAAS7B,EAAO,aAAa,EAAI,OACxG,mBAAoBa,EAAMb,EAAO,kBAAkB,EAC7CsB,GAAiC,SAAStB,EAAO,kBAAkB,EACnE,OACN,cAAea,EAAMb,EAAO,aAAa,EAAI8B,GAAmB,SAAS9B,EAAO,aAAa,EAAI,MACrG,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,KAAO,KACfU,EAAI,GAAKV,EAAQ,IAEjBA,EAAQ,eAAiB,SACzBU,EAAI,aAAea,GAAkB,OAAOvB,EAAQ,YAAY,GAEhEA,EAAQ,gBAAkB,SAC1BU,EAAI,cAAgBc,GAAmB,OAAOxB,EAAQ,aAAa,GAEnEA,EAAQ,gBAAkB,SAC1BU,EAAI,cAAgBe,GAA0B,OAAOzB,EAAQ,aAAa,GAE1EA,EAAQ,qBAAuB,SAC/BU,EAAI,mBAAqBQ,GAAiC,OAAOlB,EAAQ,kBAAkB,GAE3FA,EAAQ,gBAAkB,SAC1BU,EAAI,cAAgBgB,GAAmB,OAAO1B,EAAQ,aAAa,GAEhEU,CACX,EACA,OAAOC,EAAM,CACT,OAAOW,GAA4B,YAAYX,GAAQ,CAAC,CAAC,CAC7D,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAUqB,GAAsC,EACtD,OAAArB,EAAQ,GAAKJ,EAAO,IAAM,GAC1BI,EAAQ,aAAgBJ,EAAO,eAAiB,QAAaA,EAAO,eAAiB,KAC/E2B,GAAkB,YAAY3B,EAAO,YAAY,EACjD,OACNI,EAAQ,cAAiBJ,EAAO,gBAAkB,QAAaA,EAAO,gBAAkB,KAClF4B,GAAmB,YAAY5B,EAAO,aAAa,EACnD,OACNI,EAAQ,cAAiBJ,EAAO,gBAAkB,QAAaA,EAAO,gBAAkB,KAClF6B,GAA0B,YAAY7B,EAAO,aAAa,EAC1D,OACNI,EAAQ,mBAAsBJ,EAAO,qBAAuB,QAAaA,EAAO,qBAAuB,KACjGsB,GAAiC,YAAYtB,EAAO,kBAAkB,EACtE,OACNI,EAAQ,cAAiBJ,EAAO,gBAAkB,QAAaA,EAAO,gBAAkB,KAClF8B,GAAmB,YAAY9B,EAAO,aAAa,EACnD,OACCI,CACX,CACJ,EACAY,EAAoB,IAAIU,GAA4B,MAAOA,EAA2B,EACtF,SAASK,IAAgC,CACrC,MAAO,CAAE,KAAM,MAAU,CAC7B,CACO,IAAMC,GAAsB,CAC/B,MAAO,+CACP,OAAO5B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,OAAS,QACjB6B,GAAgC,OAAO7B,EAAQ,KAAMC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAEnFA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAU2B,GAA8B,EAC9C,KAAOrB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,KAAO6B,GAAgC,OAAOvB,EAAQA,EAAO,OAAO,CAAC,EAC7E,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CAAE,KAAMa,EAAMb,EAAO,IAAI,EAAIiC,GAAgC,SAASjC,EAAO,IAAI,EAAI,MAAU,CAC1G,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,OAAS,SACjBU,EAAI,KAAOmB,GAAgC,OAAO7B,EAAQ,IAAI,GAE3DU,CACX,EACA,OAAOC,EAAM,CACT,OAAOiB,GAAoB,YAAYjB,GAAQ,CAAC,CAAC,CACrD,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAU2B,GAA8B,EAC9C,OAAA3B,EAAQ,KAAQJ,EAAO,OAAS,QAAaA,EAAO,OAAS,KACvDiC,GAAgC,YAAYjC,EAAO,IAAI,EACvD,OACCI,CACX,CACJ,EACAY,EAAoB,IAAIgB,GAAoB,MAAOA,EAAmB,EACtE,SAASE,IAA4C,CACjD,MAAO,CAAE,KAAM,GAAI,KAAM,MAAU,CACvC,CACO,IAAMD,GAAkC,CAC3C,MAAO,2DACP,OAAO7B,EAASC,EAAS,EAAAC,QAAI,OAAO,OAAO,EAAG,CAC1C,OAAIF,EAAQ,OAAS,IACjBC,EAAO,OAAO,EAAE,EAAE,OAAOD,EAAQ,IAAI,EAErCA,EAAQ,OAAS,QACjBsB,GAA4B,OAAOtB,EAAQ,KAAMC,EAAO,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAE/EA,CACX,EACA,OAAOG,EAAOC,EAAQ,CAClB,IAAMC,EAASF,aAAiB,EAAAF,QAAI,OAASE,EAAQ,EAAAF,QAAI,OAAO,OAAOE,CAAK,EACxEG,EAAMF,IAAW,OAAYC,EAAO,IAAMA,EAAO,IAAMD,EACrDL,EAAU8B,GAA0C,EAC1D,KAAOxB,EAAO,IAAMC,GAAK,CACrB,IAAMC,EAAMF,EAAO,OAAO,EAC1B,OAAQE,IAAQ,EAAG,CACf,IAAK,GACD,GAAIA,IAAQ,GACR,MAEJR,EAAQ,KAAOM,EAAO,OAAO,EAC7B,SACJ,IAAK,GACD,GAAIE,IAAQ,GACR,MAEJR,EAAQ,KAAOsB,GAA4B,OAAOhB,EAAQA,EAAO,OAAO,CAAC,EACzE,QACR,CACA,IAAKE,EAAM,KAAO,GAAKA,IAAQ,EAC3B,MAEJF,EAAO,SAASE,EAAM,CAAC,CAC3B,CACA,OAAOR,CACX,EACA,SAASJ,EAAQ,CACb,MAAO,CACH,KAAMa,EAAMb,EAAO,IAAI,EAAI,WAAW,OAAOA,EAAO,IAAI,EAAI,GAC5D,KAAMa,EAAMb,EAAO,IAAI,EAAI0B,GAA4B,SAAS1B,EAAO,IAAI,EAAI,MACnF,CACJ,EACA,OAAOI,EAAS,CACZ,IAAMU,EAAM,CAAC,EACb,OAAIV,EAAQ,OAAS,KACjBU,EAAI,KAAOV,EAAQ,MAEnBA,EAAQ,OAAS,SACjBU,EAAI,KAAOY,GAA4B,OAAOtB,EAAQ,IAAI,GAEvDU,CACX,EACA,OAAOC,EAAM,CACT,OAAOkB,GAAgC,YAAYlB,GAAQ,CAAC,CAAC,CACjE,EACA,YAAYf,EAAQ,CAChB,IAAMI,EAAU8B,GAA0C,EAC1D,OAAA9B,EAAQ,KAAOJ,EAAO,MAAQ,GAC9BI,EAAQ,KAAQJ,EAAO,OAAS,QAAaA,EAAO,OAAS,KACvD0B,GAA4B,YAAY1B,EAAO,IAAI,EACnD,OACCI,CACX,CACJ,EACAY,EAAoB,IAAIiB,GAAgC,MAAOA,EAA+B,EAC9F,SAASpB,EAAMsB,EAAO,CAClB,OAAOA,GAAU,IACrB,CgB3iBA,IAAMC,GAAwB,CAC1BC,GAAW,iBACXA,GAAW,sBACf,EAcaC,EAAcC,GAChB,IAAI,QAASC,GAAY,CAC5B,IAAMC,EAAU,CACZ,MAAOC,GAA4B,OACnC,KAAM,iBACV,EA6BA,GA5BIH,EAAO,sBACPE,EAAQ,eAAiBF,EAAO,sBAE3BA,EAAO,cACZE,EAAQ,cAAgBF,EAAO,cAE1BA,EAAO,MACZE,EAAQ,MAAQF,EAAO,MAElBA,EAAO,UACZE,EAAQ,UAAYF,EAAO,UAEtBA,EAAO,cACZE,EAAQ,cAAgBF,EAAO,cAE1BA,EAAO,WACZE,EAAQ,SAAWF,EAAO,WAK1BA,EAAO,WACPA,EAAO,eACPA,EAAO,UACPA,EAAO,OAASF,GAAW,0BAC3BI,EAAQ,OAASF,GAGjBH,GAAsB,SAASG,EAAO,IAAI,EAAG,CAC7C,IAAMI,EAAK,KAAK,OAAO,WAAW,EAClCF,EAAQ,GAAKE,EACb,IAAMC,EAAgBC,GAAU,CAC5B,GAAIA,EAAM,MAAM,OAAS,kBAAoBA,EAAM,MAAM,MAAM,KAAOF,EAAI,CACtE,IAAMG,EAAoBC,GAA4B,SAASF,EAAM,KAAK,IAAI,EAC9EL,EAAQM,CAAiB,EACzB,OAAO,oBAAoB,UAAWF,CAAY,CACtD,CACJ,EACA,OAAO,iBAAiB,UAAWA,CAAY,EAE/C,OAAO,OAAO,YAAYH,EAAS,GAAG,CAC1C,MAEI,OAAO,OAAO,YAAYA,EAAS,GAAG,EAEtCD,EAAQ,MAAS,CAEzB,CAAC,ECjEE,SAASQ,GAAWC,EAAqD,CAC9E,IAAMC,EAAW,OAAOD,GAAe,SAAWA,EAAaA,EAAW,IAC1E,GAAI,CAAC,IAAI,SAASC,CAAQ,EACxB,MAAM,IAAI,UAAU,gBAAgBA,CAAQ,EAAE,EAEhD,IAAMC,EAAgB,IAAI,IAAID,CAAQ,EAAE,SAAS,EAC5CE,EAAW,CACd,cAAe,CACb,IAAKD,CACP,EACA,KAAM,CACR,CAAC,CACH,CCZO,IAAIE,IACV,SAAUA,EAAe,CAEtBA,EAAcA,EAAc,uBAA4B,CAAC,EAAI,yBAE7DA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAE9CA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,aAAkB,EAAE,EAAI,cACxD,GAAGA,KAAkBA,GAAgB,CAAC,EAAE,EAEjC,IAAIC,IACV,SAAUA,EAAO,CAEdA,EAAMA,EAAM,cAAmB,CAAC,EAAI,gBAEpCA,EAAMA,EAAM,YAAiB,CAAC,EAAI,cAElCA,EAAMA,EAAM,eAAoB,CAAC,EAAI,iBAErCA,EAAMA,EAAM,uBAA4B,CAAC,EAAI,yBAC7CA,EAAMA,EAAM,aAAkB,EAAE,EAAI,cACxC,GAAGA,KAAUA,GAAQ,CAAC,EAAE,ECpBjB,IAAMC,GAAe,SAA8B,CACxD,IAAMC,EAAqB,OAAO,mBAElC,GAAI,CAACA,EAGH,MAAO,GAGT,GAAIA,EAAmB,gBAAgB,SAAW,EAEhD,MAAO,GAGT,OAAQA,EAAmB,cAAe,CACxC,KAAKC,GAAc,QACjB,MAAO,GACT,KAAKA,GAAc,QAEjB,GACED,EAAmB,gBAAgB,MAAOE,GACxCF,EAAmB,cAAc,SAASE,CAAK,CACjD,EAEA,MAAO,GAGT,MACF,KAAKD,GAAc,uBACnB,KAAKA,GAAc,aAEjB,MACF,QAAS,CACPD,EAAmB,cACnB,KACF,CACF,CAWA,OATiB,MAAMG,EAAW,CAChC,aAAc,CACZ,OAAQ,OAAO,QAAQ,OACvB,QAAS,OAAO,QAAQ,QACxB,YAAa,OAAO,QAAQ,WAC9B,EACA,KAAM,EACR,CAAC,IAEgB,eAAe,gBAAkBF,GAAc,OAClE,EC5BO,IAAMG,GAAiB,mBCb9B,eAAsBC,GAAeC,EAA+C,CAClF,GAAIA,EAAK,MAAQA,EAAK,KAAK,OAAS,KAClC,MAAM,MACJ,mBAAmB,IAA0B,uBAAuBA,EAAK,KAAK,MAAM,aACtF,EAEF,IAAMC,EAAU,GAAG,IAAI,IAAIC,GAAgB,SAAS,MAAM,CAAC,GACvDC,EACJ,GAAI,CACFA,EAAU,MAAM,MAAMF,EAAS,CAAE,OAAQ,MAAO,CAAC,CACnD,MAAQ,CAER,CAEA,MAAMG,EAAW,CACf,KAAM,EACN,MAAO,CACL,WAAYD,GAAS,GAAKF,EAAU,OACpC,SAAUD,EAAK,KACf,KAAMA,EAAK,KACX,MAAOA,EAAK,KACd,CACF,CAAC,CACH,CAEO,SAASK,IAAmC,CACjD,OAAO,OAAO,OAAO,QACvB,CCnCO,SAASC,GACdC,EACAC,EAAyB,IAAI,IACvB,CACN,QAAWC,KAASF,EAAQ,CAC1B,GAAIE,EAAM,OAAS,QAAS,CAC1BH,GAAsBG,EAAM,OAAQD,CAAS,EAC7C,QACF,CAGA,IAAME,EAAaD,EAAc,KAEjC,GAAID,EAAU,IAAIE,CAAS,EACzB,MAAM,IAAI,MAAM,yBAAyBA,CAAS,EAAE,EAGtDF,EAAU,IAAIE,CAAS,CACzB,CACAC,GAAqBJ,CAAM,CAC7B,CAEO,SAASI,GAAqBJ,EAAoC,CACvE,QAAWE,KAASF,EAClB,GAAIE,EAAM,OAAS,UAAYA,EAAM,UAAYA,EAAM,QAAW,MAChE,KAAM,8FAA8FA,EAAM,IAAI,GAGpH,CCjCA,SAASG,GACPC,EACkD,CAClD,OAAQA,EAAM,UAAW,CACvB,IAAK,GACH,OAAOA,EAAM,YACf,IAAK,GAEH,OAAOA,EAAM,YACf,IAAK,GACH,OAAOA,EAAM,YACf,IAAK,GACH,OAAOA,EAAM,YACf,IAAK,GACH,OAAOA,EAAM,UACf,IAAK,GACH,OAAOA,EAAM,gBAAgB,QAAU,CAAC,EAC1C,QACE,MACJ,CACF,CAKO,SAASC,GAAcC,EAAwD,CACpF,OAAO,OAAO,KAAKA,CAAO,EAAE,OAAO,CAACC,EAAKC,IAAQ,CAC/C,IAAMC,EAAMN,GAAsBG,EAAQE,CAAG,CAAC,EAC9C,OAAIC,IAAQ,SAAWF,EAAIC,CAAG,EAAIC,GAC3BF,CACT,EAAG,CAAC,CAAe,CACrB,CCnBO,SAASG,GAAoBC,EAAgD,CAClF,OAAOA,EAAO,IAAKC,GAAU,CAC3B,OAAQA,EAAM,KAAM,CAClB,IAAK,SACH,OAAOC,GAAqBD,CAAK,EACnC,IAAK,QACH,OAAOE,GAAoBF,CAAK,EAClC,IAAK,YACH,OAAOG,GAAwBH,CAAK,EACtC,IAAK,SACH,OAAOI,GAAqBJ,CAAK,EACnC,IAAK,SACH,OAAOK,GAAqBL,CAAK,EACnC,IAAK,UACH,OAAOM,GAAsBN,CAAK,EACpC,IAAK,QACH,OAAOO,GAAoBP,CAAK,EAClC,QACE,MAAM,IAAI,MAAM,qBAAqB,CACzC,CACF,CAAC,CACH,CAEA,SAASC,GAAqBD,EAAoC,CAChE,MAAO,CACL,aAAc,CACZ,UAAW,EACX,YAAaA,EAAM,YACrB,EACA,SAAUA,EAAM,SAChB,YAAa,CACX,aAAc,CACZ,YAAaA,EAAM,WACrB,CACF,EACA,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,MACb,SAAUA,EAAM,SAChB,SAAUA,EAAM,QAClB,CACF,CAEA,SAASE,GAAoBF,EAAmC,CAC9D,MAAO,CACL,SAAUA,EAAM,SAChB,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,MACb,SAAUA,EAAM,QAClB,CACF,CAEA,SAASG,GAAwBH,EAAuC,CACtE,MAAO,CACL,aAAc,CACZ,UAAW,EACX,YAAaA,EAAM,YACrB,EACA,SAAUA,EAAM,SAChB,YAAa,CACX,gBAAiB,CACf,WAAYA,EAAM,WAClB,YAAaA,EAAM,WACrB,CACF,EACA,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,MACb,SAAUA,EAAM,QAClB,CACF,CAEA,SAASI,GAAqBJ,EAAoC,CAChE,MAAO,CACL,aAAc,CACZ,UAAW,EACX,YAAaA,EAAM,YACrB,EACA,SAAUA,EAAM,SAChB,YAAa,CACX,aAAc,CAAC,CACjB,EACA,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,MACb,SAAUA,EAAM,QAClB,CACF,CAEA,SAASK,GAAqBL,EAAoC,CAChE,MAAO,CACL,aAAc,CACZ,UAAW,EACX,eAAgB,CACd,OAAQA,EAAM,cAAgB,CAAC,CACjC,CACF,EACA,SAAUA,EAAM,SAChB,YAAa,CACX,gBAAiB,CACf,QAASA,EAAM,QACf,YAAaA,EAAM,WACrB,CACF,EACA,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,MACb,SAAUA,EAAM,QAClB,CACF,CAEA,SAASM,GAAsBN,EAAqC,CAClE,MAAO,CACL,aAAc,CACZ,UAAW,EACX,UAAWA,EAAM,YACnB,EACA,SAAUA,EAAM,SAChB,QAASA,EAAM,KACf,UAAW,EACX,SAAUA,EAAM,SAChB,MAAOA,EAAM,KACf,CACF,CAEA,SAASO,GAAoBP,EAAuC,CAClE,MAAO,CACL,QAAS,GACT,UAAW,EACX,YAAa,CACX,YAAa,CACX,OAAQF,GAAoBE,EAAM,MAAM,CAC1C,CACF,EACA,MAAOA,EAAM,MACb,SAAUA,EAAM,QAClB,CACF,CCpJA,IAAIQ,GAAW,EAETC,GAAiB,KACrBD,KACO,QAAQA,EAAQ,IAcZE,GAAW,MACtBC,GACqD,CACrD,IAAMC,EAAkB,CACtB,OAAQ,CAAC,EACT,GAAIH,GAAe,EACnB,MAAOE,EAAe,MACtB,YAAaA,EAAe,YAC5B,YAAaA,EAAe,YAC5B,iBAAkBA,EAAe,WACnC,EAEAE,GAAsBF,EAAe,MAAM,EAC3CC,EAAK,OAASE,GAAoBH,EAAe,MAAM,EAEvD,IAAMI,EAAW,MAAMC,EAAW,CAChC,SAAU,CACR,KAAAJ,CACF,EACA,KAAM,CACR,CAAC,EAED,MAAI,CAACG,GAAY,CAACA,EAAS,cAClB,CACL,OAAQ,UACV,EAKK,CACL,OAAQ,YACR,OAJkBE,GAAcF,EAAS,cAAc,OAAO,CAKhE,CACF,EChDO,SAASG,GAAUC,EAAmC,CAC3D,IAAIC,EAEAD,aAAuB,OACzBC,EAAQ,CACN,KAAMD,EAAY,KAClB,WACEA,EAAY,aAAe,UACtB,EACA,CACT,EAEAC,EAAQ,CACN,KAAMD,CACR,EAGGE,EAAW,CACd,UAAW,CACT,MAAAD,CACF,EACA,KAAM,CACR,CAAC,CACH,CC9BO,IAAIE,IACV,SAAUA,EAAsB,CAC7BA,EAAqBA,EAAqB,YAAiB,CAAC,EAAI,cAKhEA,EAAqBA,EAAqB,YAAiB,CAAC,EAAI,cAKhEA,EAAqBA,EAAqB,eAAoB,CAAC,EAAI,iBACnEA,EAAqBA,EAAqB,aAAkB,EAAE,EAAI,cACtE,GAAGA,KAAyBA,GAAuB,CAAC,EAAE,EClB/C,IAAMC,GAAa,QCiB1B,IAAMC,GAAgB,IAAI,IAObC,GAAiB,IAAmBC,GAAY,OAAO,WAAW,EAoBxE,SAASC,GAAoBC,EAAqBC,EAA8B,CACrF,OAAOC,GAAeC,GAAqB,eAAgBH,EAAOC,CAAK,CACzE,CAiBO,SAASG,GAAiBJ,EAAoC,CACnE,OAAOE,GAAeC,GAAqB,YAAaH,EAAO,MAAS,CAC1E,CASO,SAASK,GAAuBC,EAAqC,CAC1EV,GAAc,IAAIU,CAAQ,CAC5B,CAQO,SAASC,GAA0BD,EAAqC,CAC7EV,GAAc,OAAOU,CAAQ,CAC/B,CAEA,eAAeJ,GACbM,EACAR,EACAC,EACe,CACf,GAAI,CAACD,EAAM,WAAaA,EAAM,OAAS,QACrC,cAAQ,MAAM,qDAAqD,EAC7D,IAAI,MAAM,iBAAiB,EAGnC,GAAIC,GAAS,MAAQ,CAAC,OAAO,YAAYA,CAAK,EAC5C,MAAM,MACJ,wBAAwBA,CAAK,wEAC/B,EAEF,IAAIQ,EACJ,GAAIR,EAAO,CAET,IAAMS,EAAM,IAAI,IAAI,OAAO,YAAYT,CAAK,CAAC,EAC7CS,EAAI,aAAa,IAAIC,GAAY,OAAO,KAAK,EAC7CF,EAAW,GAAGC,CAAG,EACnB,CAGA,MAAME,EAAW,CACf,KAFW,EAGX,cAAe,CAAE,SAAAH,EAAU,cAAeD,CAAK,CACjD,CAAC,CACH,CAMO,SAASK,IAAmB,CACjC,iBAAiB,UAAYb,GAAyD,CACpF,GAAM,CAAE,KAAAc,EAAM,KAAAC,CAAK,EAAIf,EAAM,KAK7B,GAHIc,IAAS,kBAGT,CAACC,GAAM,mBACT,OAGF,OAAO,YAAcA,EAAK,mBAAmB,cAE7C,IAAMC,EAAoBlB,GAAYiB,EAAK,mBAAmB,aAAa,EAC3EnB,GAAc,QAASqB,GAAaA,EAASD,CAAiB,CAAC,CACjE,CAAC,CACH,CAEA,SAASlB,GAAYU,EAAqD,CACxE,OAAQA,EAAM,CACZ,KAAKL,GAAqB,eACxB,MAAO,WACT,KAAKA,GAAqB,YAC1B,KAAKA,GAAqB,aAC1B,KAAKA,GAAqB,YAC1B,KAAK,OACH,MAAO,SACT,QAEE,MAAM,MAAM,GAAGK,CAAI,6BAA6B,CACpD,CACF,CClJAU,GAAiB",
|
|
6
|
+
"names": ["require_aspromise", "__commonJSMin", "exports", "module", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "base64", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "c", "require_eventemitter", "__commonJSMin", "exports", "module", "EventEmitter", "evt", "fn", "ctx", "listeners", "args", "require_float", "__commonJSMin", "exports", "module", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "val", "buf", "pos", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "lo", "hi", "require_inquire", "__commonJSMin", "require_utf8", "__commonJSMin", "exports", "utf8", "string", "len", "c", "buffer", "start", "end", "parts", "chunk", "i", "t", "offset", "c1", "c2", "require_pool", "__commonJSMin", "exports", "module", "pool", "alloc", "slice", "size", "SIZE", "MAX", "slab", "offset", "buf", "require_longbits", "__commonJSMin", "exports", "module", "LongBits", "util", "lo", "hi", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "util", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "i", "encoding", "size", "require_writer", "__commonJSMin", "exports", "module", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "noop", "State", "writer", "create", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "BufferWriter", "Writer", "util", "val", "buf", "pos", "value", "len", "writeStringBuffer", "require_reader", "__commonJSMin", "exports", "module", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "buffer", "create_array", "create", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "nativeBuffer", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "BufferReader", "Reader", "util", "buffer", "len", "require_service", "__commonJSMin", "exports", "module", "Service", "util", "rpcImpl", "requestDelimited", "responseDelimited", "rpcCall", "method", "requestCtor", "responseCtor", "request", "callback", "self", "err", "response", "endedByRPC", "require_rpc", "__commonJSMin", "exports", "rpc", "require_roots", "__commonJSMin", "exports", "module", "require_index_minimal", "__commonJSMin", "exports", "protobuf", "configure", "require_minimal", "__commonJSMin", "exports", "module", "context", "EffectType", "WebViewInternalMessageScope", "import_minimal", "import_minimal", "messageTypeRegistry", "NullValue", "nullValueFromJSON", "object", "nullValueToJSON", "createBaseStruct", "Struct", "message", "writer", "_m0", "key", "value", "Struct_FieldsEntry", "input", "length", "reader", "end", "tag", "entry1", "isObject", "acc", "obj", "entries", "k", "v", "base", "struct", "messageTypeRegistry", "createBaseStruct_FieldsEntry", "Value", "isSet", "createBaseValue", "ListValue", "result", "createBaseListValue", "e", "array", "import_minimal", "import_minimal", "import_minimal", "FormFieldType", "formFieldTypeFromJSON", "object", "formFieldTypeToJSON", "import_minimal", "createBaseFormFieldValue", "FormFieldValue", "message", "writer", "_m0", "FormFieldValue_ListValue", "FormFieldValue_SelectionValue", "FormFieldValue_GroupValue", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFormFieldValue_ListValue", "v", "e", "createBaseFormFieldValue_SelectionValue", "createBaseFormFieldValue_GroupValue", "_", "value", "createBaseFormField", "FormField", "message", "writer", "_m0", "FormFieldValue", "FieldConfig", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFieldConfig", "FieldConfig_String", "FieldConfig_Paragraph", "FieldConfig_Number", "FieldConfig_Boolean", "FieldConfig_List", "FieldConfig_Selection", "FieldConfig_Group", "createBaseFieldConfig_String", "createBaseFieldConfig_Paragraph", "createBaseFieldConfig_Number", "createBaseFieldConfig_Boolean", "_", "createBaseFieldConfig_List", "createBaseFieldConfig_Selection", "v", "FieldConfig_Selection_Item", "e", "createBaseFieldConfig_Selection_Item", "createBaseFieldConfig_Group", "value", "createBaseForm", "Form", "message", "writer", "_m0", "v", "FormField", "input", "length", "reader", "end", "tag", "object", "e", "isSet", "obj", "base", "messageTypeRegistry", "value", "createBaseShowFormEffect", "ShowFormEffect", "message", "writer", "_m0", "Form", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseFormSubmittedEvent", "FormSubmittedEvent", "key", "value", "FormSubmittedEvent_ResultsEntry", "entry1", "isObject", "acc", "FormFieldValue", "entries", "k", "v", "createBaseFormSubmittedEvent_ResultsEntry", "createBaseFormCanceledEvent", "FormCanceledEvent", "import_minimal", "import_minimal", "wasm", "Long", "low", "high", "unsigned", "isLong", "obj", "ctz32", "value", "c", "INT_CACHE", "UINT_CACHE", "fromInt", "cachedObj", "cache", "fromBits", "fromNumber", "UZERO", "ZERO", "TWO_PWR_64_DBL", "MAX_UNSIGNED_VALUE", "TWO_PWR_63_DBL", "MIN_VALUE", "MAX_VALUE", "TWO_PWR_32_DBL", "lowBits", "highBits", "pow_dbl", "fromString", "str", "radix", "p", "radixToPower", "result", "i", "size", "power", "fromValue", "val", "TWO_PWR_16_DBL", "TWO_PWR_24_DBL", "TWO_PWR_24", "ONE", "UONE", "NEG_ONE", "LongPrototype", "radixLong", "div", "rem1", "rem", "remDiv", "intval", "digits", "bit", "top11Bits", "other", "thisNeg", "otherNeg", "addend", "a48", "a32", "a16", "a00", "b48", "b32", "b16", "b00", "c48", "c32", "c16", "c00", "subtrahend", "multiplier", "divisor", "approx", "res", "halfThis", "log2", "delta", "approxRes", "approxRem", "numBits", "b", "le", "hi", "lo", "bytes", "lowBigInt", "highBigInt", "long_default", "import_minimal", "createBaseTimestamp", "Timestamp", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "longToNumber", "object", "isSet", "obj", "base", "messageTypeRegistry", "long", "long_default", "value", "ConsentStatus", "consentStatusFromJSON", "object", "consentStatusToJSON", "Scope", "scopeFromJSON", "scopeToJSON", "createBaseAppPermission", "AppPermission", "message", "writer", "_m0", "v", "Timestamp", "toTimestamp", "input", "length", "reader", "end", "tag", "end2", "fromTimestamp", "isSet", "e", "fromJsonTimestamp", "obj", "base", "messageTypeRegistry", "createBaseDevvitApp", "DevvitApp", "createBaseGetAppPermissionsByUserIdRequest", "GetAppPermissionsByUserIdRequest", "createBaseGetAppPermissionsByUserIdResponse", "GetAppPermissionsByUserIdResponse", "createBaseGrantAppPermissionRequest", "GrantAppPermissionRequest", "createBaseGrantAppPermissionResponse", "GrantAppPermissionResponse", "ErrorMessage", "createBaseRevokeAppPermissionRequest", "RevokeAppPermissionRequest", "createBaseRevokeAppPermissionResponse", "RevokeAppPermissionResponse", "createBaseErrorMessage", "date", "seconds", "nanos", "t", "millis", "o", "value", "createBaseCanRunAsUserEffect", "CanRunAsUserEffect", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseConsentStatusEvent", "ConsentStatusEvent", "consentStatusFromJSON", "consentStatusToJSON", "value", "import_minimal", "import_minimal", "import_minimal", "createBaseEmpty", "Empty", "_", "writer", "_m0", "input", "length", "reader", "end", "message", "tag", "base", "messageTypeRegistry", "createBaseRealtimeRequest", "RealtimeRequest", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "object", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeEvent", "RealtimeEvent", "Struct", "isSet", "isObject", "isObject", "value", "isSet", "RealtimeSubscriptionStatus", "realtimeSubscriptionStatusFromJSON", "object", "realtimeSubscriptionStatusToJSON", "createBaseRealtimeSubscriptionsEffect", "RealtimeSubscriptionsEffect", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeSubscriptionEvent", "RealtimeSubscriptionEvent", "RealtimeEvent", "isSet", "value", "import_minimal", "WebViewImmersiveMode", "webViewImmersiveModeFromJSON", "object", "webViewImmersiveModeToJSON", "createBaseWebViewImmersiveModeEffect", "WebViewImmersiveModeEffect", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "messageTypeRegistry", "value", "WebViewVisibility", "webViewVisibilityFromJSON", "object", "webViewVisibilityToJSON", "createBaseWebViewPostMessageEvent", "WebViewPostMessageEvent", "message", "writer", "_m0", "Value", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "messageTypeRegistry", "createBaseWebViewFullScreenEvent", "WebViewFullScreenEvent", "createBaseWebViewEvent", "WebViewEvent", "createBaseWebViewImmersiveModeChangedEvent", "WebViewImmersiveModeChangedEvent", "webViewImmersiveModeFromJSON", "webViewImmersiveModeToJSON", "createBaseWebViewInternalEventMessage", "WebViewInternalEventMessage", "FormCanceledEvent", "FormSubmittedEvent", "RealtimeSubscriptionEvent", "ConsentStatusEvent", "createBaseWebViewMessageEvent", "WebViewMessageEvent", "WebViewMessageEvent_MessageData", "createBaseWebViewMessageEvent_MessageData", "value", "EFFECTS_WITH_RESPONSE", "EffectType", "emitEffect", "effect", "resolve", "message", "WebViewInternalMessageScope", "id", "handleEffect", "event", "serializedMessage", "WebViewInternalEventMessage", "navigateTo", "thingOrUrl", "inputUrl", "normalizedUrl", "emitEffect", "ConsentStatus", "Scope", "canRunAsUser", "appPermissionState", "ConsentStatus", "scope", "emitEffect", "ICON_FILE_PATH", "showShareSheet", "opts", "iconURL", "ICON_FILE_PATH", "iconRsp", "emitEffect", "getShareData", "assertValidFormFields", "fields", "seenNames", "field", "fieldName", "assertAppSecretsOnly", "flattenFormFieldValue", "value", "getFormValues", "results", "acc", "key", "val", "transformFormFields", "fields", "field", "transformStringField", "transformImageField", "transformParagraphField", "transformNumberField", "transformSelectField", "transformBooleanField", "transformGroupField", "_formKey", "getNextFormKey", "showForm", "formDefinition", "form", "assertValidFormFields", "transformFormFields", "response", "emitEffect", "getFormValues", "showToast", "textOrToast", "toast", "emitEffect", "WebViewImmersiveMode", "tokenParam", "modeListeners", "getWebViewMode", "webViewMode", "requestExpandedMode", "event", "entry", "emitModeEffect", "WebViewImmersiveMode", "exitExpandedMode", "addWebViewModeListener", "callback", "removeWebViewModeListener", "mode", "entryUrl", "url", "tokenParam", "emitEffect", "registerListener", "type", "data", "webViewModeString", "listener", "registerListener"]
|
|
7
7
|
}
|