{"version":3,"file":"protobuf.mjs","sources":["../../../../src/pullClient/protobuf/protobuf.js"],"sourcesContent":["/*!\n * protobuf.js v6.8.6 (c) 2016, daniel wirtz\n * compiled mon, 26 feb 2018 11:35:34 utc\n * licensed under the bsd-3-clause license\n * see: https://github.com/dcodeio/protobuf.js for details\n *\n * Modify a list for integration with Bitrix Framework:\n * - removed integration with RequireJS and AMD package builders;\n */\n(function(undefined){\"use strict\";(function prelude(modules, cache, entries) {\n\n    // This is the prelude used to bundle protobuf.js for the browser. Wraps up the CommonJS\n    // sources through a conflict-free require shim and is again wrapped within an iife that\n    // provides a unified `global` and a minification-friendly `undefined` var plus a global\n    // \"use strict\" directive so that minification can remove the directives of each module.\n\n    function $require(name) {\n        var $module = cache[name];\n        if (!$module)\n            modules[name][0].call($module = cache[name] = { exports: {} }, $require, $module, $module.exports);\n        return $module.exports;\n    }\n\n    // Expose globally (__not__)\n    var protobuf = $require(entries[0]);\n\n    // Be nice to AMD\n    /*/\n    if (typeof define === \"function\" && define.amd)\n        define([\"long\"], function(Long) {\n            if (Long && Long.isLong) {\n                protobuf.util.Long = Long;\n                protobuf.configure();\n            }\n            return protobuf;\n        });\n    //*/\n\n    // Be nice to CommonJS\n    //*/\n    if (typeof module === \"object\" && module && module.exports)\n        module.exports = protobuf;\n    //*/\n\n})/* end of prelude */({1:[function(require,module,exports){\n\"use strict\";\nmodule.exports = asPromise;\n\n/**\n * Callback as used by {@link util.asPromise}.\n * @typedef asPromiseCallback\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {...*} params Additional arguments\n * @returns {undefined}\n */\n\n/**\n * Returns a promise from a node-style callback function.\n * @memberof util\n * @param {asPromiseCallback} fn Function to call\n * @param {*} ctx Function context\n * @param {...*} params Function arguments\n * @returns {Promise<*>} Promisified function\n */\nfunction asPromise(fn, ctx/*, varargs */) {\n    var params  = new Array(arguments.length - 1),\n        offset  = 0,\n        index   = 2,\n        pending = true;\n    while (index < arguments.length)\n        params[offset++] = arguments[index++];\n    return new Promise(function executor(resolve, reject) {\n        params[offset] = function callback(err/*, varargs */) {\n            if (pending) {\n                pending = false;\n                if (err)\n                    reject(err);\n                else {\n                    var params = new Array(arguments.length - 1),\n                        offset = 0;\n                    while (offset < params.length)\n                        params[offset++] = arguments[offset];\n                    resolve.apply(null, params);\n                }\n            }\n        };\n        try {\n            fn.apply(ctx || null, params);\n        } catch (err) {\n            if (pending) {\n                pending = false;\n                reject(err);\n            }\n        }\n    });\n}\n\n},{}],2:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A minimal base64 implementation for number arrays.\n * @memberof util\n * @namespace\n */\nvar base64 = exports;\n\n/**\n * Calculates the byte length of a base64 encoded string.\n * @param {string} string Base64 encoded string\n * @returns {number} Byte length\n */\nbase64.length = function length(string) {\n    var p = string.length;\n    if (!p)\n        return 0;\n    var n = 0;\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\n        ++n;\n    return Math.ceil(string.length * 3) / 4 - n;\n};\n\n// Base64 encoding table\nvar b64 = new Array(64);\n\n// Base64 decoding table\nvar s64 = new Array(123);\n\n// 65..90, 97..122, 48..57, 43, 47\nfor (var i = 0; i < 64;)\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\n\n/**\n * Encodes a buffer to a base64 encoded string.\n * @param {Uint8Array} buffer Source buffer\n * @param {number} start Source start\n * @param {number} end Source end\n * @returns {string} Base64 encoded string\n */\nbase64.encode = function encode(buffer, start, end) {\n    var parts = null,\n        chunk = [];\n    var i = 0, // output index\n        j = 0, // goto index\n        t;     // temporary\n    while (start < end) {\n        var b = buffer[start++];\n        switch (j) {\n            case 0:\n                chunk[i++] = b64[b >> 2];\n                t = (b & 3) << 4;\n                j = 1;\n                break;\n            case 1:\n                chunk[i++] = b64[t | b >> 4];\n                t = (b & 15) << 2;\n                j = 2;\n                break;\n            case 2:\n                chunk[i++] = b64[t | b >> 6];\n                chunk[i++] = b64[b & 63];\n                j = 0;\n                break;\n        }\n        if (i > 8191) {\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\n            i = 0;\n        }\n    }\n    if (j) {\n        chunk[i++] = b64[t];\n        chunk[i++] = 61;\n        if (j === 1)\n            chunk[i++] = 61;\n    }\n    if (parts) {\n        if (i)\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\n        return parts.join(\"\");\n    }\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\n};\n\nvar invalidEncoding = \"invalid encoding\";\n\n/**\n * Decodes a base64 encoded string to a buffer.\n * @param {string} string Source string\n * @param {Uint8Array} buffer Destination buffer\n * @param {number} offset Destination offset\n * @returns {number} Number of bytes written\n * @throws {Error} If encoding is invalid\n */\nbase64.decode = function decode(string, buffer, offset) {\n    var start = offset;\n    var j = 0, // goto index\n        t;     // temporary\n    for (var i = 0; i < string.length;) {\n        var c = string.charCodeAt(i++);\n        if (c === 61 && j > 1)\n            break;\n        if ((c = s64[c]) === undefined)\n            throw Error(invalidEncoding);\n        switch (j) {\n            case 0:\n                t = c;\n                j = 1;\n                break;\n            case 1:\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\n                t = c;\n                j = 2;\n                break;\n            case 2:\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\n                t = c;\n                j = 3;\n                break;\n            case 3:\n                buffer[offset++] = (t & 3) << 6 | c;\n                j = 0;\n                break;\n        }\n    }\n    if (j === 1)\n        throw Error(invalidEncoding);\n    return offset - start;\n};\n\n/**\n * Tests if the specified string appears to be base64 encoded.\n * @param {string} string String to test\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\n */\nbase64.test = function test(string) {\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\n};\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nmodule.exports = codegen;\n\n/**\n * Begins generating a function.\n * @memberof util\n * @param {string[]} functionParams Function parameter names\n * @param {string} [functionName] Function name if not anonymous\n * @returns {Codegen} Appender that appends code to the function's body\n */\nfunction codegen(functionParams, functionName) {\n\n    /* istanbul ignore if */\n    if (typeof functionParams === \"string\") {\n        functionName = functionParams;\n        functionParams = undefined;\n    }\n\n    var body = [];\n\n    /**\n     * Appends code to the function's body or finishes generation.\n     * @typedef Codegen\n     * @type {function}\n     * @param {string|Object.<string,*>} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\n     * @param {...*} [formatParams] Format parameters\n     * @returns {Codegen|Function} Itself or the generated function if finished\n     * @throws {Error} If format parameter counts do not match\n     */\n\n    function Codegen(formatStringOrScope) {\n        // note that explicit array handling below makes this ~50% faster\n\n        // finish the function\n        if (typeof formatStringOrScope !== \"string\") {\n            var source = toString();\n            if (codegen.verbose)\n                console.log(\"codegen: \" + source); // eslint-disable-line no-console\n            source = \"return \" + source;\n            if (formatStringOrScope) {\n                var scopeKeys   = Object.keys(formatStringOrScope),\n                    scopeParams = new Array(scopeKeys.length + 1),\n                    scopeValues = new Array(scopeKeys.length),\n                    scopeOffset = 0;\n                while (scopeOffset < scopeKeys.length) {\n                    scopeParams[scopeOffset] = scopeKeys[scopeOffset];\n                    scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\n                }\n                scopeParams[scopeOffset] = source;\n                return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\n            }\n            return Function(source)(); // eslint-disable-line no-new-func\n        }\n\n        // otherwise append to body\n        var formatParams = new Array(arguments.length - 1),\n            formatOffset = 0;\n        while (formatOffset < formatParams.length)\n            formatParams[formatOffset] = arguments[++formatOffset];\n        formatOffset = 0;\n        formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\n            var value = formatParams[formatOffset++];\n            switch ($1) {\n                case \"d\": case \"f\": return String(Number(value));\n                case \"i\": return String(Math.floor(value));\n                case \"j\": return JSON.stringify(value);\n                case \"s\": return String(value);\n            }\n            return \"%\";\n        });\n        if (formatOffset !== formatParams.length)\n            throw Error(\"parameter count mismatch\");\n        body.push(formatStringOrScope);\n        return Codegen;\n    }\n\n    function toString(functionNameOverride) {\n        return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n  \" + body.join(\"\\n  \") + \"\\n}\";\n    }\n\n    Codegen.toString = toString;\n    return Codegen;\n}\n\n/**\n * Begins generating a function.\n * @memberof util\n * @function codegen\n * @param {string} [functionName] Function name if not anonymous\n * @returns {Codegen} Appender that appends code to the function's body\n * @variation 2\n */\n\n/**\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\n * @name util.codegen.verbose\n * @type {boolean}\n */\ncodegen.verbose = false;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\nmodule.exports = EventEmitter;\n\n/**\n * Constructs a new event emitter instance.\n * @classdesc A minimal event emitter.\n * @memberof util\n * @constructor\n */\nfunction EventEmitter() {\n\n    /**\n     * Registered listeners.\n     * @type {Object.<string,*>}\n     * @private\n     */\n    this._listeners = {};\n}\n\n/**\n * Registers an event listener.\n * @param {string} evt Event name\n * @param {function} fn Listener\n * @param {*} [ctx] Listener context\n * @returns {util.EventEmitter} `this`\n */\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\n        fn  : fn,\n        ctx : ctx || this\n    });\n    return this;\n};\n\n/**\n * Removes an event listener or any matching listeners if arguments are omitted.\n * @param {string} [evt] Event name. Removes all listeners if omitted.\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\n * @returns {util.EventEmitter} `this`\n */\nEventEmitter.prototype.off = function off(evt, fn) {\n    if (evt === undefined)\n        this._listeners = {};\n    else {\n        if (fn === undefined)\n            this._listeners[evt] = [];\n        else {\n            var listeners = this._listeners[evt];\n            for (var i = 0; i < listeners.length;)\n                if (listeners[i].fn === fn)\n                    listeners.splice(i, 1);\n                else\n                    ++i;\n        }\n    }\n    return this;\n};\n\n/**\n * Emits an event by calling its listeners with the specified arguments.\n * @param {string} evt Event name\n * @param {...*} args Arguments\n * @returns {util.EventEmitter} `this`\n */\nEventEmitter.prototype.emit = function emit(evt) {\n    var listeners = this._listeners[evt];\n    if (listeners) {\n        var args = [],\n            i = 1;\n        for (; i < arguments.length;)\n            args.push(arguments[i++]);\n        for (i = 0; i < listeners.length;)\n            listeners[i].fn.apply(listeners[i++].ctx, args);\n    }\n    return this;\n};\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\nmodule.exports = fetch;\n\nvar asPromise = require(1),\n    inquire   = require(7);\n\nvar fs = inquire(\"fs\");\n\n/**\n * Node-style callback as used by {@link util.fetch}.\n * @typedef FetchCallback\n * @type {function}\n * @param {?Error} error Error, if any, otherwise `null`\n * @param {string} [contents] File contents, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Options as used by {@link util.fetch}.\n * @typedef FetchOptions\n * @type {Object}\n * @property {boolean} [binary=false] Whether expecting a binary response\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\n */\n\n/**\n * Fetches the contents of a file.\n * @memberof util\n * @param {string} filename File path or url\n * @param {FetchOptions} options Fetch options\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nfunction fetch(filename, options, callback) {\n    if (typeof options === \"function\") {\n        callback = options;\n        options = {};\n    } else if (!options)\n        options = {};\n\n    if (!callback)\n        return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\n\n    // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\n    if (!options.xhr && fs && fs.readFile)\n        return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\n            return err && typeof XMLHttpRequest !== \"undefined\"\n                ? fetch.xhr(filename, options, callback)\n                : err\n                ? callback(err)\n                : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\n        });\n\n    // use the XHR version otherwise.\n    return fetch.xhr(filename, options, callback);\n}\n\n/**\n * Fetches the contents of a file.\n * @name util.fetch\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n\n/**\n * Fetches the contents of a file.\n * @name util.fetch\n * @function\n * @param {string} path File path or url\n * @param {FetchOptions} [options] Fetch options\n * @returns {Promise<string|Uint8Array>} Promise\n * @variation 3\n */\n\n/**/\nfetch.xhr = function fetch_xhr(filename, options, callback) {\n    var xhr = new XMLHttpRequest();\n    xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\n\n        if (xhr.readyState !== 4)\n            return undefined;\n\n        // local cors security errors return status 0 / empty string, too. afaik this cannot be\n        // reliably distinguished from an actually empty file for security reasons. feel free\n        // to send a pull request if you are aware of a solution.\n        if (xhr.status !== 0 && xhr.status !== 200)\n            return callback(Error(\"status \" + xhr.status));\n\n        // if binary data is expected, make sure that some sort of array is returned, even if\n        // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\n        if (options.binary) {\n            var buffer = xhr.response;\n            if (!buffer) {\n                buffer = [];\n                for (var i = 0; i < xhr.responseText.length; ++i)\n                    buffer.push(xhr.responseText.charCodeAt(i) & 255);\n            }\n            return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\n        }\n        return callback(null, xhr.responseText);\n    };\n\n    if (options.binary) {\n        // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\n        if (\"overrideMimeType\" in xhr)\n            xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n        xhr.responseType = \"arraybuffer\";\n    }\n\n    xhr.open(\"GET\", filename);\n    xhr.send();\n};\n\n},{\"1\":1,\"7\":7}],6:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = factory(factory);\n\n/**\n * Reads / writes floats / doubles from / to buffers.\n * @name util.float\n * @namespace\n */\n\n/**\n * Writes a 32 bit float to a buffer using little endian byte order.\n * @name util.float.writeFloatLE\n * @function\n * @param {number} val Value to write\n * @param {Uint8Array} buf Target buffer\n * @param {number} pos Target buffer offset\n * @returns {undefined}\n */\n\n/**\n * Writes a 32 bit float to a buffer using big endian byte order.\n * @name util.float.writeFloatBE\n * @function\n * @param {number} val Value to write\n * @param {Uint8Array} buf Target buffer\n * @param {number} pos Target buffer offset\n * @returns {undefined}\n */\n\n/**\n * Reads a 32 bit float from a buffer using little endian byte order.\n * @name util.float.readFloatLE\n * @function\n * @param {Uint8Array} buf Source buffer\n * @param {number} pos Source buffer offset\n * @returns {number} Value read\n */\n\n/**\n * Reads a 32 bit float from a buffer using big endian byte order.\n * @name util.float.readFloatBE\n * @function\n * @param {Uint8Array} buf Source buffer\n * @param {number} pos Source buffer offset\n * @returns {number} Value read\n */\n\n/**\n * Writes a 64 bit double to a buffer using little endian byte order.\n * @name util.float.writeDoubleLE\n * @function\n * @param {number} val Value to write\n * @param {Uint8Array} buf Target buffer\n * @param {number} pos Target buffer offset\n * @returns {undefined}\n */\n\n/**\n * Writes a 64 bit double to a buffer using big endian byte order.\n * @name util.float.writeDoubleBE\n * @function\n * @param {number} val Value to write\n * @param {Uint8Array} buf Target buffer\n * @param {number} pos Target buffer offset\n * @returns {undefined}\n */\n\n/**\n * Reads a 64 bit double from a buffer using little endian byte order.\n * @name util.float.readDoubleLE\n * @function\n * @param {Uint8Array} buf Source buffer\n * @param {number} pos Source buffer offset\n * @returns {number} Value read\n */\n\n/**\n * Reads a 64 bit double from a buffer using big endian byte order.\n * @name util.float.readDoubleBE\n * @function\n * @param {Uint8Array} buf Source buffer\n * @param {number} pos Source buffer offset\n * @returns {number} Value read\n */\n\n// Factory function for the purpose of node-based testing in modified global environments\nfunction factory(exports) {\n\n    // float: typed array\n    if (typeof Float32Array !== \"undefined\") (function() {\n\n        var f32 = new Float32Array([ -0 ]),\n            f8b = new Uint8Array(f32.buffer),\n            le  = f8b[3] === 128;\n\n        function writeFloat_f32_cpy(val, buf, pos) {\n            f32[0] = val;\n            buf[pos    ] = f8b[0];\n            buf[pos + 1] = f8b[1];\n            buf[pos + 2] = f8b[2];\n            buf[pos + 3] = f8b[3];\n        }\n\n        function writeFloat_f32_rev(val, buf, pos) {\n            f32[0] = val;\n            buf[pos    ] = f8b[3];\n            buf[pos + 1] = f8b[2];\n            buf[pos + 2] = f8b[1];\n            buf[pos + 3] = f8b[0];\n        }\n\n        /* istanbul ignore next */\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\n        /* istanbul ignore next */\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\n\n        function readFloat_f32_cpy(buf, pos) {\n            f8b[0] = buf[pos    ];\n            f8b[1] = buf[pos + 1];\n            f8b[2] = buf[pos + 2];\n            f8b[3] = buf[pos + 3];\n            return f32[0];\n        }\n\n        function readFloat_f32_rev(buf, pos) {\n            f8b[3] = buf[pos    ];\n            f8b[2] = buf[pos + 1];\n            f8b[1] = buf[pos + 2];\n            f8b[0] = buf[pos + 3];\n            return f32[0];\n        }\n\n        /* istanbul ignore next */\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\n        /* istanbul ignore next */\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\n\n    // float: ieee754\n    })(); else (function() {\n\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\n            var sign = val < 0 ? 1 : 0;\n            if (sign)\n                val = -val;\n            if (val === 0)\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\n            else if (isNaN(val))\n                writeUint(2143289344, buf, pos);\n            else if (val > 3.4028234663852886e+38) // +-Infinity\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\n            else if (val < 1.1754943508222875e-38) // denormal\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\n            else {\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\n            }\n        }\n\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\n\n        function readFloat_ieee754(readUint, buf, pos) {\n            var uint = readUint(buf, pos),\n                sign = (uint >> 31) * 2 + 1,\n                exponent = uint >>> 23 & 255,\n                mantissa = uint & 8388607;\n            return exponent === 255\n                ? mantissa\n                ? NaN\n                : sign * Infinity\n                : exponent === 0 // denormal\n                ? sign * 1.401298464324817e-45 * mantissa\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\n        }\n\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\n\n    })();\n\n    // double: typed array\n    if (typeof Float64Array !== \"undefined\") (function() {\n\n        var f64 = new Float64Array([-0]),\n            f8b = new Uint8Array(f64.buffer),\n            le  = f8b[7] === 128;\n\n        function writeDouble_f64_cpy(val, buf, pos) {\n            f64[0] = val;\n            buf[pos    ] = f8b[0];\n            buf[pos + 1] = f8b[1];\n            buf[pos + 2] = f8b[2];\n            buf[pos + 3] = f8b[3];\n            buf[pos + 4] = f8b[4];\n            buf[pos + 5] = f8b[5];\n            buf[pos + 6] = f8b[6];\n            buf[pos + 7] = f8b[7];\n        }\n\n        function writeDouble_f64_rev(val, buf, pos) {\n            f64[0] = val;\n            buf[pos    ] = f8b[7];\n            buf[pos + 1] = f8b[6];\n            buf[pos + 2] = f8b[5];\n            buf[pos + 3] = f8b[4];\n            buf[pos + 4] = f8b[3];\n            buf[pos + 5] = f8b[2];\n            buf[pos + 6] = f8b[1];\n            buf[pos + 7] = f8b[0];\n        }\n\n        /* istanbul ignore next */\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\n        /* istanbul ignore next */\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\n\n        function readDouble_f64_cpy(buf, pos) {\n            f8b[0] = buf[pos    ];\n            f8b[1] = buf[pos + 1];\n            f8b[2] = buf[pos + 2];\n            f8b[3] = buf[pos + 3];\n            f8b[4] = buf[pos + 4];\n            f8b[5] = buf[pos + 5];\n            f8b[6] = buf[pos + 6];\n            f8b[7] = buf[pos + 7];\n            return f64[0];\n        }\n\n        function readDouble_f64_rev(buf, pos) {\n            f8b[7] = buf[pos    ];\n            f8b[6] = buf[pos + 1];\n            f8b[5] = buf[pos + 2];\n            f8b[4] = buf[pos + 3];\n            f8b[3] = buf[pos + 4];\n            f8b[2] = buf[pos + 5];\n            f8b[1] = buf[pos + 6];\n            f8b[0] = buf[pos + 7];\n            return f64[0];\n        }\n\n        /* istanbul ignore next */\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\n        /* istanbul ignore next */\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\n\n    // double: ieee754\n    })(); else (function() {\n\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\n            var sign = val < 0 ? 1 : 0;\n            if (sign)\n                val = -val;\n            if (val === 0) {\n                writeUint(0, buf, pos + off0);\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\n            } else if (isNaN(val)) {\n                writeUint(0, buf, pos + off0);\n                writeUint(2146959360, buf, pos + off1);\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\n                writeUint(0, buf, pos + off0);\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\n            } else {\n                var mantissa;\n                if (val < 2.2250738585072014e-308) { // denormal\n                    mantissa = val / 5e-324;\n                    writeUint(mantissa >>> 0, buf, pos + off0);\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\n                } else {\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\n                    if (exponent === 1024)\n                        exponent = 1023;\n                    mantissa = val * Math.pow(2, -exponent);\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\n                }\n            }\n        }\n\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\n\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\n            var lo = readUint(buf, pos + off0),\n                hi = readUint(buf, pos + off1);\n            var sign = (hi >> 31) * 2 + 1,\n                exponent = hi >>> 20 & 2047,\n                mantissa = 4294967296 * (hi & 1048575) + lo;\n            return exponent === 2047\n                ? mantissa\n                ? NaN\n                : sign * Infinity\n                : exponent === 0 // denormal\n                ? sign * 5e-324 * mantissa\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\n        }\n\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\n\n    })();\n\n    return exports;\n}\n\n// uint helpers\n\nfunction writeUintLE(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\nfunction writeUintBE(val, buf, pos) {\n    buf[pos    ] =  val >>> 24;\n    buf[pos + 1] =  val >>> 16 & 255;\n    buf[pos + 2] =  val >>> 8  & 255;\n    buf[pos + 3] =  val        & 255;\n}\n\nfunction readUintLE(buf, pos) {\n    return (buf[pos    ]\n          | buf[pos + 1] << 8\n          | buf[pos + 2] << 16\n          | buf[pos + 3] << 24) >>> 0;\n}\n\nfunction readUintBE(buf, pos) {\n    return (buf[pos    ] << 24\n          | buf[pos + 1] << 16\n          | buf[pos + 2] << 8\n          | buf[pos + 3]) >>> 0;\n}\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\nmodule.exports = inquire;\n\n/**\n * Requires a module only if available.\n * @memberof util\n * @param {string} moduleName Module to require\n * @returns {?Object} Required module if available and not empty, otherwise `null`\n */\nfunction inquire(moduleName) {\n    try {\n        /**\n         * @memo change by shevchik\n         *\n         * @see https://github.com/protobufjs/protobuf.js/issues/1754\n         */\n        // var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval ////\n        var mod = require(moduleName); // eslint-disable-line no-eval\n        if (mod && (mod.length || Object.keys(mod).length))\n            return mod;\n    } catch (e) {} // eslint-disable-line no-empty\n    return null;\n}\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A minimal path module to resolve Unix, Windows and URL paths alike.\n * @memberof util\n * @namespace\n */\nvar path = exports;\n\nvar isAbsolute =\n/**\n * Tests if the specified path is absolute.\n * @param {string} path Path to test\n * @returns {boolean} `true` if path is absolute\n */\npath.isAbsolute = function isAbsolute(path) {\n    return /^(?:\\/|\\w+:)/.test(path);\n};\n\nvar normalize =\n/**\n * Normalizes the specified path.\n * @param {string} path Path to normalize\n * @returns {string} Normalized path\n */\npath.normalize = function normalize(path) {\n    path = path.replace(/\\\\/g, \"/\")\n               .replace(/\\/{2,}/g, \"/\");\n    var parts    = path.split(\"/\"),\n        absolute = isAbsolute(path),\n        prefix   = \"\";\n    if (absolute)\n        prefix = parts.shift() + \"/\";\n    for (var i = 0; i < parts.length;) {\n        if (parts[i] === \"..\") {\n            if (i > 0 && parts[i - 1] !== \"..\")\n                parts.splice(--i, 2);\n            else if (absolute)\n                parts.splice(i, 1);\n            else\n                ++i;\n        } else if (parts[i] === \".\")\n            parts.splice(i, 1);\n        else\n            ++i;\n    }\n    return prefix + parts.join(\"/\");\n};\n\n/**\n * Resolves the specified include path against the specified origin path.\n * @param {string} originPath Path to the origin file\n * @param {string} includePath Include path relative to origin path\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\n * @returns {string} Path to the include file\n */\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\n    if (!alreadyNormalized)\n        includePath = normalize(includePath);\n    if (isAbsolute(includePath))\n        return includePath;\n    if (!alreadyNormalized)\n        originPath = normalize(originPath);\n    return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\n};\n\n},{}],9:[function(require,module,exports){\n\"use strict\";\nmodule.exports = pool;\n\n/**\n * An allocator as used by {@link util.pool}.\n * @typedef PoolAllocator\n * @type {function}\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\n\n/**\n * A slicer as used by {@link util.pool}.\n * @typedef PoolSlicer\n * @type {function}\n * @param {number} start Start offset\n * @param {number} end End offset\n * @returns {Uint8Array} Buffer slice\n * @this {Uint8Array}\n */\n\n/**\n * A general purpose buffer pool.\n * @memberof util\n * @function\n * @param {PoolAllocator} alloc Allocator\n * @param {PoolSlicer} slice Slicer\n * @param {number} [size=8192] Slab size\n * @returns {PoolAllocator} Pooled allocator\n */\nfunction pool(alloc, slice, size) {\n    var SIZE   = size || 8192;\n    var MAX    = SIZE >>> 1;\n    var slab   = null;\n    var offset = SIZE;\n    return function pool_alloc(size) {\n        if (size < 1 || size > MAX)\n            return alloc(size);\n        if (offset + size > SIZE) {\n            slab = alloc(SIZE);\n            offset = 0;\n        }\n        var buf = slice.call(slab, offset, offset += size);\n        if (offset & 7) // align to 32 bit\n            offset = (offset | 7) + 1;\n        return buf;\n    };\n}\n\n},{}],10:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A minimal UTF8 implementation for number arrays.\n * @memberof util\n * @namespace\n */\nvar utf8 = exports;\n\n/**\n * Calculates the UTF8 byte length of a string.\n * @param {string} string String\n * @returns {number} Byte length\n */\nutf8.length = function utf8_length(string) {\n    var len = 0,\n        c = 0;\n    for (var i = 0; i < string.length; ++i) {\n        c = string.charCodeAt(i);\n        if (c < 128)\n            len += 1;\n        else if (c < 2048)\n            len += 2;\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\n            ++i;\n            len += 4;\n        } else\n            len += 3;\n    }\n    return len;\n};\n\n/**\n * Reads UTF8 bytes as a string.\n * @param {Uint8Array} buffer Source buffer\n * @param {number} start Source start\n * @param {number} end Source end\n * @returns {string} String read\n */\nutf8.read = function utf8_read(buffer, start, end) {\n    var len = end - start;\n    if (len < 1)\n        return \"\";\n    var parts = null,\n        chunk = [],\n        i = 0, // char offset\n        t;     // temporary\n    while (start < end) {\n        t = buffer[start++];\n        if (t < 128)\n            chunk[i++] = t;\n        else if (t > 191 && t < 224)\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\n        else if (t > 239 && t < 365) {\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\n            chunk[i++] = 0xD800 + (t >> 10);\n            chunk[i++] = 0xDC00 + (t & 1023);\n        } else\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\n        if (i > 8191) {\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\n            i = 0;\n        }\n    }\n    if (parts) {\n        if (i)\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\n        return parts.join(\"\");\n    }\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\n};\n\n/**\n * Writes a string as UTF8 bytes.\n * @param {string} string Source string\n * @param {Uint8Array} buffer Destination buffer\n * @param {number} offset Destination offset\n * @returns {number} Bytes written\n */\nutf8.write = function utf8_write(string, buffer, offset) {\n    var start = offset,\n        c1, // character 1\n        c2; // character 2\n    for (var i = 0; i < string.length; ++i) {\n        c1 = string.charCodeAt(i);\n        if (c1 < 128) {\n            buffer[offset++] = c1;\n        } else if (c1 < 2048) {\n            buffer[offset++] = c1 >> 6       | 192;\n            buffer[offset++] = c1       & 63 | 128;\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n            ++i;\n            buffer[offset++] = c1 >> 18      | 240;\n            buffer[offset++] = c1 >> 12 & 63 | 128;\n            buffer[offset++] = c1 >> 6  & 63 | 128;\n            buffer[offset++] = c1       & 63 | 128;\n        } else {\n            buffer[offset++] = c1 >> 12      | 224;\n            buffer[offset++] = c1 >> 6  & 63 | 128;\n            buffer[offset++] = c1       & 63 | 128;\n        }\n    }\n    return offset - start;\n};\n\n},{}],11:[function(require,module,exports){\n\"use strict\";\nmodule.exports = common;\n\nvar commonRe = /\\/|\\./;\n\n/**\n * Provides common type definitions.\n * Can also be used to provide additional google types or your own custom types.\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\n * @param {Object.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\n * @returns {undefined}\n * @property {INamespace} google/protobuf/any.proto Any\n * @property {INamespace} google/protobuf/duration.proto Duration\n * @property {INamespace} google/protobuf/empty.proto Empty\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\n * @example\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\n * protobuf.common(\"descriptor\", descriptorJson);\n *\n * // manually provides a custom definition (uses my.foo namespace)\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\n */\nfunction common(name, json) {\n    if (!commonRe.test(name)) {\n        name = \"google/protobuf/\" + name + \".proto\";\n        json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\n    }\n    common[name] = json;\n}\n\n// Not provided because of limited use (feel free to discuss or to provide yourself):\n//\n// google/protobuf/descriptor.proto\n// google/protobuf/source_context.proto\n// google/protobuf/type.proto\n//\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\n// the repository or package within the google/protobuf directory.\n\ncommon(\"any\", {\n\n    /**\n     * Properties of a google.protobuf.Any message.\n     * @interface IAny\n     * @type {Object}\n     * @property {string} [typeUrl]\n     * @property {Uint8Array} [bytes]\n     * @memberof common\n     */\n    Any: {\n        fields: {\n            type_url: {\n                type: \"string\",\n                id: 1\n            },\n            value: {\n                type: \"bytes\",\n                id: 2\n            }\n        }\n    }\n});\n\nvar timeType;\n\ncommon(\"duration\", {\n\n    /**\n     * Properties of a google.protobuf.Duration message.\n     * @interface IDuration\n     * @type {Object}\n     * @property {number|Long} [seconds]\n     * @property {number} [nanos]\n     * @memberof common\n     */\n    Duration: timeType = {\n        fields: {\n            seconds: {\n                type: \"int64\",\n                id: 1\n            },\n            nanos: {\n                type: \"int32\",\n                id: 2\n            }\n        }\n    }\n});\n\ncommon(\"timestamp\", {\n\n    /**\n     * Properties of a google.protobuf.Timestamp message.\n     * @interface ITimestamp\n     * @type {Object}\n     * @property {number|Long} [seconds]\n     * @property {number} [nanos]\n     * @memberof common\n     */\n    Timestamp: timeType\n});\n\ncommon(\"empty\", {\n\n    /**\n     * Properties of a google.protobuf.Empty message.\n     * @interface IEmpty\n     * @memberof common\n     */\n    Empty: {\n        fields: {}\n    }\n});\n\ncommon(\"struct\", {\n\n    /**\n     * Properties of a google.protobuf.Struct message.\n     * @interface IStruct\n     * @type {Object}\n     * @property {Object.<string,IValue>} [fields]\n     * @memberof common\n     */\n    Struct: {\n        fields: {\n            fields: {\n                keyType: \"string\",\n                type: \"Value\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Value message.\n     * @interface IValue\n     * @type {Object}\n     * @property {string} [kind]\n     * @property {0} [nullValue]\n     * @property {number} [numberValue]\n     * @property {string} [stringValue]\n     * @property {boolean} [boolValue]\n     * @property {IStruct} [structValue]\n     * @property {IListValue} [listValue]\n     * @memberof common\n     */\n    Value: {\n        oneofs: {\n            kind: {\n                oneof: [\n                    \"nullValue\",\n                    \"numberValue\",\n                    \"stringValue\",\n                    \"boolValue\",\n                    \"structValue\",\n                    \"listValue\"\n                ]\n            }\n        },\n        fields: {\n            nullValue: {\n                type: \"NullValue\",\n                id: 1\n            },\n            numberValue: {\n                type: \"double\",\n                id: 2\n            },\n            stringValue: {\n                type: \"string\",\n                id: 3\n            },\n            boolValue: {\n                type: \"bool\",\n                id: 4\n            },\n            structValue: {\n                type: \"Struct\",\n                id: 5\n            },\n            listValue: {\n                type: \"ListValue\",\n                id: 6\n            }\n        }\n    },\n\n    NullValue: {\n        values: {\n            NULL_VALUE: 0\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.ListValue message.\n     * @interface IListValue\n     * @type {Object}\n     * @property {Array.<IValue>} [values]\n     * @memberof common\n     */\n    ListValue: {\n        fields: {\n            values: {\n                rule: \"repeated\",\n                type: \"Value\",\n                id: 1\n            }\n        }\n    }\n});\n\ncommon(\"wrappers\", {\n\n    /**\n     * Properties of a google.protobuf.DoubleValue message.\n     * @interface IDoubleValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    DoubleValue: {\n        fields: {\n            value: {\n                type: \"double\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.FloatValue message.\n     * @interface IFloatValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    FloatValue: {\n        fields: {\n            value: {\n                type: \"float\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Int64Value message.\n     * @interface IInt64Value\n     * @type {Object}\n     * @property {number|Long} [value]\n     * @memberof common\n     */\n    Int64Value: {\n        fields: {\n            value: {\n                type: \"int64\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.UInt64Value message.\n     * @interface IUInt64Value\n     * @type {Object}\n     * @property {number|Long} [value]\n     * @memberof common\n     */\n    UInt64Value: {\n        fields: {\n            value: {\n                type: \"uint64\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Int32Value message.\n     * @interface IInt32Value\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    Int32Value: {\n        fields: {\n            value: {\n                type: \"int32\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.UInt32Value message.\n     * @interface IUInt32Value\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    UInt32Value: {\n        fields: {\n            value: {\n                type: \"uint32\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.BoolValue message.\n     * @interface IBoolValue\n     * @type {Object}\n     * @property {boolean} [value]\n     * @memberof common\n     */\n    BoolValue: {\n        fields: {\n            value: {\n                type: \"bool\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.StringValue message.\n     * @interface IStringValue\n     * @type {Object}\n     * @property {string} [value]\n     * @memberof common\n     */\n    StringValue: {\n        fields: {\n            value: {\n                type: \"string\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.BytesValue message.\n     * @interface IBytesValue\n     * @type {Object}\n     * @property {Uint8Array} [value]\n     * @memberof common\n     */\n    BytesValue: {\n        fields: {\n            value: {\n                type: \"bytes\",\n                id: 1\n            }\n        }\n    }\n});\n\ncommon(\"field_mask\", {\n\n    /**\n     * Properties of a google.protobuf.FieldMask message.\n     * @interface IDoubleValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    FieldMask: {\n        fields: {\n            paths: {\n                rule: \"repeated\",\n                type: \"string\",\n                id: 1\n            }\n        }\n    }\n});\n\n/**\n * Gets the root definition of the specified common proto file.\n *\n * Bundled definitions are:\n * - google/protobuf/any.proto\n * - google/protobuf/duration.proto\n * - google/protobuf/empty.proto\n * - google/protobuf/field_mask.proto\n * - google/protobuf/struct.proto\n * - google/protobuf/timestamp.proto\n * - google/protobuf/wrappers.proto\n *\n * @param {string} file Proto file name\n * @returns {INamespace|null} Root definition or `null` if not defined\n */\ncommon.get = function get(file) {\n    return common[file] || null;\n};\n\n},{}],12:[function(require,module,exports){\n\"use strict\";\n/**\n * Runtime message from/to plain object converters.\n * @namespace\n */\nvar converter = exports;\n\nvar Enum = require(15),\n    util = require(37);\n\n/**\n * Generates a partial value fromObject conveter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) { gen\n            (\"switch(d%s){\", prop);\n            for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\n                if (field.repeated && values[keys[i]] === field.typeDefault) gen\n                (\"default:\");\n                gen\n                (\"case%j:\", keys[i])\n                (\"case %i:\", values[keys[i]])\n                    (\"m%s=%j\", prop, values[keys[i]])\n                    (\"break\");\n            } gen\n            (\"}\");\n        } else gen\n            (\"if(typeof d%s!==\\\"object\\\")\", prop)\n                (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n            (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\n    } else {\n        var isUnsigned = false;\n        switch (field.type) {\n            case \"double\":\n            case \"float\": gen\n                (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\n                break;\n            case \"uint32\":\n            case \"fixed32\": gen\n                (\"m%s=d%s>>>0\", prop, prop);\n                break;\n            case \"int32\":\n            case \"sint32\":\n            case \"sfixed32\": gen\n                (\"m%s=d%s|0\", prop, prop);\n                break;\n            case \"uint64\":\n                isUnsigned = true;\n                // eslint-disable-line no-fallthrough\n            case \"int64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n                (\"if(util.Long)\")\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\n                    (\"m%s=d%s\", prop, prop)\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\n                    (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n                break;\n            case \"bytes\": gen\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n                (\"else if(d%s.length)\", prop)\n                    (\"m%s=d%s\", prop, prop);\n                break;\n            case \"string\": gen\n                (\"m%s=String(d%s)\", prop, prop);\n                break;\n            case \"bool\": gen\n                (\"m%s=Boolean(d%s)\", prop, prop);\n                break;\n            /* default: gen\n                (\"m%s=d%s\", prop, prop);\n                break; */\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var fields = mtype.fieldsArray;\n    var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n    (\"if(d instanceof this.ctor)\")\n        (\"return d\");\n    if (!fields.length) return gen\n    (\"return new this.ctor\");\n    gen\n    (\"var m=new this.ctor\");\n    for (var i = 0; i < fields.length; ++i) {\n        var field  = fields[i].resolve(),\n            prop   = util.safeProp(field.name);\n\n        // Map fields\n        if (field.map) { gen\n    (\"if(d%s){\", prop)\n        (\"if(typeof d%s!==\\\"object\\\")\", prop)\n            (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n        (\"m%s={}\", prop)\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[ks[i]]\")\n        (\"}\")\n    (\"}\");\n\n        // Repeated fields\n        } else if (field.repeated) { gen\n    (\"if(d%s){\", prop)\n        (\"if(!Array.isArray(d%s))\", prop)\n            (\"throw TypeError(%j)\", field.fullName + \": array expected\")\n        (\"m%s=[]\", prop)\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[i]\")\n        (\"}\")\n    (\"}\");\n\n        // Non-repeated fields\n        } else {\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\n    (\"if(d%s!=null){\", prop); // !== undefined && !== null\n        genValuePartial_fromObject(gen, field, /* not sorted */ i, prop);\n            if (!(field.resolvedType instanceof Enum)) gen\n    (\"}\");\n        }\n    } return gen\n    (\"return m\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n\n/**\n * Generates a partial value toObject converter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) gen\n            (\"d%s=o.enums===String?types[%i].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\n        else gen\n            (\"d%s=types[%i].toObject(m%s,o)\", prop, fieldIndex, prop);\n    } else {\n        var isUnsigned = false;\n        switch (field.type) {\n            case \"double\":\n            case \"float\": gen\n            (\"d%s=o.json&&!isFinite(m%s)?String(m%s):m%s\", prop, prop, prop, prop);\n                break;\n            case \"uint64\":\n                isUnsigned = true;\n                // eslint-disable-line no-fallthrough\n            case \"int64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\n            (\"else\") // Long-like\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n                break;\n            case \"bytes\": gen\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n                break;\n            default: gen\n            (\"d%s=m%s\", prop, prop);\n                break;\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n    if (!fields.length)\n        return util.codegen()(\"return {}\");\n    var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n    (\"if(!o)\")\n        (\"o={}\")\n    (\"var d={}\");\n\n    var repeatedFields = [],\n        mapFields = [],\n        normalFields = [],\n        i = 0;\n    for (; i < fields.length; ++i)\n        if (!fields[i].partOf)\n            ( fields[i].resolve().repeated ? repeatedFields\n            : fields[i].map ? mapFields\n            : normalFields).push(fields[i]);\n\n    if (repeatedFields.length) { gen\n    (\"if(o.arrays||o.defaults){\");\n        for (i = 0; i < repeatedFields.length; ++i) gen\n        (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n        gen\n    (\"}\");\n    }\n\n    if (mapFields.length) { gen\n    (\"if(o.objects||o.defaults){\");\n        for (i = 0; i < mapFields.length; ++i) gen\n        (\"d%s={}\", util.safeProp(mapFields[i].name));\n        gen\n    (\"}\");\n    }\n\n    if (normalFields.length) { gen\n    (\"if(o.defaults){\");\n        for (i = 0; i < normalFields.length; ++i) {\n            var field = normalFields[i],\n                prop  = util.safeProp(field.name);\n            if (field.resolvedType instanceof Enum) gen\n        (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n            else if (field.long) gen\n        (\"if(util.Long){\")\n            (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n        (\"}else\")\n            (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n            else if (field.bytes) gen\n        (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\n            else gen\n        (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n        } gen\n    (\"}\");\n    }\n    var hasKs2 = false;\n    for (i = 0; i < fields.length; ++i) {\n        var field = fields[i],\n            index = mtype._fieldsArray.indexOf(field),\n            prop  = util.safeProp(field.name);\n        if (field.map) {\n            if (!hasKs2) { hasKs2 = true; gen\n    (\"var ks2\");\n            } gen\n    (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n        (\"d%s={}\", prop)\n        (\"for(var j=0;j<ks2.length;++j){\");\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[ks2[j]]\")\n        (\"}\");\n        } else if (field.repeated) { gen\n    (\"if(m%s&&m%s.length){\", prop, prop)\n        (\"d%s=[]\", prop)\n        (\"for(var j=0;j<m%s.length;++j){\", prop);\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[j]\")\n        (\"}\");\n        } else { gen\n    (\"if(m%s!=null&&m.hasOwnProperty(%j)){\", prop, field.name); // !== undefined && !== null\n        genValuePartial_toObject(gen, field, /* sorted */ index, prop);\n        if (field.partOf) gen\n        (\"if(o.oneofs)\")\n            (\"d%s=%j\", util.safeProp(field.partOf.name), field.name);\n        }\n        gen\n    (\"}\");\n    }\n    return gen\n    (\"return d\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n\n},{\"15\":15,\"37\":37}],13:[function(require,module,exports){\n\"use strict\";\nmodule.exports = decoder;\n\nvar Enum    = require(15),\n    types   = require(36),\n    util    = require(37);\n\nfunction missing(field) {\n    return \"missing required '\" + field.name + \"'\";\n}\n\n/**\n * Generates a decoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction decoder(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n    var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\n    (\"if(!(r instanceof Reader))\")\n        (\"r=Reader.create(r)\")\n    (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\n    (\"while(r.pos<c){\")\n        (\"var t=r.uint32()\");\n    if (mtype.group) gen\n        (\"if((t&7)===4)\")\n            (\"break\");\n    gen\n        (\"switch(t>>>3){\");\n\n    var i = 0;\n    for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n        var field = mtype._fieldsArray[i].resolve(),\n            type  = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n            ref   = \"m\" + util.safeProp(field.name); gen\n            (\"case %i:\", field.id);\n\n        // Map fields\n        if (field.map) { gen\n                (\"r.skip().pos++\") // assumes id 1 + key wireType\n                (\"if(%s===util.emptyObject)\", ref)\n                    (\"%s={}\", ref)\n                (\"k=r.%s()\", field.keyType)\n                (\"r.pos++\"); // assumes id 2 + value wireType\n            if (types.long[field.keyType] !== undefined) {\n                if (types.basic[type] === undefined) gen\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\n                else gen\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\n            } else {\n                if (types.basic[type] === undefined) gen\n                (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\n                else gen\n                (\"%s[k]=r.%s()\", ref, type);\n            }\n\n        // Repeated fields\n        } else if (field.repeated) { gen\n\n                (\"if(!(%s&&%s.length))\", ref, ref)\n                    (\"%s=[]\", ref);\n\n            // Packable (always check for forward and backward compatiblity)\n            if (types.packed[type] !== undefined) gen\n                (\"if((t&7)===2){\")\n                    (\"var c2=r.uint32()+r.pos\")\n                    (\"while(r.pos<c2)\")\n                        (\"%s.push(r.%s())\", ref, type)\n                (\"}else\");\n\n            // Non-packed\n            if (types.basic[type] === undefined) gen(field.resolvedType.group\n                    ? \"%s.push(types[%i].decode(r))\"\n                    : \"%s.push(types[%i].decode(r,r.uint32()))\", ref, i);\n            else gen\n                    (\"%s.push(r.%s())\", ref, type);\n\n        // Non-repeated\n        } else if (types.basic[type] === undefined) gen(field.resolvedType.group\n                ? \"%s=types[%i].decode(r)\"\n                : \"%s=types[%i].decode(r,r.uint32())\", ref, i);\n        else gen\n                (\"%s=r.%s()\", ref, type);\n        gen\n                (\"break\");\n    // Unknown fields\n    } gen\n            (\"default:\")\n                (\"r.skipType(t&7)\")\n                (\"break\")\n\n        (\"}\")\n    (\"}\");\n\n    // Field presence\n    for (i = 0; i < mtype._fieldsArray.length; ++i) {\n        var rfield = mtype._fieldsArray[i];\n        if (rfield.required) gen\n    (\"if(!m.hasOwnProperty(%j))\", rfield.name)\n        (\"throw util.ProtocolError(%j,{instance:m})\", missing(rfield));\n    }\n\n    return gen\n    (\"return m\");\n    /* eslint-enable no-unexpected-multiline */\n}\n\n},{\"15\":15,\"36\":36,\"37\":37}],14:[function(require,module,exports){\n\"use strict\";\nmodule.exports = encoder;\n\nvar Enum     = require(15),\n    types    = require(36),\n    util     = require(37);\n\n/**\n * Generates a partial message type encoder.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genTypePartial(gen, field, fieldIndex, ref) {\n    return field.resolvedType.group\n        ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\n        : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n    (\"if(!w)\")\n        (\"w=Writer.create()\");\n\n    var i, ref;\n\n    // \"when a message is serialized its known fields should be written sequentially by field number\"\n    var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n    for (var i = 0; i < fields.length; ++i) {\n        var field    = fields[i].resolve(),\n            index    = mtype._fieldsArray.indexOf(field),\n            type     = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n            wireType = types.basic[type];\n            ref      = \"m\" + util.safeProp(field.name);\n\n        // Map fields\n        if (field.map) {\n            gen\n    (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\n            (\"w.uint32(%i).fork().uint32(%i).%s(ks[i])\", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n            if (wireType === undefined) gen\n            (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n            else gen\n            (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n            gen\n        (\"}\")\n    (\"}\");\n\n            // Repeated fields\n        } else if (field.repeated) { gen\n    (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n            // Packed repeated\n            if (field.packed && types.packed[type] !== undefined) { gen\n\n        (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n        (\"for(var i=0;i<%s.length;++i)\", ref)\n            (\"w.%s(%s[i])\", type, ref)\n        (\"w.ldelim()\");\n\n            // Non-packed\n            } else { gen\n\n        (\"for(var i=0;i<%s.length;++i)\", ref);\n                if (wireType === undefined)\n            genTypePartial(gen, field, index, ref + \"[i]\");\n                else gen\n            (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n            } gen\n    (\"}\");\n\n        // Non-repeated\n        } else {\n            if (field.optional) gen\n    (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\n\n            if (wireType === undefined)\n        genTypePartial(gen, field, index, ref);\n            else gen\n        (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n        }\n    }\n\n    return gen\n    (\"return w\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n},{\"15\":15,\"36\":36,\"37\":37}],15:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(24);\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(23),\n    util = require(37);\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.<string,number>} [values] Enum values as an object, by name\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.<string,string>} [comments] The value comments for this enum\n */\nfunction Enum(name, values, options, comment, comments) {\n    ReflectionObject.call(this, name, options);\n\n    if (values && typeof values !== \"object\")\n        throw TypeError(\"values must be an object\");\n\n    /**\n     * Enum values by id.\n     * @type {Object.<number,string>}\n     */\n    this.valuesById = {};\n\n    /**\n     * Enum values by name.\n     * @type {Object.<string,number>}\n     */\n    this.values = Object.create(this.valuesById); // toJSON, marker\n\n    /**\n     * Enum comment text.\n     * @type {string|null}\n     */\n    this.comment = comment;\n\n    /**\n     * Value comment texts, if any.\n     * @type {Object.<string,string>}\n     */\n    this.comments = comments || {};\n\n    /**\n     * Reserved ranges, if any.\n     * @type {Array.<number[]|string>}\n     */\n    this.reserved = undefined; // toJSON\n\n    // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n    // compatible enum. This is used by pbts to write actual enum definitions that work for\n    // static and reflection code alike instead of emitting generic object definitions.\n\n    if (values)\n        for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n            if (typeof values[keys[i]] === \"number\") // use forward entries only\n                this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.<string,number>} values Enum values\n * @property {Object.<string,*>} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n    var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n    enm.reserved = json.reserved;\n    return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"options\"  , this.options,\n        \"values\"   , this.values,\n        \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n        \"comment\"  , keepComments ? this.comment : undefined,\n        \"comments\" , keepComments ? this.comments : undefined\n    ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment) {\n    // utilized by the parser but not by .fromJSON\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    if (!util.isInteger(id))\n        throw TypeError(\"id must be an integer\");\n\n    if (this.values[name] !== undefined)\n        throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n    if (this.isReservedId(id))\n        throw Error(\"id \" + id + \" is reserved in \" + this);\n\n    if (this.isReservedName(name))\n        throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n    if (this.valuesById[id] !== undefined) {\n        if (!(this.options && this.options.allow_alias))\n            throw Error(\"duplicate id \" + id + \" in \" + this);\n        this.values[name] = id;\n    } else\n        this.valuesById[this.values[name] = id] = name;\n\n    this.comments[name] = comment || null;\n    return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    var val = this.values[name];\n    if (val == null)\n        throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n    delete this.valuesById[val];\n    delete this.values[name];\n    delete this.comments[name];\n\n    return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n    return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n    return Namespace.isReservedName(this.reserved, name);\n};\n\n},{\"23\":23,\"24\":24,\"37\":37}],16:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(24);\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum  = require(15),\n    types = require(36),\n    util  = require(37);\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n    return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n    if (util.isObject(rule)) {\n        comment = extend;\n        options = rule;\n        rule = extend = undefined;\n    } else if (util.isObject(extend)) {\n        comment = options;\n        options = extend;\n        extend = undefined;\n    }\n\n    ReflectionObject.call(this, name, options);\n\n    if (!util.isInteger(id) || id < 0)\n        throw TypeError(\"id must be a non-negative integer\");\n\n    if (!util.isString(type))\n        throw TypeError(\"type must be a string\");\n\n    if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n        throw TypeError(\"rule must be a string rule\");\n\n    if (extend !== undefined && !util.isString(extend))\n        throw TypeError(\"extend must be a string\");\n\n    /**\n     * Field rule, if any.\n     * @type {string|undefined}\n     */\n    this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n    /**\n     * Field type.\n     * @type {string}\n     */\n    this.type = type; // toJSON\n\n    /**\n     * Unique field id.\n     * @type {number}\n     */\n    this.id = id; // toJSON, marker\n\n    /**\n     * Extended type if different from parent.\n     * @type {string|undefined}\n     */\n    this.extend = extend || undefined; // toJSON\n\n    /**\n     * Whether this field is required.\n     * @type {boolean}\n     */\n    this.required = rule === \"required\";\n\n    /**\n     * Whether this field is optional.\n     * @type {boolean}\n     */\n    this.optional = !this.required;\n\n    /**\n     * Whether this field is repeated.\n     * @type {boolean}\n     */\n    this.repeated = rule === \"repeated\";\n\n    /**\n     * Whether this field is a map or not.\n     * @type {boolean}\n     */\n    this.map = false;\n\n    /**\n     * Message this field belongs to.\n     * @type {Type|null}\n     */\n    this.message = null;\n\n    /**\n     * OneOf this field belongs to, if any,\n     * @type {OneOf|null}\n     */\n    this.partOf = null;\n\n    /**\n     * The field type's default value.\n     * @type {*}\n     */\n    this.typeDefault = null;\n\n    /**\n     * The field's default value on prototypes.\n     * @type {*}\n     */\n    this.defaultValue = null;\n\n    /**\n     * Whether this field's value should be treated as a long.\n     * @type {boolean}\n     */\n    this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n    /**\n     * Whether this field's value is a buffer.\n     * @type {boolean}\n     */\n    this.bytes = type === \"bytes\";\n\n    /**\n     * Resolved type if not a basic type.\n     * @type {Type|Enum|null}\n     */\n    this.resolvedType = null;\n\n    /**\n     * Sister-field within the extended type if a declaring extension field.\n     * @type {Field|null}\n     */\n    this.extensionField = null;\n\n    /**\n     * Sister-field within the declaring namespace if an extended field.\n     * @type {Field|null}\n     */\n    this.declaringField = null;\n\n    /**\n     * Internally remembers whether this field is packed.\n     * @type {boolean|null}\n     * @private\n     */\n    this._packed = null;\n\n    /**\n     * Comment for this field.\n     * @type {string|null}\n     */\n    this.comment = comment;\n}\n\n/**\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n    get: function() {\n        // defaults to packed=true if not explicity set to false\n        if (this._packed === null)\n            this._packed = this.getOption(\"packed\") !== false;\n        return this._packed;\n    }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n    if (name === \"packed\") // clear cached before setting\n        this._packed = null;\n    return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.<string,*>} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"rule\"    , this.rule !== \"optional\" && this.rule || undefined,\n        \"type\"    , this.type,\n        \"id\"      , this.id,\n        \"extend\"  , this.extend,\n        \"options\" , this.options,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n    if (this.resolved)\n        return this;\n\n    if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n        this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n        if (this.resolvedType instanceof Type)\n            this.typeDefault = null;\n        else // instanceof Enum\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n    }\n\n    // use explicitly set default value if present\n    if (this.options && this.options[\"default\"] != null) {\n        this.typeDefault = this.options[\"default\"];\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n            this.typeDefault = this.resolvedType.values[this.typeDefault];\n    }\n\n    // remove unnecessary options\n    if (this.options) {\n        if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n            delete this.options.packed;\n        if (!Object.keys(this.options).length)\n            this.options = undefined;\n    }\n\n    // convert to internal data type if necesssary\n    if (this.long) {\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n        /* istanbul ignore else */\n        if (Object.freeze)\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\n        var buf;\n        if (util.base64.test(this.typeDefault))\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n        else\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n        this.typeDefault = buf;\n    }\n\n    // take special care of maps and repeated fields\n    if (this.map)\n        this.defaultValue = util.emptyObject;\n    else if (this.repeated)\n        this.defaultValue = util.emptyArray;\n    else\n        this.defaultValue = this.typeDefault;\n\n    // ensure proper value on prototype\n    if (this.parent instanceof Type)\n        this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n    return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n    // submessage: decorate the submessage and use its name as the type\n    if (typeof fieldType === \"function\")\n        fieldType = util.decorateType(fieldType).name;\n\n    // enum reference: create a reflected copy of the enum and keep reuseing it\n    else if (fieldType && typeof fieldType === \"object\")\n        fieldType = util.decorateEnum(fieldType).name;\n\n    return function fieldDecorator(prototype, fieldName) {\n        util.decorateType(prototype.constructor)\n            .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n    };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor<T>|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message<T>\n * @variation 2\n */\n// like Field.d but without a default value\n\nField._configure = function configure(Type_) {\n    Type = Type_;\n};\n\n},{\"15\":15,\"24\":24,\"36\":36,\"37\":37}],17:[function(require,module,exports){\n\"use strict\";\nvar protobuf = module.exports = require(18);\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n    if (typeof root === \"function\") {\n        callback = root;\n        root = new protobuf.Root();\n    } else if (!root)\n        root = new protobuf.Root();\n    return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise<Root>} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise<Root>\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n    if (!root)\n        root = new protobuf.Root();\n    return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder          = require(14);\nprotobuf.decoder          = require(13);\nprotobuf.verifier         = require(40);\nprotobuf.converter        = require(12);\n\n// Reflection\nprotobuf.ReflectionObject = require(24);\nprotobuf.Namespace        = require(23);\nprotobuf.Root             = require(29);\nprotobuf.Enum             = require(15);\nprotobuf.Type             = require(35);\nprotobuf.Field            = require(16);\nprotobuf.OneOf            = require(25);\nprotobuf.MapField         = require(20);\nprotobuf.Service          = require(33);\nprotobuf.Method           = require(22);\n\n// Runtime\nprotobuf.Message          = require(21);\nprotobuf.wrappers         = require(41);\n\n// Utility\nprotobuf.types            = require(36);\nprotobuf.util             = require(37);\n\n// Configure reflection\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"18\":18,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"29\":29,\"33\":33,\"35\":35,\"36\":36,\"37\":37,\"40\":40,\"41\":41}],18:[function(require,module,exports){\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(42);\nprotobuf.BufferWriter = require(43);\nprotobuf.Reader       = require(27);\nprotobuf.BufferReader = require(28);\n\n// Utility\nprotobuf.util         = require(39);\nprotobuf.rpc          = require(31);\nprotobuf.roots        = require(30);\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.Reader._configure(protobuf.BufferReader);\n    protobuf.util._configure();\n}\n\n// Configure serialization\nprotobuf.Writer._configure(protobuf.BufferWriter);\nconfigure();\n\n},{\"27\":27,\"28\":28,\"30\":30,\"31\":31,\"39\":39,\"42\":42,\"43\":43}],19:[function(require,module,exports){\n\"use strict\";\nvar protobuf = module.exports = require(17);\n\nprotobuf.build = \"full\";\n\n// Parser\nprotobuf.tokenize         = require(34);\nprotobuf.parse            = require(26);\nprotobuf.common           = require(11);\n\n// Configure parser\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\n\n},{\"11\":11,\"17\":17,\"26\":26,\"34\":34}],20:[function(require,module,exports){\n\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(16);\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types   = require(36),\n    util    = require(37);\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n    Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n    /* istanbul ignore if */\n    if (!util.isString(keyType))\n        throw TypeError(\"keyType must be a string\");\n\n    /**\n     * Key type.\n     * @type {string}\n     */\n    this.keyType = keyType; // toJSON, marker\n\n    /**\n     * Resolved key type if not a basic type.\n     * @type {ReflectionObject|null}\n     */\n    this.resolvedKeyType = null;\n\n    // Overrides Field#map\n    this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n    return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"keyType\" , this.keyType,\n        \"type\"    , this.type,\n        \"id\"      , this.id,\n        \"extend\"  , this.extend,\n        \"options\" , this.options,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n    if (this.resolved)\n        return this;\n\n    // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n    if (types.mapKey[this.keyType] === undefined)\n        throw Error(\"invalid key type: \" + this.keyType);\n\n    return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n    // submessage value: decorate the submessage and use its name as the type\n    if (typeof fieldValueType === \"function\")\n        fieldValueType = util.decorateType(fieldValueType).name;\n\n    // enum reference value: create a reflected copy of the enum and keep reuseing it\n    else if (fieldValueType && typeof fieldValueType === \"object\")\n        fieldValueType = util.decorateEnum(fieldValueType).name;\n\n    return function mapFieldDecorator(prototype, fieldName) {\n        util.decorateType(prototype.constructor)\n            .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n    };\n};\n\n},{\"16\":16,\"36\":36,\"37\":37}],21:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Message;\n\nvar util = require(39);\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties<T>} [properties] Properties to set\n * @template T extends object\n */\nfunction Message(properties) {\n    // not used internally\n    if (properties)\n        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n            this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<T>} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.create = function create(properties) {\n    return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encode = function encode(message, writer) {\n    return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n    return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decode = function decode(reader) {\n    return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n    return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n    return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object\n * @returns {T} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.fromObject = function fromObject(object) {\n    return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.toObject = function toObject(message, options) {\n    return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.<string,*>} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n    return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/\n},{\"39\":39}],22:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(24);\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(37);\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this method\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\n\n    /* istanbul ignore next */\n    if (util.isObject(requestStream)) {\n        options = requestStream;\n        requestStream = responseStream = undefined;\n    } else if (util.isObject(responseStream)) {\n        options = responseStream;\n        responseStream = undefined;\n    }\n\n    /* istanbul ignore if */\n    if (!(type === undefined || util.isString(type)))\n        throw TypeError(\"type must be a string\");\n\n    /* istanbul ignore if */\n    if (!util.isString(requestType))\n        throw TypeError(\"requestType must be a string\");\n\n    /* istanbul ignore if */\n    if (!util.isString(responseType))\n        throw TypeError(\"responseType must be a string\");\n\n    ReflectionObject.call(this, name, options);\n\n    /**\n     * Method type.\n     * @type {string}\n     */\n    this.type = type || \"rpc\"; // toJSON\n\n    /**\n     * Request type.\n     * @type {string}\n     */\n    this.requestType = requestType; // toJSON, marker\n\n    /**\n     * Whether requests are streamed or not.\n     * @type {boolean|undefined}\n     */\n    this.requestStream = requestStream ? true : undefined; // toJSON\n\n    /**\n     * Response type.\n     * @type {string}\n     */\n    this.responseType = responseType; // toJSON\n\n    /**\n     * Whether responses are streamed or not.\n     * @type {boolean|undefined}\n     */\n    this.responseStream = responseStream ? true : undefined; // toJSON\n\n    /**\n     * Resolved request type.\n     * @type {Type|null}\n     */\n    this.resolvedRequestType = null;\n\n    /**\n     * Resolved response type.\n     * @type {Type|null}\n     */\n    this.resolvedResponseType = null;\n\n    /**\n     * Comment for this method\n     * @type {string|null}\n     */\n    this.comment = comment;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.<string,*>} [options] Method options\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n    return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"type\"           , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n        \"requestType\"    , this.requestType,\n        \"requestStream\"  , this.requestStream,\n        \"responseType\"   , this.responseType,\n        \"responseStream\" , this.responseStream,\n        \"options\"        , this.options,\n        \"comment\"        , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n    /* istanbul ignore if */\n    if (this.resolved)\n        return this;\n\n    this.resolvedRequestType = this.parent.lookupType(this.requestType);\n    this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n    return ReflectionObject.prototype.resolve.call(this);\n};\n\n},{\"24\":24,\"37\":37}],23:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(24);\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Enum     = require(15),\n    Field    = require(16),\n    util     = require(37);\n\nvar Type,    // cyclic\n    Service; // \"\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.<string,*>} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n    return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.<string,*>|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n    if (!(array && array.length))\n        return undefined;\n    var obj = {};\n    for (var i = 0; i < array.length; ++i)\n        obj[array[i].name] = array[i].toJSON(toJSONOptions);\n    return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n    if (reserved)\n        for (var i = 0; i < reserved.length; ++i)\n            if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\n                return true;\n    return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n    if (reserved)\n        for (var i = 0; i < reserved.length; ++i)\n            if (reserved[i] === name)\n                return true;\n    return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n    ReflectionObject.call(this, name, options);\n\n    /**\n     * Nested objects by name.\n     * @type {Object.<string,ReflectionObject>|undefined}\n     */\n    this.nested = undefined; // toJSON\n\n    /**\n     * Cached nested objects as an array.\n     * @type {ReflectionObject[]|null}\n     * @private\n     */\n    this._nestedArray = null;\n}\n\nfunction clearCache(namespace) {\n    namespace._nestedArray = null;\n    return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n    get: function() {\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n    }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.<string,*>} [options] Namespace options\n * @property {Object.<string,AnyNestedObject>} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\n */\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n    return util.toObject([\n        \"options\" , this.options,\n        \"nested\"  , arrayToJSON(this.nestedArray, toJSONOptions)\n    ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.<string,AnyNestedObject>} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n    var ns = this;\n    /* istanbul ignore else */\n    if (nestedJson) {\n        for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n            nested = nestedJson[names[i]];\n            ns.add( // most to least likely\n                ( nested.fields !== undefined\n                ? Type.fromJSON\n                : nested.values !== undefined\n                ? Enum.fromJSON\n                : nested.methods !== undefined\n                ? Service.fromJSON\n                : nested.id !== undefined\n                ? Field.fromJSON\n                : Namespace.fromJSON )(names[i], nested)\n            );\n        }\n    }\n    return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n    return this.nested && this.nested[name]\n        || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.<string,number>} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n    if (this.nested && this.nested[name] instanceof Enum)\n        return this.nested[name].values;\n    throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n    if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\n        throw TypeError(\"object must be a valid nested object\");\n\n    if (!this.nested)\n        this.nested = {};\n    else {\n        var prev = this.get(object.name);\n        if (prev) {\n            if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n                // replace plain namespace but keep existing nested elements and options\n                var nested = prev.nestedArray;\n                for (var i = 0; i < nested.length; ++i)\n                    object.add(nested[i]);\n                this.remove(prev);\n                if (!this.nested)\n                    this.nested = {};\n                object.setOptions(prev.options, true);\n\n            } else\n                throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n        }\n    }\n    this.nested[object.name] = object;\n    object.onAdd(this);\n    return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n    if (!(object instanceof ReflectionObject))\n        throw TypeError(\"object must be a ReflectionObject\");\n    if (object.parent !== this)\n        throw Error(object + \" is not a member of \" + this);\n\n    delete this.nested[object.name];\n    if (!Object.keys(this.nested).length)\n        this.nested = undefined;\n\n    object.onRemove(this);\n    return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n    if (util.isString(path))\n        path = path.split(\".\");\n    else if (!Array.isArray(path))\n        throw TypeError(\"illegal path\");\n    if (path && path.length && path[0] === \"\")\n        throw Error(\"path must be relative\");\n\n    var ptr = this;\n    while (path.length > 0) {\n        var part = path.shift();\n        if (ptr.nested && ptr.nested[part]) {\n            ptr = ptr.nested[part];\n            if (!(ptr instanceof Namespace))\n                throw Error(\"path conflicts with non-namespace objects\");\n        } else\n            ptr.add(ptr = new Namespace(part));\n    }\n    if (json)\n        ptr.addJSON(json);\n    return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n    var nested = this.nestedArray, i = 0;\n    while (i < nested.length)\n        if (nested[i] instanceof Namespace)\n            nested[i++].resolveAll();\n        else\n            nested[i++].resolve();\n    return this.resolve();\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n\n    /* istanbul ignore next */\n    if (typeof filterTypes === \"boolean\") {\n        parentAlreadyChecked = filterTypes;\n        filterTypes = undefined;\n    } else if (filterTypes && !Array.isArray(filterTypes))\n        filterTypes = [ filterTypes ];\n\n    if (util.isString(path) && path.length) {\n        if (path === \".\")\n            return this.root;\n        path = path.split(\".\");\n    } else if (!path.length)\n        return this;\n\n    // Start at root if path is absolute\n    if (path[0] === \"\")\n        return this.root.lookup(path.slice(1), filterTypes);\n\n    // Test if the first part matches any nested object, and if so, traverse if path contains more\n    var found = this.get(path[0]);\n    if (found) {\n        if (path.length === 1) {\n            if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\n                return found;\n        } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\n            return found;\n\n    // Otherwise try each nested namespace\n    } else\n        for (var i = 0; i < this.nestedArray.length; ++i)\n            if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\n                return found;\n\n    // If there hasn't been a match, try again at the parent\n    if (this.parent === null || parentAlreadyChecked)\n        return null;\n    return this.parent.lookup(path, filterTypes);\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n    var found = this.lookup(path, [ Type ]);\n    if (!found)\n        throw Error(\"no such type: \" + path);\n    return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n    var found = this.lookup(path, [ Enum ]);\n    if (!found)\n        throw Error(\"no such Enum '\" + path + \"' in \" + this);\n    return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n    var found = this.lookup(path, [ Type, Enum ]);\n    if (!found)\n        throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n    return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n    var found = this.lookup(path, [ Service ]);\n    if (!found)\n        throw Error(\"no such Service '\" + path + \"' in \" + this);\n    return found;\n};\n\nNamespace._configure = function(Type_, Service_) {\n    Type    = Type_;\n    Service = Service_;\n};\n\n},{\"15\":15,\"16\":16,\"24\":24,\"37\":37}],24:[function(require,module,exports){\n\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nvar util = require(37);\n\nvar Root; // cyclic\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.<string,*>} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    if (options && !util.isObject(options))\n        throw TypeError(\"options must be an object\");\n\n    /**\n     * Options.\n     * @type {Object.<string,*>|undefined}\n     */\n    this.options = options; // toJSON\n\n    /**\n     * Unique name within its namespace.\n     * @type {string}\n     */\n    this.name = name;\n\n    /**\n     * Parent namespace.\n     * @type {Namespace|null}\n     */\n    this.parent = null;\n\n    /**\n     * Whether already resolved or not.\n     * @type {boolean}\n     */\n    this.resolved = false;\n\n    /**\n     * Comment text, if any.\n     * @type {string|null}\n     */\n    this.comment = null;\n\n    /**\n     * Defining file name.\n     * @type {string|null}\n     */\n    this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n    /**\n     * Reference to the root namespace.\n     * @name ReflectionObject#root\n     * @type {Root}\n     * @readonly\n     */\n    root: {\n        get: function() {\n            var ptr = this;\n            while (ptr.parent !== null)\n                ptr = ptr.parent;\n            return ptr;\n        }\n    },\n\n    /**\n     * Full name including leading dot.\n     * @name ReflectionObject#fullName\n     * @type {string}\n     * @readonly\n     */\n    fullName: {\n        get: function() {\n            var path = [ this.name ],\n                ptr = this.parent;\n            while (ptr) {\n                path.unshift(ptr.name);\n                ptr = ptr.parent;\n            }\n            return path.join(\".\");\n        }\n    }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.<string,*>} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n    throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n    if (this.parent && this.parent !== parent)\n        this.parent.remove(this);\n    this.parent = parent;\n    this.resolved = false;\n    var root = parent.root;\n    if (root instanceof Root)\n        root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n    var root = parent.root;\n    if (root instanceof Root)\n        root._handleRemove(this);\n    this.parent = null;\n    this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n    if (this.resolved)\n        return this;\n    if (this.root instanceof Root)\n        this.resolved = true; // only if part of a root\n    return this;\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n    if (this.options)\n        return this.options[name];\n    return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n    if (!ifNotSet || !this.options || this.options[name] === undefined)\n        (this.options || (this.options = {}))[name] = value;\n    return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.<string,*>} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n    if (options)\n        for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n            this.setOption(keys[i], options[keys[i]], ifNotSet);\n    return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n    var className = this.constructor.className,\n        fullName  = this.fullName;\n    if (fullName.length)\n        return className + \" \" + fullName;\n    return className;\n};\n\nReflectionObject._configure = function(Root_) {\n    Root = Root_;\n};\n\n},{\"37\":37}],25:[function(require,module,exports){\n\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(24);\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(16),\n    util  = require(37);\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.<string,*>} [fieldNames] Field names\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n    if (!Array.isArray(fieldNames)) {\n        options = fieldNames;\n        fieldNames = undefined;\n    }\n    ReflectionObject.call(this, name, options);\n\n    /* istanbul ignore if */\n    if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n        throw TypeError(\"fieldNames must be an Array\");\n\n    /**\n     * Field names that belong to this oneof.\n     * @type {string[]}\n     */\n    this.oneof = fieldNames || []; // toJSON, marker\n\n    /**\n     * Fields that belong to this oneof as an array for iteration.\n     * @type {Field[]}\n     * @readonly\n     */\n    this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n    /**\n     * Comment for this field.\n     * @type {string|null}\n     */\n    this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.<string>} oneof Oneof field names\n * @property {Object.<string,*>} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n    return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"options\" , this.options,\n        \"oneof\"   , this.oneof,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n    if (oneof.parent)\n        for (var i = 0; i < oneof.fieldsArray.length; ++i)\n            if (!oneof.fieldsArray[i].parent)\n                oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n    /* istanbul ignore if */\n    if (!(field instanceof Field))\n        throw TypeError(\"field must be a Field\");\n\n    if (field.parent && field.parent !== this.parent)\n        field.parent.remove(field);\n    this.oneof.push(field.name);\n    this.fieldsArray.push(field);\n    field.partOf = this; // field.parent remains null\n    addFieldsToParent(this);\n    return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n    /* istanbul ignore if */\n    if (!(field instanceof Field))\n        throw TypeError(\"field must be a Field\");\n\n    var index = this.fieldsArray.indexOf(field);\n\n    /* istanbul ignore if */\n    if (index < 0)\n        throw Error(field + \" is not a member of \" + this);\n\n    this.fieldsArray.splice(index, 1);\n    index = this.oneof.indexOf(field.name);\n\n    /* istanbul ignore else */\n    if (index > -1) // theoretical\n        this.oneof.splice(index, 1);\n\n    field.partOf = null;\n    return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n    ReflectionObject.prototype.onAdd.call(this, parent);\n    var self = this;\n    // Collect present fields\n    for (var i = 0; i < this.oneof.length; ++i) {\n        var field = parent.get(this.oneof[i]);\n        if (field && !field.partOf) {\n            field.partOf = self;\n            self.fieldsArray.push(field);\n        }\n    }\n    // Add not yet present fields\n    addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n    for (var i = 0, field; i < this.fieldsArray.length; ++i)\n        if ((field = this.fieldsArray[i]).parent)\n            field.parent.remove(field);\n    ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n    var fieldNames = new Array(arguments.length),\n        index = 0;\n    while (index < arguments.length)\n        fieldNames[index] = arguments[index++];\n    return function oneOfDecorator(prototype, oneofName) {\n        util.decorateType(prototype.constructor)\n            .add(new OneOf(oneofName, fieldNames));\n        Object.defineProperty(prototype, oneofName, {\n            get: util.oneOfGetter(fieldNames),\n            set: util.oneOfSetter(fieldNames)\n        });\n    };\n};\n\n},{\"16\":16,\"24\":24,\"37\":37}],26:[function(require,module,exports){\n\"use strict\";\nmodule.exports = parse;\n\nparse.filename = null;\nparse.defaults = { keepCase: false };\n\nvar tokenize  = require(34),\n    Root      = require(29),\n    Type      = require(35),\n    Field     = require(16),\n    MapField  = require(20),\n    OneOf     = require(25),\n    Enum      = require(15),\n    Service   = require(33),\n    Method    = require(22),\n    types     = require(36),\n    util      = require(37);\n\nvar base10Re    = /^[1-9][0-9]*$/,\n    base10NegRe = /^-?[1-9][0-9]*$/,\n    base16Re    = /^0[x][0-9a-fA-F]+$/,\n    base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\n    base8Re     = /^0[0-7]+$/,\n    base8NegRe  = /^-?0[0-7]+$/,\n    numberRe    = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\n    nameRe      = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\n    typeRefRe   = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\n    fqTypeRefRe = /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;\n\n/**\n * Result object returned from {@link parse}.\n * @interface IParserResult\n * @property {string|undefined} package Package name, if declared\n * @property {string[]|undefined} imports Imports, if any\n * @property {string[]|undefined} weakImports Weak imports, if any\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\n * @property {Root} root Populated root instance\n */\n\n/**\n * Options modifying the behavior of {@link parse}.\n * @interface IParseOptions\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\n */\n\n/**\n * Options modifying the behavior of JSON serialization.\n * @interface IToJSONOptions\n * @property {boolean} [keepComments=false] Serializes comments.\n */\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @param {string} source Source contents\n * @param {Root} root Root to populate\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n */\nfunction parse(source, root, options) {\n    /* eslint-disable callback-return */\n    if (!(root instanceof Root)) {\n        options = root;\n        root = new Root();\n    }\n    if (!options)\n        options = parse.defaults;\n\n    var tn = tokenize(source, options.alternateCommentMode || false),\n        next = tn.next,\n        push = tn.push,\n        peek = tn.peek,\n        skip = tn.skip,\n        cmnt = tn.cmnt;\n\n    var head = true,\n        pkg,\n        imports,\n        weakImports,\n        syntax,\n        isProto3 = false;\n\n    var ptr = root;\n\n    var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\n\n    /* istanbul ignore next */\n    function illegal(token, name, insideTryCatch) {\n        var filename = parse.filename;\n        if (!insideTryCatch)\n            parse.filename = null;\n        return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\n    }\n\n    function readString() {\n        var values = [],\n            token;\n        do {\n            /* istanbul ignore if */\n            if ((token = next()) !== \"\\\"\" && token !== \"'\")\n                throw illegal(token);\n\n            values.push(next());\n            skip(token);\n            token = peek();\n        } while (token === \"\\\"\" || token === \"'\");\n        return values.join(\"\");\n    }\n\n    function readValue(acceptTypeRef) {\n        var token = next();\n        switch (token) {\n            case \"'\":\n            case \"\\\"\":\n                push(token);\n                return readString();\n            case \"true\": case \"TRUE\":\n                return true;\n            case \"false\": case \"FALSE\":\n                return false;\n        }\n        try {\n            return parseNumber(token, /* insideTryCatch */ true);\n        } catch (e) {\n\n            /* istanbul ignore else */\n            if (acceptTypeRef && typeRefRe.test(token))\n                return token;\n\n            /* istanbul ignore next */\n            throw illegal(token, \"value\");\n        }\n    }\n\n    function readRanges(target, acceptStrings) {\n        var token, start;\n        do {\n            if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\"))\n                target.push(readString());\n            else\n                target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\n        } while (skip(\",\", true));\n        skip(\";\");\n    }\n\n    function parseNumber(token, insideTryCatch) {\n        var sign = 1;\n        if (token.charAt(0) === \"-\") {\n            sign = -1;\n            token = token.substring(1);\n        }\n        switch (token) {\n            case \"inf\": case \"INF\": case \"Inf\":\n                return sign * Infinity;\n            case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\n                return NaN;\n            case \"0\":\n                return 0;\n        }\n        if (base10Re.test(token))\n            return sign * parseInt(token, 10);\n        if (base16Re.test(token))\n            return sign * parseInt(token, 16);\n        if (base8Re.test(token))\n            return sign * parseInt(token, 8);\n\n        /* istanbul ignore else */\n        if (numberRe.test(token))\n            return sign * parseFloat(token);\n\n        /* istanbul ignore next */\n        throw illegal(token, \"number\", insideTryCatch);\n    }\n\n    function parseId(token, acceptNegative) {\n        switch (token) {\n            case \"max\": case \"MAX\": case \"Max\":\n                return 536870911;\n            case \"0\":\n                return 0;\n        }\n\n        /* istanbul ignore if */\n        if (!acceptNegative && token.charAt(0) === \"-\")\n            throw illegal(token, \"id\");\n\n        if (base10NegRe.test(token))\n            return parseInt(token, 10);\n        if (base16NegRe.test(token))\n            return parseInt(token, 16);\n\n        /* istanbul ignore else */\n        if (base8NegRe.test(token))\n            return parseInt(token, 8);\n\n        /* istanbul ignore next */\n        throw illegal(token, \"id\");\n    }\n\n    function parsePackage() {\n\n        /* istanbul ignore if */\n        if (pkg !== undefined)\n            throw illegal(\"package\");\n\n        pkg = next();\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(pkg))\n            throw illegal(pkg, \"name\");\n\n        ptr = ptr.define(pkg);\n        skip(\";\");\n    }\n\n    function parseImport() {\n        var token = peek();\n        var whichImports;\n        switch (token) {\n            case \"weak\":\n                whichImports = weakImports || (weakImports = []);\n                next();\n                break;\n            case \"public\":\n                next();\n                // eslint-disable-line no-fallthrough\n            default:\n                whichImports = imports || (imports = []);\n                break;\n        }\n        token = readString();\n        skip(\";\");\n        whichImports.push(token);\n    }\n\n    function parseSyntax() {\n        skip(\"=\");\n        syntax = readString();\n        isProto3 = syntax === \"proto3\";\n\n        /* istanbul ignore if */\n        if (!isProto3 && syntax !== \"proto2\")\n            throw illegal(syntax, \"syntax\");\n\n        skip(\";\");\n    }\n\n    function parseCommon(parent, token) {\n        switch (token) {\n\n            case \"option\":\n                parseOption(parent, token);\n                skip(\";\");\n                return true;\n\n            case \"message\":\n                parseType(parent, token);\n                return true;\n\n            case \"enum\":\n                parseEnum(parent, token);\n                return true;\n\n            case \"service\":\n                parseService(parent, token);\n                return true;\n\n            case \"extend\":\n                parseExtension(parent, token);\n                return true;\n        }\n        return false;\n    }\n\n    function ifBlock(obj, fnIf, fnElse) {\n        var trailingLine = tn.line;\n        if (obj) {\n            obj.comment = cmnt(); // try block-type comment\n            obj.filename = parse.filename;\n        }\n        if (skip(\"{\", true)) {\n            var token;\n            while ((token = next()) !== \"}\")\n                fnIf(token);\n            skip(\";\", true);\n        } else {\n            if (fnElse)\n                fnElse();\n            skip(\";\");\n            if (obj && typeof obj.comment !== \"string\")\n                obj.comment = cmnt(trailingLine); // try line-type comment if no block\n        }\n    }\n\n    function parseType(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"type name\");\n\n        var type = new Type(token);\n        ifBlock(type, function parseType_block(token) {\n            if (parseCommon(type, token))\n                return;\n\n            switch (token) {\n\n                case \"map\":\n                    parseMapField(type, token);\n                    break;\n\n                case \"required\":\n                case \"optional\":\n                case \"repeated\":\n                    parseField(type, token);\n                    break;\n\n                case \"oneof\":\n                    parseOneOf(type, token);\n                    break;\n\n                case \"extensions\":\n                    readRanges(type.extensions || (type.extensions = []));\n                    break;\n\n                case \"reserved\":\n                    readRanges(type.reserved || (type.reserved = []), true);\n                    break;\n\n                default:\n                    /* istanbul ignore if */\n                    if (!isProto3 || !typeRefRe.test(token))\n                        throw illegal(token);\n\n                    push(token);\n                    parseField(type, \"optional\");\n                    break;\n            }\n        });\n        parent.add(type);\n    }\n\n    function parseField(parent, rule, extend) {\n        var type = next();\n        if (type === \"group\") {\n            parseGroup(parent, rule);\n            return;\n        }\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(type))\n            throw illegal(type, \"type\");\n\n        var name = next();\n\n        /* istanbul ignore if */\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        name = applyCase(name);\n        skip(\"=\");\n\n        var field = new Field(name, parseId(next()), type, rule, extend);\n        ifBlock(field, function parseField_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(field, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseField_line() {\n            parseInlineOptions(field);\n        });\n        parent.add(field);\n\n        // JSON defaults to packed=true if not set so we have to set packed=false explicity when\n        // parsing proto2 descriptors without the option, where applicable. This must be done for\n        // all known packable types and anything that could be an enum (= is not a basic type).\n        if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined))\n            field.setOption(\"packed\", false, /* ifNotSet */ true);\n    }\n\n    function parseGroup(parent, rule) {\n        var name = next();\n\n        /* istanbul ignore if */\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        var fieldName = util.lcFirst(name);\n        if (name === fieldName)\n            name = util.ucFirst(name);\n        skip(\"=\");\n        var id = parseId(next());\n        var type = new Type(name);\n        type.group = true;\n        var field = new Field(fieldName, id, name, rule);\n        field.filename = parse.filename;\n        ifBlock(type, function parseGroup_block(token) {\n            switch (token) {\n\n                case \"option\":\n                    parseOption(type, token);\n                    skip(\";\");\n                    break;\n\n                case \"required\":\n                case \"optional\":\n                case \"repeated\":\n                    parseField(type, token);\n                    break;\n\n                /* istanbul ignore next */\n                default:\n                    throw illegal(token); // there are no groups with proto3 semantics\n            }\n        });\n        parent.add(type)\n              .add(field);\n    }\n\n    function parseMapField(parent) {\n        skip(\"<\");\n        var keyType = next();\n\n        /* istanbul ignore if */\n        if (types.mapKey[keyType] === undefined)\n            throw illegal(keyType, \"type\");\n\n        skip(\",\");\n        var valueType = next();\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(valueType))\n            throw illegal(valueType, \"type\");\n\n        skip(\">\");\n        var name = next();\n\n        /* istanbul ignore if */\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        skip(\"=\");\n        var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\n        ifBlock(field, function parseMapField_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(field, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseMapField_line() {\n            parseInlineOptions(field);\n        });\n        parent.add(field);\n    }\n\n    function parseOneOf(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var oneof = new OneOf(applyCase(token));\n        ifBlock(oneof, function parseOneOf_block(token) {\n            if (token === \"option\") {\n                parseOption(oneof, token);\n                skip(\";\");\n            } else {\n                push(token);\n                parseField(oneof, \"optional\");\n            }\n        });\n        parent.add(oneof);\n    }\n\n    function parseEnum(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var enm = new Enum(token);\n        ifBlock(enm, function parseEnum_block(token) {\n          switch(token) {\n            case \"option\":\n              parseOption(enm, token);\n              skip(\";\");\n              break;\n\n            case \"reserved\":\n              readRanges(enm.reserved || (enm.reserved = []), true);\n              break;\n\n            default:\n              parseEnumValue(enm, token);\n          }\n        });\n        parent.add(enm);\n    }\n\n    function parseEnumValue(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token))\n            throw illegal(token, \"name\");\n\n        skip(\"=\");\n        var value = parseId(next(), true),\n            dummy = {};\n        ifBlock(dummy, function parseEnumValue_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(dummy, token); // skip\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseEnumValue_line() {\n            parseInlineOptions(dummy); // skip\n        });\n        parent.add(token, value, dummy.comment);\n    }\n\n    function parseOption(parent, token) {\n        var isCustom = skip(\"(\", true);\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var name = token;\n        if (isCustom) {\n            skip(\")\");\n            name = \"(\" + name + \")\";\n            token = peek();\n            if (fqTypeRefRe.test(token)) {\n                name += token;\n                next();\n            }\n        }\n        skip(\"=\");\n        parseOptionValue(parent, name);\n    }\n\n    function parseOptionValue(parent, name) {\n        if (skip(\"{\", true)) { // { a: \"foo\" b { c: \"bar\" } }\n            do {\n                /* istanbul ignore if */\n                if (!nameRe.test(token = next()))\n                    throw illegal(token, \"name\");\n\n                if (peek() === \"{\")\n                    parseOptionValue(parent, name + \".\" + token);\n                else {\n                    skip(\":\");\n                    if (peek() === \"{\")\n                        parseOptionValue(parent, name + \".\" + token);\n                    else\n                        setOption(parent, name + \".\" + token, readValue(true));\n                }\n            } while (!skip(\"}\", true));\n        } else\n            setOption(parent, name, readValue(true));\n        // Does not enforce a delimiter to be universal\n    }\n\n    function setOption(parent, name, value) {\n        if (parent.setOption)\n            parent.setOption(name, value);\n    }\n\n    function parseInlineOptions(parent) {\n        if (skip(\"[\", true)) {\n            do {\n                parseOption(parent, \"option\");\n            } while (skip(\",\", true));\n            skip(\"]\");\n        }\n        return parent;\n    }\n\n    function parseService(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"service name\");\n\n        var service = new Service(token);\n        ifBlock(service, function parseService_block(token) {\n            if (parseCommon(service, token))\n                return;\n\n            /* istanbul ignore else */\n            if (token === \"rpc\")\n                parseMethod(service, token);\n            else\n                throw illegal(token);\n        });\n        parent.add(service);\n    }\n\n    function parseMethod(parent, token) {\n        var type = token;\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var name = token,\n            requestType, requestStream,\n            responseType, responseStream;\n\n        skip(\"(\");\n        if (skip(\"stream\", true))\n            requestStream = true;\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token);\n\n        requestType = token;\n        skip(\")\"); skip(\"returns\"); skip(\"(\");\n        if (skip(\"stream\", true))\n            responseStream = true;\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token);\n\n        responseType = token;\n        skip(\")\");\n\n        var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\n        ifBlock(method, function parseMethod_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(method, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        });\n        parent.add(method);\n    }\n\n    function parseExtension(parent, token) {\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token, \"reference\");\n\n        var reference = token;\n        ifBlock(null, function parseExtension_block(token) {\n            switch (token) {\n\n                case \"required\":\n                case \"repeated\":\n                case \"optional\":\n                    parseField(parent, token, reference);\n                    break;\n\n                default:\n                    /* istanbul ignore if */\n                    if (!isProto3 || !typeRefRe.test(token))\n                        throw illegal(token);\n                    push(token);\n                    parseField(parent, \"optional\", reference);\n                    break;\n            }\n        });\n    }\n\n    var token;\n    while ((token = next()) !== null) {\n        switch (token) {\n\n            case \"package\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parsePackage();\n                break;\n\n            case \"import\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parseImport();\n                break;\n\n            case \"syntax\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parseSyntax();\n                break;\n\n            case \"option\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parseOption(ptr, token);\n                skip(\";\");\n                break;\n\n            default:\n\n                /* istanbul ignore else */\n                if (parseCommon(ptr, token)) {\n                    head = false;\n                    continue;\n                }\n\n                /* istanbul ignore next */\n                throw illegal(token);\n        }\n    }\n\n    parse.filename = null;\n    return {\n        \"package\"     : pkg,\n        \"imports\"     : imports,\n         weakImports  : weakImports,\n         syntax       : syntax,\n         root         : root\n    };\n}\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @name parse\n * @function\n * @param {string} source Source contents\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n * @variation 2\n */\n\n},{\"15\":15,\"16\":16,\"20\":20,\"22\":22,\"25\":25,\"29\":29,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37}],27:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(39);\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\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 = 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\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    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n        ? new this.buf.constructor(0)\n        : 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            do { // eslint-disable-line no-constant-condition\n                if ((wireType = this.uint32() & 7) === 4)\n                    break;\n                this.skipType(wireType);\n            } while (true);\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\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\n},{\"39\":39}],28:[function(require,module,exports){\n\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(27);\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(39);\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\n/* istanbul ignore else */\nif (util.Buffer)\n    BufferReader.prototype._slice = util.Buffer.prototype.slice;\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice(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\n},{\"27\":27,\"39\":39}],29:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(23);\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field   = require(16),\n    Enum    = require(15),\n    OneOf   = require(25),\n    util    = require(37);\n\nvar Type,   // cyclic\n    parse,  // might be excluded\n    common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.<string,*>} [options] Top level options\n */\nfunction Root(options) {\n    Namespace.call(this, \"\", options);\n\n    /**\n     * Deferred extension fields.\n     * @type {Field[]}\n     */\n    this.deferred = [];\n\n    /**\n     * Resolved file names of loaded files.\n     * @type {string[]}\n     */\n    this.files = [];\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Nameespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n    if (!root)\n        root = new Root();\n    if (json.options)\n        root.setOptions(json.options);\n    return root.addJSON(json.nested);\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n    if (typeof options === \"function\") {\n        callback = options;\n        options = undefined;\n    }\n    var self = this;\n    if (!callback)\n        return util.asPromise(load, self, filename, options);\n\n    var sync = callback === SYNC; // undocumented\n\n    // Finishes loading by calling the callback (exactly once)\n    function finish(err, root) {\n        /* istanbul ignore if */\n        if (!callback)\n            return;\n        var cb = callback;\n        callback = null;\n        if (sync)\n            throw err;\n        cb(err, root);\n    }\n\n    // Processes a single file\n    function process(filename, source) {\n        try {\n            if (util.isString(source) && source.charAt(0) === \"{\")\n                source = JSON.parse(source);\n            if (!util.isString(source))\n                self.setOptions(source.options).addJSON(source.nested);\n            else {\n                parse.filename = filename;\n                var parsed = parse(source, self, options),\n                    resolved,\n                    i = 0;\n                if (parsed.imports)\n                    for (; i < parsed.imports.length; ++i)\n                        if (resolved = self.resolvePath(filename, parsed.imports[i]))\n                            fetch(resolved);\n                if (parsed.weakImports)\n                    for (i = 0; i < parsed.weakImports.length; ++i)\n                        if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\n                            fetch(resolved, true);\n            }\n        } catch (err) {\n            finish(err);\n        }\n        if (!sync && !queued)\n            finish(null, self); // only once anyway\n    }\n\n    // Fetches a single file\n    function fetch(filename, weak) {\n\n        // Strip path if this file references a bundled definition\n        var idx = filename.lastIndexOf(\"google/protobuf/\");\n        if (idx > -1) {\n            var altname = filename.substring(idx);\n            if (altname in common)\n                filename = altname;\n        }\n\n        // Skip if already loaded / attempted\n        if (self.files.indexOf(filename) > -1)\n            return;\n        self.files.push(filename);\n\n        // Shortcut bundled definitions\n        if (filename in common) {\n            if (sync)\n                process(filename, common[filename]);\n            else {\n                ++queued;\n                setTimeout(function() {\n                    --queued;\n                    process(filename, common[filename]);\n                });\n            }\n            return;\n        }\n\n        // Otherwise fetch from disk or network\n        if (sync) {\n            var source;\n            try {\n                source = util.fs.readFileSync(filename).toString(\"utf8\");\n            } catch (err) {\n                if (!weak)\n                    finish(err);\n                return;\n            }\n            process(filename, source);\n        } else {\n            ++queued;\n            util.fetch(filename, function(err, source) {\n                --queued;\n                /* istanbul ignore if */\n                if (!callback)\n                    return; // terminated meanwhile\n                if (err) {\n                    /* istanbul ignore else */\n                    if (!weak)\n                        finish(err);\n                    else if (!queued) // can't be covered reliably\n                        finish(null, self);\n                    return;\n                }\n                process(filename, source);\n            });\n        }\n    }\n    var queued = 0;\n\n    // Assembling the root namespace doesn't require working type\n    // references anymore, so we can load everything in parallel\n    if (util.isString(filename))\n        filename = [ filename ];\n    for (var i = 0, resolved; i < filename.length; ++i)\n        if (resolved = self.resolvePath(\"\", filename[i]))\n            fetch(resolved);\n\n    if (sync)\n        return self;\n    if (!queued)\n        finish(null, self);\n    return undefined;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise<Root>} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise<Root>\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n    if (!util.isNode)\n        throw Error(\"not supported\");\n    return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n    if (this.deferred.length)\n        throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n            return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n        }).join(\", \"));\n    return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n    var extendedType = field.parent.lookup(field.extend);\n    if (extendedType) {\n        var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n        sisterField.declaringField = field;\n        field.extensionField = sisterField;\n        extendedType.add(sisterField);\n        return true;\n    }\n    return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n    if (object instanceof Field) {\n\n        if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n            if (!tryHandleExtension(this, object))\n                this.deferred.push(object);\n\n    } else if (object instanceof Enum) {\n\n        if (exposeRe.test(object.name))\n            object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n    } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n        if (object instanceof Type) // Try to handle any deferred extensions\n            for (var i = 0; i < this.deferred.length;)\n                if (tryHandleExtension(this, this.deferred[i]))\n                    this.deferred.splice(i, 1);\n                else\n                    ++i;\n        for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n            this._handleAdd(object._nestedArray[j]);\n        if (exposeRe.test(object.name))\n            object.parent[object.name] = object; // expose namespace as property of its parent\n    }\n\n    // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n    // properties of namespaces just like static code does. This allows using a .d.ts generated for\n    // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n    if (object instanceof Field) {\n\n        if (/* an extension field */ object.extend !== undefined) {\n            if (/* already handled */ object.extensionField) { // remove its sister field\n                object.extensionField.parent.remove(object.extensionField);\n                object.extensionField = null;\n            } else { // cancel the extension\n                var index = this.deferred.indexOf(object);\n                /* istanbul ignore else */\n                if (index > -1)\n                    this.deferred.splice(index, 1);\n            }\n        }\n\n    } else if (object instanceof Enum) {\n\n        if (exposeRe.test(object.name))\n            delete object.parent[object.name]; // unexpose enum values\n\n    } else if (object instanceof Namespace) {\n\n        for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n            this._handleRemove(object._nestedArray[i]);\n\n        if (exposeRe.test(object.name))\n            delete object.parent[object.name]; // unexpose namespaces\n\n    }\n};\n\nRoot._configure = function(Type_, parse_, common_) {\n    Type = Type_;\n    parse = parse_;\n    common = common_;\n};\n\n},{\"15\":15,\"16\":16,\"23\":23,\"25\":25,\"37\":37}],30:[function(require,module,exports){\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 accross 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\n},{}],31:[function(require,module,exports){\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(32);\n\n},{\"32\":32}],32:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Service;\n\nvar util = require(39);\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\n},{\"39\":39}],33:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(23);\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(22),\n    util   = require(37),\n    rpc    = require(31);\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.<string,*>} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n    Namespace.call(this, name, options);\n\n    /**\n     * Service methods.\n     * @type {Object.<string,Method>}\n     */\n    this.methods = {}; // toJSON, marker\n\n    /**\n     * Cached methods as an array.\n     * @type {Method[]|null}\n     * @private\n     */\n    this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.<string,IMethod>} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n    var service = new Service(name, json.options);\n    /* istanbul ignore else */\n    if (json.methods)\n        for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n            service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n    if (json.nested)\n        service.addJSON(json.nested);\n    service.comment = json.comment;\n    return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"options\" , inherited && inherited.options || undefined,\n        \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n        \"nested\"  , inherited && inherited.nested || undefined,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n    get: function() {\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n    }\n});\n\nfunction clearCache(service) {\n    service._methodsArray = null;\n    return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n    return this.methods[name]\n        || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n    var methods = this.methodsArray;\n    for (var i = 0; i < methods.length; ++i)\n        methods[i].resolve();\n    return Namespace.prototype.resolve.call(this);\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n    /* istanbul ignore if */\n    if (this.get(object.name))\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n    if (object instanceof Method) {\n        this.methods[object.name] = object;\n        object.parent = this;\n        return clearCache(this);\n    }\n    return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n    if (object instanceof Method) {\n\n        /* istanbul ignore if */\n        if (this.methods[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.methods[object.name];\n        object.parent = null;\n        return clearCache(this);\n    }\n    return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\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 * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n    var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n    for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n        var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n        rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n            m: method,\n            q: method.resolvedRequestType.ctor,\n            s: method.resolvedResponseType.ctor\n        });\n    }\n    return rpcService;\n};\n\n},{\"22\":22,\"23\":23,\"31\":31,\"37\":37}],34:[function(require,module,exports){\n\"use strict\";\nmodule.exports = tokenize;\n\nvar delimRe        = /[\\s{}=;:[\\],'\"()<>]/g,\n    stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\n    stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\n\nvar setCommentRe = /^ *[*/]+ */,\n    setCommentAltRe = /^\\s*\\*?\\/*/,\n    setCommentSplitRe = /\\n/g,\n    whitespaceRe = /\\s/,\n    unescapeRe = /\\\\(.?)/g;\n\nvar unescapeMap = {\n    \"0\": \"\\0\",\n    \"r\": \"\\r\",\n    \"n\": \"\\n\",\n    \"t\": \"\\t\"\n};\n\n/**\n * Unescapes a string.\n * @param {string} str String to unescape\n * @returns {string} Unescaped string\n * @property {Object.<string,string>} map Special characters map\n * @memberof tokenize\n */\nfunction unescape(str) {\n    return str.replace(unescapeRe, function($0, $1) {\n        switch ($1) {\n            case \"\\\\\":\n            case \"\":\n                return $1;\n            default:\n                return unescapeMap[$1] || \"\";\n        }\n    });\n}\n\ntokenize.unescape = unescape;\n\n/**\n * Gets the next token and advances.\n * @typedef TokenizerHandleNext\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Peeks for the next token.\n * @typedef TokenizerHandlePeek\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Pushes a token back to the stack.\n * @typedef TokenizerHandlePush\n * @type {function}\n * @param {string} token Token\n * @returns {undefined}\n */\n\n/**\n * Skips the next token.\n * @typedef TokenizerHandleSkip\n * @type {function}\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] If optional\n * @returns {boolean} Whether the token matched\n * @throws {Error} If the token didn't match and is not optional\n */\n\n/**\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\n * @typedef TokenizerHandleCmnt\n * @type {function}\n * @param {number} [line] Line number\n * @returns {string|null} Comment text or `null` if none\n */\n\n/**\n * Handle object returned from {@link tokenize}.\n * @interface ITokenizerHandle\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\n * @property {number} line Current line number\n */\n\n/**\n * Tokenizes the given .proto source and returns an object with useful utility functions.\n * @param {string} source Source contents\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\n * @returns {ITokenizerHandle} Tokenizer handle\n */\nfunction tokenize(source, alternateCommentMode) {\n    /* eslint-disable callback-return */\n    source = source.toString();\n\n    var offset = 0,\n        length = source.length,\n        line = 1,\n        commentType = null,\n        commentText = null,\n        commentLine = 0,\n        commentLineEmpty = false;\n\n    var stack = [];\n\n    var stringDelim = null;\n\n    /* istanbul ignore next */\n    /**\n     * Creates an error for illegal syntax.\n     * @param {string} subject Subject\n     * @returns {Error} Error created\n     * @inner\n     */\n    function illegal(subject) {\n        return Error(\"illegal \" + subject + \" (line \" + line + \")\");\n    }\n\n    /**\n     * Reads a string till its end.\n     * @returns {string} String read\n     * @inner\n     */\n    function readString() {\n        var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\n        re.lastIndex = offset - 1;\n        var match = re.exec(source);\n        if (!match)\n            throw illegal(\"string\");\n        offset = re.lastIndex;\n        push(stringDelim);\n        stringDelim = null;\n        return unescape(match[1]);\n    }\n\n    /**\n     * Gets the character at `pos` within the source.\n     * @param {number} pos Position\n     * @returns {string} Character\n     * @inner\n     */\n    function charAt(pos) {\n        return source.charAt(pos);\n    }\n\n    /**\n     * Sets the current comment text.\n     * @param {number} start Start offset\n     * @param {number} end End offset\n     * @returns {undefined}\n     * @inner\n     */\n    function setComment(start, end) {\n        commentType = source.charAt(start++);\n        commentLine = line;\n        commentLineEmpty = false;\n        var lookback;\n        if (alternateCommentMode) {\n            lookback = 2;  // alternate comment parsing: \"//\" or \"/*\"\n        } else {\n            lookback = 3;  // \"///\" or \"/**\"\n        }\n        var commentOffset = start - lookback,\n            c;\n        do {\n            if (--commentOffset < 0 ||\n                    (c = source.charAt(commentOffset)) === \"\\n\") {\n                commentLineEmpty = true;\n                break;\n            }\n        } while (c === \" \" || c === \"\\t\");\n        var lines = source\n            .substring(start, end)\n            .split(setCommentSplitRe);\n        for (var i = 0; i < lines.length; ++i)\n            lines[i] = lines[i]\n                .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\n                .trim();\n        commentText = lines\n            .join(\"\\n\")\n            .trim();\n    }\n\n    function isDoubleSlashCommentLine(startOffset) {\n        var endOffset = findEndOfLine(startOffset);\n\n        // see if remaining line matches comment pattern\n        var lineText = source.substring(startOffset, endOffset);\n        // look for 1 or 2 slashes since startOffset would already point past\n        // the first slash that started the comment.\n        var isComment = /^\\s*\\/{1,2}/.test(lineText);\n        return isComment;\n    }\n\n    function findEndOfLine(cursor) {\n        // find end of cursor's line\n        var endOffset = cursor;\n        while (endOffset < length && charAt(endOffset) !== \"\\n\") {\n            endOffset++;\n        }\n        return endOffset;\n    }\n\n    /**\n     * Obtains the next token.\n     * @returns {string|null} Next token or `null` on eof\n     * @inner\n     */\n    function next() {\n        if (stack.length > 0)\n            return stack.shift();\n        if (stringDelim)\n            return readString();\n        var repeat,\n            prev,\n            curr,\n            start,\n            isDoc;\n        do {\n            if (offset === length)\n                return null;\n            repeat = false;\n            while (whitespaceRe.test(curr = charAt(offset))) {\n                if (curr === \"\\n\")\n                    ++line;\n                if (++offset === length)\n                    return null;\n            }\n\n            if (charAt(offset) === \"/\") {\n                if (++offset === length) {\n                    throw illegal(\"comment\");\n                }\n                if (charAt(offset) === \"/\") { // Line\n                    if (!alternateCommentMode) {\n                        // check for triple-slash comment\n                        isDoc = charAt(start = offset + 1) === \"/\";\n\n                        while (charAt(++offset) !== \"\\n\") {\n                            if (offset === length) {\n                                return null;\n                            }\n                        }\n                        ++offset;\n                        if (isDoc) {\n                            setComment(start, offset - 1);\n                        }\n                        ++line;\n                        repeat = true;\n                    } else {\n                        // check for double-slash comments, consolidating consecutive lines\n                        start = offset;\n                        isDoc = false;\n                        if (isDoubleSlashCommentLine(offset)) {\n                            isDoc = true;\n                            do {\n                                offset = findEndOfLine(offset);\n                                if (offset === length) {\n                                    break;\n                                }\n                                offset++;\n                            } while (isDoubleSlashCommentLine(offset));\n                        } else {\n                            offset = Math.min(length, findEndOfLine(offset) + 1);\n                        }\n                        if (isDoc) {\n                            setComment(start, offset);\n                        }\n                        line++;\n                        repeat = true;\n                    }\n                } else if ((curr = charAt(offset)) === \"*\") { /* Block */\n                    // check for /** (regular comment mode) or /* (alternate comment mode)\n                    start = offset + 1;\n                    isDoc = alternateCommentMode || charAt(start) === \"*\";\n                    do {\n                        if (curr === \"\\n\") {\n                            ++line;\n                        }\n                        if (++offset === length) {\n                            throw illegal(\"comment\");\n                        }\n                        prev = curr;\n                        curr = charAt(offset);\n                    } while (prev !== \"*\" || curr !== \"/\");\n                    ++offset;\n                    if (isDoc) {\n                        setComment(start, offset - 2);\n                    }\n                    repeat = true;\n                } else {\n                    return \"/\";\n                }\n            }\n        } while (repeat);\n\n        // offset !== length if we got here\n\n        var end = offset;\n        delimRe.lastIndex = 0;\n        var delim = delimRe.test(charAt(end++));\n        if (!delim)\n            while (end < length && !delimRe.test(charAt(end)))\n                ++end;\n        var token = source.substring(offset, offset = end);\n        if (token === \"\\\"\" || token === \"'\")\n            stringDelim = token;\n        return token;\n    }\n\n    /**\n     * Pushes a token back to the stack.\n     * @param {string} token Token\n     * @returns {undefined}\n     * @inner\n     */\n    function push(token) {\n        stack.push(token);\n    }\n\n    /**\n     * Peeks for the next token.\n     * @returns {string|null} Token or `null` on eof\n     * @inner\n     */\n    function peek() {\n        if (!stack.length) {\n            var token = next();\n            if (token === null)\n                return null;\n            push(token);\n        }\n        return stack[0];\n    }\n\n    /**\n     * Skips a token.\n     * @param {string} expected Expected token\n     * @param {boolean} [optional=false] Whether the token is optional\n     * @returns {boolean} `true` when skipped, `false` if not\n     * @throws {Error} When a required token is not present\n     * @inner\n     */\n    function skip(expected, optional) {\n        var actual = peek(),\n            equals = actual === expected;\n        if (equals) {\n            next();\n            return true;\n        }\n        if (!optional)\n            throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\n        return false;\n    }\n\n    /**\n     * Gets a comment.\n     * @param {number} [trailingLine] Line number if looking for a trailing comment\n     * @returns {string|null} Comment text\n     * @inner\n     */\n    function cmnt(trailingLine) {\n        var ret = null;\n        if (trailingLine === undefined) {\n            if (commentLine === line - 1 && (alternateCommentMode || commentType === \"*\" || commentLineEmpty)) {\n                ret = commentText;\n            }\n        } else {\n            /* istanbul ignore else */\n            if (commentLine < trailingLine) {\n                peek();\n            }\n            if (commentLine === trailingLine && !commentLineEmpty && (alternateCommentMode || commentType === \"/\")) {\n                ret = commentText;\n            }\n        }\n        return ret;\n    }\n\n    return Object.defineProperty({\n        next: next,\n        peek: peek,\n        push: push,\n        skip: skip,\n        cmnt: cmnt\n    }, \"line\", {\n        get: function() { return line; }\n    });\n    /* eslint-enable callback-return */\n}\n\n},{}],35:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(23);\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum      = require(15),\n    OneOf     = require(25),\n    Field     = require(16),\n    MapField  = require(20),\n    Service   = require(33),\n    Message   = require(21),\n    Reader    = require(27),\n    Writer    = require(42),\n    util      = require(37),\n    encoder   = require(14),\n    decoder   = require(13),\n    verifier  = require(40),\n    converter = require(12),\n    wrappers  = require(41);\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.<string,*>} [options] Declared options\n */\nfunction Type(name, options) {\n    Namespace.call(this, name, options);\n\n    /**\n     * Message fields.\n     * @type {Object.<string,Field>}\n     */\n    this.fields = {};  // toJSON, marker\n\n    /**\n     * Oneofs declared within this namespace, if any.\n     * @type {Object.<string,OneOf>}\n     */\n    this.oneofs = undefined; // toJSON\n\n    /**\n     * Extension ranges, if any.\n     * @type {number[][]}\n     */\n    this.extensions = undefined; // toJSON\n\n    /**\n     * Reserved ranges, if any.\n     * @type {Array.<number[]|string>}\n     */\n    this.reserved = undefined; // toJSON\n\n    /*?\n     * Whether this type is a legacy group.\n     * @type {boolean|undefined}\n     */\n    this.group = undefined; // toJSON\n\n    /**\n     * Cached fields by id.\n     * @type {Object.<number,Field>|null}\n     * @private\n     */\n    this._fieldsById = null;\n\n    /**\n     * Cached fields as an array.\n     * @type {Field[]|null}\n     * @private\n     */\n    this._fieldsArray = null;\n\n    /**\n     * Cached oneofs as an array.\n     * @type {OneOf[]|null}\n     * @private\n     */\n    this._oneofsArray = null;\n\n    /**\n     * Cached constructor.\n     * @type {Constructor<{}>}\n     * @private\n     */\n    this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n    /**\n     * Message fields by id.\n     * @name Type#fieldsById\n     * @type {Object.<number,Field>}\n     * @readonly\n     */\n    fieldsById: {\n        get: function() {\n\n            /* istanbul ignore if */\n            if (this._fieldsById)\n                return this._fieldsById;\n\n            this._fieldsById = {};\n            for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n                var field = this.fields[names[i]],\n                    id = field.id;\n\n                /* istanbul ignore if */\n                if (this._fieldsById[id])\n                    throw Error(\"duplicate id \" + id + \" in \" + this);\n\n                this._fieldsById[id] = field;\n            }\n            return this._fieldsById;\n        }\n    },\n\n    /**\n     * Fields of this message as an array for iteration.\n     * @name Type#fieldsArray\n     * @type {Field[]}\n     * @readonly\n     */\n    fieldsArray: {\n        get: function() {\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n        }\n    },\n\n    /**\n     * Oneofs of this message as an array for iteration.\n     * @name Type#oneofsArray\n     * @type {OneOf[]}\n     * @readonly\n     */\n    oneofsArray: {\n        get: function() {\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n        }\n    },\n\n    /**\n     * The registered constructor, if any registered, otherwise a generic constructor.\n     * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n     * @name Type#ctor\n     * @type {Constructor<{}>}\n     */\n    ctor: {\n        get: function() {\n            return this._ctor || (this.ctor = Type.generateConstructor(this)());\n        },\n        set: function(ctor) {\n\n            // Ensure proper prototype\n            var prototype = ctor.prototype;\n            if (!(prototype instanceof Message)) {\n                (ctor.prototype = new Message()).constructor = ctor;\n                util.merge(ctor.prototype, prototype);\n            }\n\n            // Classes and messages reference their reflected type\n            ctor.$type = ctor.prototype.$type = this;\n\n            // Mix in static methods\n            util.merge(ctor, Message, true);\n\n            this._ctor = ctor;\n\n            // Messages have non-enumerable default values on their prototype\n            var i = 0;\n            for (; i < /* initializes */ this.fieldsArray.length; ++i)\n                this._fieldsArray[i].resolve(); // ensures a proper value\n\n            // Messages have non-enumerable getters and setters for each virtual oneof field\n            var ctorProperties = {};\n            for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n                ctorProperties[this._oneofsArray[i].resolve().name] = {\n                    get: util.oneOfGetter(this._oneofsArray[i].oneof),\n                    set: util.oneOfSetter(this._oneofsArray[i].oneof)\n                };\n            if (i)\n                Object.defineProperties(ctor.prototype, ctorProperties);\n        }\n    }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n    var gen = util.codegen([\"p\"], mtype.name);\n    // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n    for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n        if ((field = mtype._fieldsArray[i]).map) gen\n            (\"this%s={}\", util.safeProp(field.name));\n        else if (field.repeated) gen\n            (\"this%s=[]\", util.safeProp(field.name));\n    return gen\n    (\"if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)\") // omit undefined or null\n        (\"this[ks[i]]=p[ks[i]]\");\n    /* eslint-enable no-unexpected-multiline */\n};\n\nfunction clearCache(type) {\n    type._fieldsById = type._fieldsArray = type._oneofsArray = null;\n    delete type.encode;\n    delete type.decode;\n    delete type.verify;\n    return type;\n}\n\n/**\n * Message type descriptor.\n * @interface IType\n * @extends INamespace\n * @property {Object.<string,IOneOf>} [oneofs] Oneof descriptors\n * @property {Object.<string,IField>} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {number[][]} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n    var type = new Type(name, json.options);\n    type.extensions = json.extensions;\n    type.reserved = json.reserved;\n    var names = Object.keys(json.fields),\n        i = 0;\n    for (; i < names.length; ++i)\n        type.add(\n            ( typeof json.fields[names[i]].keyType !== \"undefined\"\n            ? MapField.fromJSON\n            : Field.fromJSON )(names[i], json.fields[names[i]])\n        );\n    if (json.oneofs)\n        for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n            type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n    if (json.nested)\n        for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n            var nested = json.nested[names[i]];\n            type.add( // most to least likely\n                ( nested.id !== undefined\n                ? Field.fromJSON\n                : nested.fields !== undefined\n                ? Type.fromJSON\n                : nested.values !== undefined\n                ? Enum.fromJSON\n                : nested.methods !== undefined\n                ? Service.fromJSON\n                : Namespace.fromJSON )(names[i], nested)\n            );\n        }\n    if (json.extensions && json.extensions.length)\n        type.extensions = json.extensions;\n    if (json.reserved && json.reserved.length)\n        type.reserved = json.reserved;\n    if (json.group)\n        type.group = true;\n    if (json.comment)\n        type.comment = json.comment;\n    return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"options\"    , inherited && inherited.options || undefined,\n        \"oneofs\"     , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n        \"fields\"     , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n        \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n        \"reserved\"   , this.reserved && this.reserved.length ? this.reserved : undefined,\n        \"group\"      , this.group || undefined,\n        \"nested\"     , inherited && inherited.nested || undefined,\n        \"comment\"    , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n    var fields = this.fieldsArray, i = 0;\n    while (i < fields.length)\n        fields[i++].resolve();\n    var oneofs = this.oneofsArray; i = 0;\n    while (i < oneofs.length)\n        oneofs[i++].resolve();\n    return Namespace.prototype.resolveAll.call(this);\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n    return this.fields[name]\n        || this.oneofs && this.oneofs[name]\n        || this.nested && this.nested[name]\n        || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n    if (this.get(object.name))\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n    if (object instanceof Field && object.extend === undefined) {\n        // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n        // The root object takes care of adding distinct sister-fields to the respective extended\n        // type instead.\n\n        // avoids calling the getter if not absolutely necessary because it's called quite frequently\n        if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n            throw Error(\"duplicate id \" + object.id + \" in \" + this);\n        if (this.isReservedId(object.id))\n            throw Error(\"id \" + object.id + \" is reserved in \" + this);\n        if (this.isReservedName(object.name))\n            throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n        if (object.parent)\n            object.parent.remove(object);\n        this.fields[object.name] = object;\n        object.message = this;\n        object.onAdd(this);\n        return clearCache(this);\n    }\n    if (object instanceof OneOf) {\n        if (!this.oneofs)\n            this.oneofs = {};\n        this.oneofs[object.name] = object;\n        object.onAdd(this);\n        return clearCache(this);\n    }\n    return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n    if (object instanceof Field && object.extend === undefined) {\n        // See Type#add for the reason why extension fields are excluded here.\n\n        /* istanbul ignore if */\n        if (!this.fields || this.fields[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.fields[object.name];\n        object.parent = null;\n        object.onRemove(this);\n        return clearCache(this);\n    }\n    if (object instanceof OneOf) {\n\n        /* istanbul ignore if */\n        if (!this.oneofs || this.oneofs[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.oneofs[object.name];\n        object.parent = null;\n        object.onRemove(this);\n        return clearCache(this);\n    }\n    return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n    return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n    return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n    return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n    // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n    // multiple times (V8, soft-deopt prototype-check).\n\n    var fullName = this.fullName,\n        types    = [];\n    for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n        types.push(this._fieldsArray[i].resolve().resolvedType);\n\n    // Replace setup methods with type-specific generated functions\n    this.encode = encoder(this)({\n        Writer : Writer,\n        types  : types,\n        util   : util\n    });\n    this.decode = decoder(this)({\n        Reader : Reader,\n        types  : types,\n        util   : util\n    });\n    this.verify = verifier(this)({\n        types : types,\n        util  : util\n    });\n    this.fromObject = converter.fromObject(this)({\n        types : types,\n        util  : util\n    });\n    this.toObject = converter.toObject(this)({\n        types : types,\n        util  : util\n    });\n\n    // Inject custom wrappers for common types\n    var wrapper = wrappers[fullName];\n    if (wrapper) {\n        var originalThis = Object.create(this);\n        // if (wrapper.fromObject) {\n            originalThis.fromObject = this.fromObject;\n            this.fromObject = wrapper.fromObject.bind(originalThis);\n        // }\n        // if (wrapper.toObject) {\n            originalThis.toObject = this.toObject;\n            this.toObject = wrapper.toObject.bind(originalThis);\n        // }\n    }\n\n    return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n    return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n    return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n    return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n    if (!(reader instanceof Reader))\n        reader = Reader.create(reader);\n    return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n    return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n    return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n    return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor<T>} target Target constructor\n * @returns {undefined}\n * @template T extends Message<T>\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator<T>} Decorator function\n * @template T extends Message<T>\n */\nType.d = function decorateType(typeName) {\n    return function typeDecorator(target) {\n        util.decorateType(target, typeName);\n    };\n};\n\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"20\":20,\"21\":21,\"23\":23,\"25\":25,\"27\":27,\"33\":33,\"37\":37,\"40\":40,\"41\":41,\"42\":42}],36:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(37);\n\nvar s = [\n    \"double\",   // 0\n    \"float\",    // 1\n    \"int32\",    // 2\n    \"uint32\",   // 3\n    \"sint32\",   // 4\n    \"fixed32\",  // 5\n    \"sfixed32\", // 6\n    \"int64\",    // 7\n    \"uint64\",   // 8\n    \"sint64\",   // 9\n    \"fixed64\",  // 10\n    \"sfixed64\", // 11\n    \"bool\",     // 12\n    \"string\",   // 13\n    \"bytes\"     // 14\n];\n\nfunction bake(values, offset) {\n    var i = 0, o = {};\n    offset |= 0;\n    while (i < values.length) o[s[i + offset]] = values[i++];\n    return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n    /* double   */ 1,\n    /* float    */ 5,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0,\n    /* string   */ 2,\n    /* bytes    */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.<string,*>}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.<number>} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n    /* double   */ 0,\n    /* float    */ 0,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 0,\n    /* sfixed32 */ 0,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 0,\n    /* sfixed64 */ 0,\n    /* bool     */ false,\n    /* string   */ \"\",\n    /* bytes    */ util.emptyArray,\n    /* message  */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0,\n    /* string   */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n    /* double   */ 1,\n    /* float    */ 5,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0\n]);\n\n},{\"37\":37}],37:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(39);\n\nvar roots = require(30);\n\nvar Type, // cyclic\n    Enum;\n\nutil.codegen = require(3);\nutil.fetch   = require(5);\nutil.path    = require(8);\n\n/**\n * Node's fs module if available.\n * @type {Object.<string,*>}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.<string,*>} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n    if (object) {\n        var keys  = Object.keys(object),\n            array = new Array(keys.length),\n            index = 0;\n        while (index < keys.length)\n            array[index] = object[keys[index++]];\n        return array;\n    }\n    return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.<string,*>} Converted object\n */\nutil.toObject = function toObject(array) {\n    var object = {},\n        index  = 0;\n    while (index < array.length) {\n        var key = array[index++],\n            val = array[index++];\n        if (val !== undefined)\n            object[key] = val;\n    }\n    return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n    safePropQuoteRe     = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n    return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n    if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n        return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n    return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n    return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n    return str.substring(0, 1)\n         + str.substring(1)\n               .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n    return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor<T>} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message<T>\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n    /* istanbul ignore if */\n    if (ctor.$type) {\n        if (typeName && ctor.$type.name !== typeName) {\n            util.decorateRoot.remove(ctor.$type);\n            ctor.$type.name = typeName;\n            util.decorateRoot.add(ctor.$type);\n        }\n        return ctor.$type;\n    }\n\n    /* istanbul ignore next */\n    if (!Type)\n        Type = require(35);\n\n    var type = new Type(typeName || ctor.name);\n    util.decorateRoot.add(type);\n    type.ctor = ctor; // sets up .encode, .decode etc.\n    Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n    Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n    return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n    /* istanbul ignore if */\n    if (object.$type)\n        return object.$type;\n\n    /* istanbul ignore next */\n    if (!Enum)\n        Enum = require(15);\n\n    var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n    util.decorateRoot.add(enm);\n    Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n    return enm;\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n    get: function() {\n        return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(29))());\n    }\n});\n\n},{\"15\":15,\"29\":29,\"3\":3,\"30\":30,\"35\":35,\"39\":39,\"5\":5,\"8\":8}],38:[function(require,module,exports){\n\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(39);\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\n},{\"39\":39}],39:[function(require,module,exports){\n\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(1);\n\n// converts to / from base64 encoded strings\nutil.base64 = require(2);\n\n// base class of rpc.Service\nutil.EventEmitter = require(4);\n\n// float handling accross browsers\nutil.float = require(6);\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(7);\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(10);\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(9);\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(38);\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 * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n * @const\n */\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\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 */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || 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)).constructor = CustomError;\n\n    Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\n\n    CustomError.prototype.toString = function toString() {\n        return this.name + \": \" + this.message;\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\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\n},{\"1\":1,\"10\":10,\"2\":2,\"38\":38,\"4\":4,\"6\":6,\"7\":7,\"9\":9}],40:[function(require,module,exports){\n\"use strict\";\nmodule.exports = verifier;\n\nvar Enum      = require(15),\n    util      = require(37);\n\nfunction invalid(field, expected) {\n    return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\n}\n\n/**\n * Generates a partial value verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\n    /* eslint-disable no-unexpected-multiline */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) { gen\n            (\"switch(%s){\", ref)\n                (\"default:\")\n                    (\"return%j\", invalid(field, \"enum value\"));\n            for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\n                (\"case %i:\", field.resolvedType.values[keys[j]]);\n            gen\n                    (\"break\")\n            (\"}\");\n        } else {\n            gen\n            (\"{\")\n                (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\n                (\"if(e)\")\n                    (\"return%j+e\", field.name + \".\")\n            (\"}\");\n        }\n    } else {\n        switch (field.type) {\n            case \"int32\":\n            case \"uint32\":\n            case \"sint32\":\n            case \"fixed32\":\n            case \"sfixed32\": gen\n                (\"if(!util.isInteger(%s))\", ref)\n                    (\"return%j\", invalid(field, \"integer\"));\n                break;\n            case \"int64\":\n            case \"uint64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n                (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\n                    (\"return%j\", invalid(field, \"integer|Long\"));\n                break;\n            case \"float\":\n            case \"double\": gen\n                (\"if(typeof %s!==\\\"number\\\")\", ref)\n                    (\"return%j\", invalid(field, \"number\"));\n                break;\n            case \"bool\": gen\n                (\"if(typeof %s!==\\\"boolean\\\")\", ref)\n                    (\"return%j\", invalid(field, \"boolean\"));\n                break;\n            case \"string\": gen\n                (\"if(!util.isString(%s))\", ref)\n                    (\"return%j\", invalid(field, \"string\"));\n                break;\n            case \"bytes\": gen\n                (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\n                    (\"return%j\", invalid(field, \"buffer\"));\n                break;\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a partial key verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyKey(gen, field, ref) {\n    /* eslint-disable no-unexpected-multiline */\n    switch (field.keyType) {\n        case \"int32\":\n        case \"uint32\":\n        case \"sint32\":\n        case \"fixed32\":\n        case \"sfixed32\": gen\n            (\"if(!util.key32Re.test(%s))\", ref)\n                (\"return%j\", invalid(field, \"integer key\"));\n            break;\n        case \"int64\":\n        case \"uint64\":\n        case \"sint64\":\n        case \"fixed64\":\n        case \"sfixed64\": gen\n            (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\n                (\"return%j\", invalid(field, \"integer|Long key\"));\n            break;\n        case \"bool\": gen\n            (\"if(!util.key2Re.test(%s))\", ref)\n                (\"return%j\", invalid(field, \"boolean key\"));\n            break;\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a verifier specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction verifier(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n\n    var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\n    (\"if(typeof m!==\\\"object\\\"||m===null)\")\n        (\"return%j\", \"object expected\");\n    var oneofs = mtype.oneofsArray,\n        seenFirstField = {};\n    if (oneofs.length) gen\n    (\"var p={}\");\n\n    for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n        var field = mtype._fieldsArray[i].resolve(),\n            ref   = \"m\" + util.safeProp(field.name);\n\n        if (field.optional) gen\n        (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\n\n        // map fields\n        if (field.map) { gen\n            (\"if(!util.isObject(%s))\", ref)\n                (\"return%j\", invalid(field, \"object\"))\n            (\"var k=Object.keys(%s)\", ref)\n            (\"for(var i=0;i<k.length;++i){\");\n                genVerifyKey(gen, field, \"k[i]\");\n                genVerifyValue(gen, field, i, ref + \"[k[i]]\")\n            (\"}\");\n\n        // repeated fields\n        } else if (field.repeated) { gen\n            (\"if(!Array.isArray(%s))\", ref)\n                (\"return%j\", invalid(field, \"array\"))\n            (\"for(var i=0;i<%s.length;++i){\", ref);\n                genVerifyValue(gen, field, i, ref + \"[i]\")\n            (\"}\");\n\n        // required or present fields\n        } else {\n            if (field.partOf) {\n                var oneofProp = util.safeProp(field.partOf.name);\n                if (seenFirstField[field.partOf.name] === 1) gen\n            (\"if(p%s===1)\", oneofProp)\n                (\"return%j\", field.partOf.name + \": multiple values\");\n                seenFirstField[field.partOf.name] = 1;\n                gen\n            (\"p%s=1\", oneofProp);\n            }\n            genVerifyValue(gen, field, i, ref);\n        }\n        if (field.optional) gen\n        (\"}\");\n    }\n    return gen\n    (\"return null\");\n    /* eslint-enable no-unexpected-multiline */\n}\n},{\"15\":15,\"37\":37}],41:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Wrappers for common types.\n * @type {Object.<string,IWrapper>}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(21);\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.<string,*>} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n    fromObject: function(object) {\n\n        // unwrap value type if mapped\n        if (object && object[\"@type\"]) {\n            var type = this.lookup(object[\"@type\"]);\n            /* istanbul ignore else */\n            if (type) {\n                // type_url does not accept leading \".\"\n                var type_url = object[\"@type\"].charAt(0) === \".\" ?\n                    object[\"@type\"].substr(1) : object[\"@type\"];\n                // type_url prefix is optional, but path seperator is required\n                return this.create({\n                    type_url: \"/\" + type_url,\n                    value: type.encode(type.fromObject(object)).finish()\n                });\n            }\n        }\n\n        return this.fromObject(object);\n    },\n\n    toObject: function(message, options) {\n\n        // decode value if requested and unmapped\n        if (options && options.json && message.type_url && message.value) {\n            // Only use fully qualified type name after the last '/'\n            var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n            var type = this.lookup(name);\n            /* istanbul ignore else */\n            if (type)\n                message = type.decode(message.value);\n        }\n\n        // wrap value if unmapped\n        if (!(message instanceof this.ctor) && message instanceof Message) {\n            var object = message.$type.toObject(message, options);\n            object[\"@type\"] = message.$type.fullName;\n            return object;\n        }\n\n        return this.toObject(message, options);\n    }\n};\n\n},{\"21\":21}],42:[function(require,module,exports){\n\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(39);\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\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 = 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 * 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};\n\n},{\"39\":39}],43:[function(require,module,exports){\n\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(42);\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(39);\n\nvar Buffer = util.Buffer;\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\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\nBufferWriter.alloc = function alloc_buffer(size) {\n    return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\n};\n\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && 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 * @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(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\n        buf.utf8Write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = 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\n},{\"39\":39,\"42\":42}]},{},[19])\n\n})();"],"names":["undefined","require","module","exports","params","offset","i","isAbsolute","path","normalize","size","field","token","create_array","buffer","filename","resolved","source","err","global","Buffer"],"mappings":"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"}