aivmlib-web
Version:
Aivis Voice Model File (.aivm/.aivmx) Utility Library for Web
1 lines • 439 kB
Source Map (JSON)
{"version":3,"file":"onnx.mjs","sources":["../../src/onnx-protobuf/onnx.js"],"sourcesContent":["/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n'use strict';\n\n// var $protobuf = require('protobufjs');\nimport $protobuf from 'protobufjs';\n\n// Common aliases\nvar $Reader = $protobuf.Reader,\n $Writer = $protobuf.Writer,\n $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots['default'] || ($protobuf.roots['default'] = {});\n\n$root.onnx = (function () {\n /**\n * Namespace onnx.\n * @exports onnx\n * @namespace\n */\n var onnx = {};\n\n /**\n * Version enum.\n * @name onnx.Version\n * @enum {number}\n * @property {number} _START_VERSION=0 _START_VERSION value\n * @property {number} IR_VERSION_2017_10_10=1 IR_VERSION_2017_10_10 value\n * @property {number} IR_VERSION_2017_10_30=2 IR_VERSION_2017_10_30 value\n * @property {number} IR_VERSION_2017_11_3=3 IR_VERSION_2017_11_3 value\n * @property {number} IR_VERSION_2019_1_22=4 IR_VERSION_2019_1_22 value\n * @property {number} IR_VERSION_2019_3_18=5 IR_VERSION_2019_3_18 value\n * @property {number} IR_VERSION_2019_9_19=6 IR_VERSION_2019_9_19 value\n * @property {number} IR_VERSION_2020_5_8=7 IR_VERSION_2020_5_8 value\n * @property {number} IR_VERSION_2021_7_30=8 IR_VERSION_2021_7_30 value\n * @property {number} IR_VERSION=9 IR_VERSION value\n */\n onnx.Version = (function () {\n var valuesById = {},\n values = Object.create(valuesById);\n values[(valuesById[0] = '_START_VERSION')] = 0;\n values[(valuesById[1] = 'IR_VERSION_2017_10_10')] = 1;\n values[(valuesById[2] = 'IR_VERSION_2017_10_30')] = 2;\n values[(valuesById[3] = 'IR_VERSION_2017_11_3')] = 3;\n values[(valuesById[4] = 'IR_VERSION_2019_1_22')] = 4;\n values[(valuesById[5] = 'IR_VERSION_2019_3_18')] = 5;\n values[(valuesById[6] = 'IR_VERSION_2019_9_19')] = 6;\n values[(valuesById[7] = 'IR_VERSION_2020_5_8')] = 7;\n values[(valuesById[8] = 'IR_VERSION_2021_7_30')] = 8;\n values[(valuesById[9] = 'IR_VERSION')] = 9;\n return values;\n })();\n\n onnx.AttributeProto = (function () {\n /**\n * Properties of an AttributeProto.\n * @memberof onnx\n * @interface IAttributeProto\n * @property {string|null} [name] AttributeProto name\n * @property {string|null} [refAttrName] AttributeProto refAttrName\n * @property {string|null} [docString] AttributeProto docString\n * @property {onnx.AttributeProto.AttributeType|null} [type] AttributeProto type\n * @property {number|null} [f] AttributeProto f\n * @property {number|Long|null} [i] AttributeProto i\n * @property {Uint8Array|null} [s] AttributeProto s\n * @property {onnx.ITensorProto|null} [t] AttributeProto t\n * @property {onnx.IGraphProto|null} [g] AttributeProto g\n * @property {onnx.ISparseTensorProto|null} [sparseTensor] AttributeProto sparseTensor\n * @property {onnx.ITypeProto|null} [tp] AttributeProto tp\n * @property {Array.<number>|null} [floats] AttributeProto floats\n * @property {Array.<number|Long>|null} [ints] AttributeProto ints\n * @property {Array.<Uint8Array>|null} [strings] AttributeProto strings\n * @property {Array.<onnx.ITensorProto>|null} [tensors] AttributeProto tensors\n * @property {Array.<onnx.IGraphProto>|null} [graphs] AttributeProto graphs\n * @property {Array.<onnx.ISparseTensorProto>|null} [sparseTensors] AttributeProto sparseTensors\n * @property {Array.<onnx.ITypeProto>|null} [typeProtos] AttributeProto typeProtos\n */\n\n /**\n * Constructs a new AttributeProto.\n * @memberof onnx\n * @classdesc Represents an AttributeProto.\n * @implements IAttributeProto\n * @constructor\n * @param {onnx.IAttributeProto=} [properties] Properties to set\n */\n function AttributeProto(properties) {\n this.floats = [];\n this.ints = [];\n this.strings = [];\n this.tensors = [];\n this.graphs = [];\n this.sparseTensors = [];\n this.typeProtos = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * AttributeProto name.\n * @member {string} name\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.name = '';\n\n /**\n * AttributeProto refAttrName.\n * @member {string} refAttrName\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.refAttrName = '';\n\n /**\n * AttributeProto docString.\n * @member {string} docString\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.docString = '';\n\n /**\n * AttributeProto type.\n * @member {onnx.AttributeProto.AttributeType} type\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.type = 0;\n\n /**\n * AttributeProto f.\n * @member {number} f\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.f = 0;\n\n /**\n * AttributeProto i.\n * @member {number|Long} i\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.i = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * AttributeProto s.\n * @member {Uint8Array} s\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.s = $util.newBuffer([]);\n\n /**\n * AttributeProto t.\n * @member {onnx.ITensorProto|null|undefined} t\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.t = null;\n\n /**\n * AttributeProto g.\n * @member {onnx.IGraphProto|null|undefined} g\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.g = null;\n\n /**\n * AttributeProto sparseTensor.\n * @member {onnx.ISparseTensorProto|null|undefined} sparseTensor\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.sparseTensor = null;\n\n /**\n * AttributeProto tp.\n * @member {onnx.ITypeProto|null|undefined} tp\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.tp = null;\n\n /**\n * AttributeProto floats.\n * @member {Array.<number>} floats\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.floats = $util.emptyArray;\n\n /**\n * AttributeProto ints.\n * @member {Array.<number|Long>} ints\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.ints = $util.emptyArray;\n\n /**\n * AttributeProto strings.\n * @member {Array.<Uint8Array>} strings\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.strings = $util.emptyArray;\n\n /**\n * AttributeProto tensors.\n * @member {Array.<onnx.ITensorProto>} tensors\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.tensors = $util.emptyArray;\n\n /**\n * AttributeProto graphs.\n * @member {Array.<onnx.IGraphProto>} graphs\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.graphs = $util.emptyArray;\n\n /**\n * AttributeProto sparseTensors.\n * @member {Array.<onnx.ISparseTensorProto>} sparseTensors\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.sparseTensors = $util.emptyArray;\n\n /**\n * AttributeProto typeProtos.\n * @member {Array.<onnx.ITypeProto>} typeProtos\n * @memberof onnx.AttributeProto\n * @instance\n */\n AttributeProto.prototype.typeProtos = $util.emptyArray;\n\n /**\n * Creates a new AttributeProto instance using the specified properties.\n * @function create\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto=} [properties] Properties to set\n * @returns {onnx.AttributeProto} AttributeProto instance\n */\n AttributeProto.create = function create(properties) {\n return new AttributeProto(properties);\n };\n\n /**\n * Encodes the specified AttributeProto message. Does not implicitly {@link onnx.AttributeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto} message AttributeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AttributeProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.f != null && Object.hasOwnProperty.call(message, 'f'))\n writer.uint32(/* id 2, wireType 5 =*/ 21).float(message.f);\n if (message.i != null && Object.hasOwnProperty.call(message, 'i'))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.i);\n if (message.s != null && Object.hasOwnProperty.call(message, 's'))\n writer.uint32(/* id 4, wireType 2 =*/ 34).bytes(message.s);\n if (message.t != null && Object.hasOwnProperty.call(message, 't'))\n $root.onnx.TensorProto.encode(message.t, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.g != null && Object.hasOwnProperty.call(message, 'g'))\n $root.onnx.GraphProto.encode(message.g, writer.uint32(/* id 6, wireType 2 =*/ 50).fork()).ldelim();\n if (message.floats != null && message.floats.length) {\n writer.uint32(/* id 7, wireType 2 =*/ 58).fork();\n for (var i = 0; i < message.floats.length; ++i) writer.float(message.floats[i]);\n writer.ldelim();\n }\n if (message.ints != null && message.ints.length) {\n writer.uint32(/* id 8, wireType 2 =*/ 66).fork();\n for (var i = 0; i < message.ints.length; ++i) writer.int64(message.ints[i]);\n writer.ldelim();\n }\n if (message.strings != null && message.strings.length)\n for (var i = 0; i < message.strings.length; ++i)\n writer.uint32(/* id 9, wireType 2 =*/ 74).bytes(message.strings[i]);\n if (message.tensors != null && message.tensors.length)\n for (var i = 0; i < message.tensors.length; ++i)\n $root.onnx.TensorProto.encode(message.tensors[i], writer.uint32(/* id 10, wireType 2 =*/ 82).fork()).ldelim();\n if (message.graphs != null && message.graphs.length)\n for (var i = 0; i < message.graphs.length; ++i)\n $root.onnx.GraphProto.encode(message.graphs[i], writer.uint32(/* id 11, wireType 2 =*/ 90).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 13, wireType 2 =*/ 106).string(message.docString);\n if (message.tp != null && Object.hasOwnProperty.call(message, 'tp'))\n $root.onnx.TypeProto.encode(message.tp, writer.uint32(/* id 14, wireType 2 =*/ 114).fork()).ldelim();\n if (message.typeProtos != null && message.typeProtos.length)\n for (var i = 0; i < message.typeProtos.length; ++i)\n $root.onnx.TypeProto.encode(\n message.typeProtos[i],\n writer.uint32(/* id 15, wireType 2 =*/ 122).fork(),\n ).ldelim();\n if (message.type != null && Object.hasOwnProperty.call(message, 'type'))\n writer.uint32(/* id 20, wireType 0 =*/ 160).int32(message.type);\n if (message.refAttrName != null && Object.hasOwnProperty.call(message, 'refAttrName'))\n writer.uint32(/* id 21, wireType 2 =*/ 170).string(message.refAttrName);\n if (message.sparseTensor != null && Object.hasOwnProperty.call(message, 'sparseTensor'))\n $root.onnx.SparseTensorProto.encode(\n message.sparseTensor,\n writer.uint32(/* id 22, wireType 2 =*/ 178).fork(),\n ).ldelim();\n if (message.sparseTensors != null && message.sparseTensors.length)\n for (var i = 0; i < message.sparseTensors.length; ++i)\n $root.onnx.SparseTensorProto.encode(\n message.sparseTensors[i],\n writer.uint32(/* id 23, wireType 2 =*/ 186).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified AttributeProto message, length delimited. Does not implicitly {@link onnx.AttributeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.IAttributeProto} message AttributeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n AttributeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an AttributeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.AttributeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.AttributeProto} AttributeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AttributeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.AttributeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 21: {\n message.refAttrName = reader.string();\n break;\n }\n case 13: {\n message.docString = reader.string();\n break;\n }\n case 20: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.f = reader.float();\n break;\n }\n case 3: {\n message.i = reader.int64();\n break;\n }\n case 4: {\n message.s = reader.bytes();\n break;\n }\n case 5: {\n message.t = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.g = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 22: {\n message.sparseTensor = $root.onnx.SparseTensorProto.decode(reader, reader.uint32());\n break;\n }\n case 14: {\n message.tp = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n if (!(message.floats && message.floats.length)) message.floats = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.floats.push(reader.float());\n } else message.floats.push(reader.float());\n break;\n }\n case 8: {\n if (!(message.ints && message.ints.length)) message.ints = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.ints.push(reader.int64());\n } else message.ints.push(reader.int64());\n break;\n }\n case 9: {\n if (!(message.strings && message.strings.length)) message.strings = [];\n message.strings.push(reader.bytes());\n break;\n }\n case 10: {\n if (!(message.tensors && message.tensors.length)) message.tensors = [];\n message.tensors.push($root.onnx.TensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 11: {\n if (!(message.graphs && message.graphs.length)) message.graphs = [];\n message.graphs.push($root.onnx.GraphProto.decode(reader, reader.uint32()));\n break;\n }\n case 23: {\n if (!(message.sparseTensors && message.sparseTensors.length)) message.sparseTensors = [];\n message.sparseTensors.push($root.onnx.SparseTensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 15: {\n if (!(message.typeProtos && message.typeProtos.length)) message.typeProtos = [];\n message.typeProtos.push($root.onnx.TypeProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an AttributeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.AttributeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.AttributeProto} AttributeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n AttributeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an AttributeProto message.\n * @function verify\n * @memberof onnx.AttributeProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n AttributeProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.refAttrName != null && message.hasOwnProperty('refAttrName'))\n if (!$util.isString(message.refAttrName)) return 'refAttrName: string expected';\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n if (message.type != null && message.hasOwnProperty('type'))\n switch (message.type) {\n default:\n return 'type: enum value expected';\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 11:\n case 13:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 12:\n case 14:\n break;\n }\n if (message.f != null && message.hasOwnProperty('f'))\n if (typeof message.f !== 'number') return 'f: number expected';\n if (message.i != null && message.hasOwnProperty('i'))\n if (\n !$util.isInteger(message.i) &&\n !(message.i && $util.isInteger(message.i.low) && $util.isInteger(message.i.high))\n )\n return 'i: integer|Long expected';\n if (message.s != null && message.hasOwnProperty('s'))\n if (!((message.s && typeof message.s.length === 'number') || $util.isString(message.s)))\n return 's: buffer expected';\n if (message.t != null && message.hasOwnProperty('t')) {\n var error = $root.onnx.TensorProto.verify(message.t);\n if (error) return 't.' + error;\n }\n if (message.g != null && message.hasOwnProperty('g')) {\n var error = $root.onnx.GraphProto.verify(message.g);\n if (error) return 'g.' + error;\n }\n if (message.sparseTensor != null && message.hasOwnProperty('sparseTensor')) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseTensor);\n if (error) return 'sparseTensor.' + error;\n }\n if (message.tp != null && message.hasOwnProperty('tp')) {\n var error = $root.onnx.TypeProto.verify(message.tp);\n if (error) return 'tp.' + error;\n }\n if (message.floats != null && message.hasOwnProperty('floats')) {\n if (!Array.isArray(message.floats)) return 'floats: array expected';\n for (var i = 0; i < message.floats.length; ++i)\n if (typeof message.floats[i] !== 'number') return 'floats: number[] expected';\n }\n if (message.ints != null && message.hasOwnProperty('ints')) {\n if (!Array.isArray(message.ints)) return 'ints: array expected';\n for (var i = 0; i < message.ints.length; ++i)\n if (\n !$util.isInteger(message.ints[i]) &&\n !(message.ints[i] && $util.isInteger(message.ints[i].low) && $util.isInteger(message.ints[i].high))\n )\n return 'ints: integer|Long[] expected';\n }\n if (message.strings != null && message.hasOwnProperty('strings')) {\n if (!Array.isArray(message.strings)) return 'strings: array expected';\n for (var i = 0; i < message.strings.length; ++i)\n if (\n !(\n (message.strings[i] && typeof message.strings[i].length === 'number') ||\n $util.isString(message.strings[i])\n )\n )\n return 'strings: buffer[] expected';\n }\n if (message.tensors != null && message.hasOwnProperty('tensors')) {\n if (!Array.isArray(message.tensors)) return 'tensors: array expected';\n for (var i = 0; i < message.tensors.length; ++i) {\n var error = $root.onnx.TensorProto.verify(message.tensors[i]);\n if (error) return 'tensors.' + error;\n }\n }\n if (message.graphs != null && message.hasOwnProperty('graphs')) {\n if (!Array.isArray(message.graphs)) return 'graphs: array expected';\n for (var i = 0; i < message.graphs.length; ++i) {\n var error = $root.onnx.GraphProto.verify(message.graphs[i]);\n if (error) return 'graphs.' + error;\n }\n }\n if (message.sparseTensors != null && message.hasOwnProperty('sparseTensors')) {\n if (!Array.isArray(message.sparseTensors)) return 'sparseTensors: array expected';\n for (var i = 0; i < message.sparseTensors.length; ++i) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseTensors[i]);\n if (error) return 'sparseTensors.' + error;\n }\n }\n if (message.typeProtos != null && message.hasOwnProperty('typeProtos')) {\n if (!Array.isArray(message.typeProtos)) return 'typeProtos: array expected';\n for (var i = 0; i < message.typeProtos.length; ++i) {\n var error = $root.onnx.TypeProto.verify(message.typeProtos[i]);\n if (error) return 'typeProtos.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an AttributeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.AttributeProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.AttributeProto} AttributeProto\n */\n AttributeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.AttributeProto) return object;\n var message = new $root.onnx.AttributeProto();\n if (object.name != null) message.name = String(object.name);\n if (object.refAttrName != null) message.refAttrName = String(object.refAttrName);\n if (object.docString != null) message.docString = String(object.docString);\n switch (object.type) {\n default:\n if (typeof object.type === 'number') {\n message.type = object.type;\n break;\n }\n break;\n case 'UNDEFINED':\n case 0:\n message.type = 0;\n break;\n case 'FLOAT':\n case 1:\n message.type = 1;\n break;\n case 'INT':\n case 2:\n message.type = 2;\n break;\n case 'STRING':\n case 3:\n message.type = 3;\n break;\n case 'TENSOR':\n case 4:\n message.type = 4;\n break;\n case 'GRAPH':\n case 5:\n message.type = 5;\n break;\n case 'SPARSE_TENSOR':\n case 11:\n message.type = 11;\n break;\n case 'TYPE_PROTO':\n case 13:\n message.type = 13;\n break;\n case 'FLOATS':\n case 6:\n message.type = 6;\n break;\n case 'INTS':\n case 7:\n message.type = 7;\n break;\n case 'STRINGS':\n case 8:\n message.type = 8;\n break;\n case 'TENSORS':\n case 9:\n message.type = 9;\n break;\n case 'GRAPHS':\n case 10:\n message.type = 10;\n break;\n case 'SPARSE_TENSORS':\n case 12:\n message.type = 12;\n break;\n case 'TYPE_PROTOS':\n case 14:\n message.type = 14;\n break;\n }\n if (object.f != null) message.f = Number(object.f);\n if (object.i != null)\n if ($util.Long) (message.i = $util.Long.fromValue(object.i)).unsigned = false;\n else if (typeof object.i === 'string') message.i = parseInt(object.i, 10);\n else if (typeof object.i === 'number') message.i = object.i;\n else if (typeof object.i === 'object')\n message.i = new $util.LongBits(object.i.low >>> 0, object.i.high >>> 0).toNumber();\n if (object.s != null)\n if (typeof object.s === 'string')\n $util.base64.decode(object.s, (message.s = $util.newBuffer($util.base64.length(object.s))), 0);\n else if (object.s.length >= 0) message.s = object.s;\n if (object.t != null) {\n if (typeof object.t !== 'object') throw TypeError('.onnx.AttributeProto.t: object expected');\n message.t = $root.onnx.TensorProto.fromObject(object.t);\n }\n if (object.g != null) {\n if (typeof object.g !== 'object') throw TypeError('.onnx.AttributeProto.g: object expected');\n message.g = $root.onnx.GraphProto.fromObject(object.g);\n }\n if (object.sparseTensor != null) {\n if (typeof object.sparseTensor !== 'object')\n throw TypeError('.onnx.AttributeProto.sparseTensor: object expected');\n message.sparseTensor = $root.onnx.SparseTensorProto.fromObject(object.sparseTensor);\n }\n if (object.tp != null) {\n if (typeof object.tp !== 'object') throw TypeError('.onnx.AttributeProto.tp: object expected');\n message.tp = $root.onnx.TypeProto.fromObject(object.tp);\n }\n if (object.floats) {\n if (!Array.isArray(object.floats)) throw TypeError('.onnx.AttributeProto.floats: array expected');\n message.floats = [];\n for (var i = 0; i < object.floats.length; ++i) message.floats[i] = Number(object.floats[i]);\n }\n if (object.ints) {\n if (!Array.isArray(object.ints)) throw TypeError('.onnx.AttributeProto.ints: array expected');\n message.ints = [];\n for (var i = 0; i < object.ints.length; ++i)\n if ($util.Long) (message.ints[i] = $util.Long.fromValue(object.ints[i])).unsigned = false;\n else if (typeof object.ints[i] === 'string') message.ints[i] = parseInt(object.ints[i], 10);\n else if (typeof object.ints[i] === 'number') message.ints[i] = object.ints[i];\n else if (typeof object.ints[i] === 'object')\n message.ints[i] = new $util.LongBits(object.ints[i].low >>> 0, object.ints[i].high >>> 0).toNumber();\n }\n if (object.strings) {\n if (!Array.isArray(object.strings)) throw TypeError('.onnx.AttributeProto.strings: array expected');\n message.strings = [];\n for (var i = 0; i < object.strings.length; ++i)\n if (typeof object.strings[i] === 'string')\n $util.base64.decode(\n object.strings[i],\n (message.strings[i] = $util.newBuffer($util.base64.length(object.strings[i]))),\n 0,\n );\n else if (object.strings[i].length >= 0) message.strings[i] = object.strings[i];\n }\n if (object.tensors) {\n if (!Array.isArray(object.tensors)) throw TypeError('.onnx.AttributeProto.tensors: array expected');\n message.tensors = [];\n for (var i = 0; i < object.tensors.length; ++i) {\n if (typeof object.tensors[i] !== 'object') throw TypeError('.onnx.AttributeProto.tensors: object expected');\n message.tensors[i] = $root.onnx.TensorProto.fromObject(object.tensors[i]);\n }\n }\n if (object.graphs) {\n if (!Array.isArray(object.graphs)) throw TypeError('.onnx.AttributeProto.graphs: array expected');\n message.graphs = [];\n for (var i = 0; i < object.graphs.length; ++i) {\n if (typeof object.graphs[i] !== 'object') throw TypeError('.onnx.AttributeProto.graphs: object expected');\n message.graphs[i] = $root.onnx.GraphProto.fromObject(object.graphs[i]);\n }\n }\n if (object.sparseTensors) {\n if (!Array.isArray(object.sparseTensors)) throw TypeError('.onnx.AttributeProto.sparseTensors: array expected');\n message.sparseTensors = [];\n for (var i = 0; i < object.sparseTensors.length; ++i) {\n if (typeof object.sparseTensors[i] !== 'object')\n throw TypeError('.onnx.AttributeProto.sparseTensors: object expected');\n message.sparseTensors[i] = $root.onnx.SparseTensorProto.fromObject(object.sparseTensors[i]);\n }\n }\n if (object.typeProtos) {\n if (!Array.isArray(object.typeProtos)) throw TypeError('.onnx.AttributeProto.typeProtos: array expected');\n message.typeProtos = [];\n for (var i = 0; i < object.typeProtos.length; ++i) {\n if (typeof object.typeProtos[i] !== 'object')\n throw TypeError('.onnx.AttributeProto.typeProtos: object expected');\n message.typeProtos[i] = $root.onnx.TypeProto.fromObject(object.typeProtos[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an AttributeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.AttributeProto\n * @static\n * @param {onnx.AttributeProto} message AttributeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n AttributeProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.floats = [];\n object.ints = [];\n object.strings = [];\n object.tensors = [];\n object.graphs = [];\n object.typeProtos = [];\n object.sparseTensors = [];\n }\n if (options.defaults) {\n object.name = '';\n object.f = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.i = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.i = options.longs === String ? '0' : 0;\n if (options.bytes === String) object.s = '';\n else {\n object.s = [];\n if (options.bytes !== Array) object.s = $util.newBuffer(object.s);\n }\n object.t = null;\n object.g = null;\n object.docString = '';\n object.tp = null;\n object.type = options.enums === String ? 'UNDEFINED' : 0;\n object.refAttrName = '';\n object.sparseTensor = null;\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.f != null && message.hasOwnProperty('f'))\n object.f = options.json && !isFinite(message.f) ? String(message.f) : message.f;\n if (message.i != null && message.hasOwnProperty('i'))\n if (typeof message.i === 'number') object.i = options.longs === String ? String(message.i) : message.i;\n else\n object.i =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.i)\n : options.longs === Number\n ? new $util.LongBits(message.i.low >>> 0, message.i.high >>> 0).toNumber()\n : message.i;\n if (message.s != null && message.hasOwnProperty('s'))\n object.s =\n options.bytes === String\n ? $util.base64.encode(message.s, 0, message.s.length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.s)\n : message.s;\n if (message.t != null && message.hasOwnProperty('t'))\n object.t = $root.onnx.TensorProto.toObject(message.t, options);\n if (message.g != null && message.hasOwnProperty('g'))\n object.g = $root.onnx.GraphProto.toObject(message.g, options);\n if (message.floats && message.floats.length) {\n object.floats = [];\n for (var j = 0; j < message.floats.length; ++j)\n object.floats[j] =\n options.json && !isFinite(message.floats[j]) ? String(message.floats[j]) : message.floats[j];\n }\n if (message.ints && message.ints.length) {\n object.ints = [];\n for (var j = 0; j < message.ints.length; ++j)\n if (typeof message.ints[j] === 'number')\n object.ints[j] = options.longs === String ? String(message.ints[j]) : message.ints[j];\n else\n object.ints[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.ints[j])\n : options.longs === Number\n ? new $util.LongBits(message.ints[j].low >>> 0, message.ints[j].high >>> 0).toNumber()\n : message.ints[j];\n }\n if (message.strings && message.strings.length) {\n object.strings = [];\n for (var j = 0; j < message.strings.length; ++j)\n object.strings[j] =\n options.bytes === String\n ? $util.base64.encode(message.strings[j], 0, message.strings[j].length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.strings[j])\n : message.strings[j];\n }\n if (message.tensors && message.tensors.length) {\n object.tensors = [];\n for (var j = 0; j < message.tensors.length; ++j)\n object.tensors[j] = $root.onnx.TensorProto.toObject(message.tensors[j], options);\n }\n if (message.graphs && message.graphs.length) {\n object.graphs = [];\n for (var j = 0; j < message.graphs.length; ++j)\n object.graphs[j] = $root.onnx.GraphProto.toObject(message.graphs[j], options);\n }\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.tp != null && message.hasOwnProperty('tp'))\n object.tp = $root.onnx.TypeProto.toObject(message.tp, options);\n if (message.typeProtos && message.typeProtos.length) {\n object.typeProtos = [];\n for (var j = 0; j < message.typeProtos.length; ++j)\n object.typeProtos[j] = $root.onnx.TypeProto.toObject(message.typeProtos[j], options);\n }\n if (message.type != null && message.hasOwnProperty('type'))\n object.type =\n options.enums === String\n ? $root.onnx.AttributeProto.AttributeType[message.type] === undefined\n ? message.type\n : $root.onnx.AttributeProto.AttributeType[message.type]\n : message.type;\n if (message.refAttrName != null && message.hasOwnProperty('refAttrName'))\n object.refAttrName = message.refAttrName;\n if (message.sparseTensor != null && message.hasOwnProperty('sparseTensor'))\n object.sparseTensor = $root.onnx.SparseTensorProto.toObject(message.sparseTensor, options);\n if (message.sparseTensors && message.sparseTensors.length) {\n object.sparseTensors = [];\n for (var j = 0; j < message.sparseTensors.length; ++j)\n object.sparseTensors[j] = $root.onnx.SparseTensorProto.toObject(message.sparseTensors[j], options);\n }\n return object;\n };\n\n /**\n * Converts this AttributeProto to JSON.\n * @function toJSON\n * @memberof onnx.AttributeProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n AttributeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for AttributeProto\n * @function getTypeUrl\n * @memberof onnx.AttributeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n AttributeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.AttributeProto';\n };\n\n /**\n * AttributeType enum.\n * @name onnx.AttributeProto.AttributeType\n * @enum {number}\n * @property {number} UNDEFINED=0 UNDEFINED value\n * @property {number} FLOAT=1 FLOAT value\n * @property {number} INT=2 INT value\n * @property {number} STRING=3 STRING value\n * @property {number} TENSOR=4 TENSOR value\n * @property {number} GRAPH=5 GRAPH value\n * @property {number} SPARSE_TENSOR=11 SPARSE_TENSOR value\n * @property {number} TYPE_PROTO=13 TYPE_PROTO value\n * @property {number} FLOATS=6 FLOATS value\n * @property {number} INTS=7 INTS value\n * @property {number} STRINGS=8 STRINGS value\n * @property {number} TENSORS=9 TENSORS value\n * @property {number} GRAPHS=10 GRAPHS value\n * @property {number} SPARSE_TENSORS=12 SPARSE_TENSORS value\n * @property {number} TYPE_PROTOS=14 TYPE_PROTOS value\n */\n AttributeProto.AttributeType = (function () {\n var valuesById = {},\n values = Object.create(valuesById);\n values[(valuesById[0] = 'UNDEFINED')] = 0;\n values[(valuesById[1] = 'FLOAT')] = 1;\n values[(valuesById[2] = 'INT')] = 2;\n values[(valuesById[3] = 'STRING')] = 3;\n values[(valuesById[4] = 'TENSOR')] = 4;\n values[(valuesById[5] = 'GRAPH')] = 5;\n values[(valuesById[11] = 'SPARSE_TENSOR')] = 11;\n values[(valuesById[13] = 'TYPE_PROTO')] = 13;\n values[(valuesById[6] = 'FLOATS')] = 6;\n values[(valuesById[7] = 'INTS')] = 7;\n values[(valuesById[8] = 'STRINGS')] = 8;\n values[(valuesById[9] = 'TENSORS')] = 9;\n values[(valuesById[10] = 'GRAPHS')] = 10;\n values[(valuesById[12] = 'SPARSE_TENSORS')] = 12;\n values[(valuesById[14] = 'TYPE_PROTOS')] = 14;\n return values;\n })();\n\n return AttributeProto;\n })();\n\n onnx.ValueInfoProto = (function () {\n /**\n * Properties of a ValueInfoProto.\n * @memberof onnx\n * @interface IValueInfoProto\n * @property {string|null} [name] ValueInfoProto name\n * @property {onnx.ITypeProto|null} [type] ValueInfoProto type\n * @property {string|null} [docString] ValueInfoProto docString\n */\n\n /**\n * Constructs a new ValueInfoProto.\n * @memberof onnx\n * @classdesc Represents a ValueInfoProto.\n * @implements IValueInfoProto\n * @constructor\n * @param {onnx.IValueInfoProto=} [properties] Properties to set\n */\n function ValueInfoProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ValueInfoProto name.\n * @member {string} name\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.name = '';\n\n /**\n * ValueInfoProto type.\n * @member {onnx.ITypeProto|null|undefined} type\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.type = null;\n\n /**\n * ValueInfoProto docString.\n * @member {string} docString\n * @memberof onnx.ValueInfoProto\n * @instance\n */\n ValueInfoProto.prototype.docString = '';\n\n /**\n * Creates a new ValueInfoProto instance using the specified properties.\n * @function create\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto=} [properties] Properties to set\n * @returns {onnx.ValueInfoProto} ValueInfoProto instance\n */\n ValueInfoProto.create = function create(properties) {\n return new ValueInfoProto(properties);\n };\n\n /**\n * Encodes the specified ValueInfoProto message. Does not implicitly {@link onnx.ValueInfoProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto} message ValueInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueInfoProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.type != null && Object.hasOwnProperty.call(message, 'type'))\n $root.onnx.TypeProto.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.docString);\n return writer;\n };\n\n /**\n * Encodes the specified ValueInfoProto message, length delimited. Does not implicitly {@link onnx.ValueInfoProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.IValueInfoProto} message ValueInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueInfoProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ValueInfoProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueInfoProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.ValueInfoProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 2: {\n message.type = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n message.docString = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ValueInfoProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueInfoProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ValueInfoProto message.\n * @function verify\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ValueInfoProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.type != null && message.hasOwnProperty('type')) {\n var error = $root.onnx.TypeProto.verify(message.type);\n if (error) return 'type.' + error;\n }\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n return null;\n };\n\n /**\n * Creates a ValueInfoProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.ValueInfoProto} ValueInfoProto\n */\n ValueInfoProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.ValueInfoProto) return object;\n var message = new $root.onnx.ValueInfoProto();\n if (object.name != null) message.name = String(object.name);\n if (object.type != null) {\n if (typeof object.type !== 'object') throw TypeError('.onnx.ValueInfoProto.type: object expected');\n message.type = $root.onnx.TypeProto.fromObject(object.type);\n }\n if (object.docString != null) message.docString = String(object.docString);\n return message;\n };\n\n /**\n * Creates a plain object from a ValueInfoProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {onnx.ValueInfoProto} message ValueInfoProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n ValueInfoProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.name = '';\n object.type = null;\n object.docString = '';\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.type != null && message.hasOwnProperty('type'))\n object.type = $root.onnx.TypeProto.toObject(message.type, options);\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n return object;\n };\n\n /**\n * Converts this ValueInfoProto to JSON.\n * @function toJSON\n * @memberof onnx.ValueInfoProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n ValueInfoProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for ValueInfoProto\n * @function getTypeUrl\n * @memberof onnx.ValueInfoProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ValueInfoProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.ValueInfoProto';\n };\n\n return ValueInfoProto;\n })();\n\n onnx.NodeProto = (function () {\n /**\n * Properties of a NodeProto.\n * @memberof onnx\n * @interface INodeProto\n * @property {Array.<string>|null} [input] NodeProto input\n * @property {Array.<string>|null} [output] NodeProto output\n * @property {string|null} [name] NodeProto name\n * @property {string|null} [opType] NodeProto opType\n * @property {string|null} [domain] NodeProto domain\n * @property {Array.<onnx.IAttributeProto>|null} [attribute] NodeProto attribute\n * @property {string|null} [docString] NodeProto docString\n */\n\n /**\n * Constructs a new NodeProto.\n * @memberof onnx\n * @classdesc Represents a NodeProto.\n * @implements INodeProto\n * @constructor\n * @param {onnx.INodeProto=} [properties] Properties to set\n */\n function NodeProto(properties) {\n this.input = [];\n this.output = [];\n this.attribute = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * NodeProto input.\n * @member {Array.<string>} input\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.input = $util.emptyArray;\n\n /**\n * NodeProto output.\n * @member {Array.<string>} output\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.output = $util.emptyArray;\n\n /**\n * NodeProto name.\n * @member {string} name\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.name = '';\n\n /**\n * NodeProto opType.\n * @member {string} opType\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.opType = '';\n\n /**\n * NodeProto domain.\n * @member {string} domain\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.domain = '';\n\n /**\n * NodeProto attribute.\n * @member {Array.<onnx.IAttributeProto>} attribute\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.attribute = $util.emptyArray;\n\n /**\n * NodeProto docString.\n * @member {string} docString\n * @memberof onnx.NodeProto\n * @instance\n */\n NodeProto.prototype.docString = '';\n\n /**\n * Creates a new NodeProto instance using the specified properties.\n * @function create\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto=} [properties] Properties to set\n * @returns {onnx.NodeProto} NodeProto instance\n */\n NodeProto.create = function create(properties) {\n return new NodeProto(properties);\n };\n\n /**\n * Encodes the specified NodeProto message. Does not implicitly {@link onnx.NodeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto} message NodeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NodeProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.input[i]);\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.output[i]);\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.name);\n if (message.opType != null && Object.hasOwnProperty.call(message, 'opType'))\n writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.opType);\n if (message.attribute != null && message.attribute.length)\n for (var i = 0; i < message.attribute.length; ++i)\n $root.onnx.AttributeProto.encode(\n message.attribute[i],\n writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n ).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.docString);\n if (message.domain != null && Object.hasOwnProperty.call(message, 'domain'))\n writer.uint32(/* id 7, wireType 2 =*/ 58).string(message.domain);\n return writer;\n };\n\n /**\n * Encodes the specified NodeProto message, length delimited. Does not implicitly {@link onnx.NodeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.INodeProto} message NodeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n NodeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a NodeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.NodeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.NodeProto} NodeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NodeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.NodeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.input && message.input.length)) message.input = [];\n message.input.push(reader.string());\n break;\n }\n case 2: {\n if (!(message.output && message.output.length)) message.output = [];\n message.output.push(reader.string());\n break;\n }\n case 3: {\n message.name = reader.string();\n break;\n }\n case 4: {\n message.opType = reader.string();\n break;\n }\n case 7: {\n message.domain = reader.string();\n break;\n }\n case 5: {\n if (!(message.attribute && message.attribute.length)) message.attribute = [];\n message.attribute.push($root.onnx.AttributeProto.decode(reader, reader.uint32()));\n break;\n }\n case 6: {\n message.docString = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a NodeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.NodeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.NodeProto} NodeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n NodeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a NodeProto message.\n * @function verify\n * @memberof onnx.NodeProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n NodeProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.input != null && message.hasOwnProperty('input')) {\n if (!Array.isArray(message.input)) return 'input: array expected';\n for (var i = 0; i < message.input.length; ++i)\n if (!$util.isString(message.input[i])) return 'input: string[] expected';\n }\n if (message.output != null && message.hasOwnProperty('output')) {\n if (!Array.isArray(message.output)) return 'output: array expected';\n for (var i = 0; i < message.output.length; ++i)\n if (!$util.isString(message.output[i])) return 'output: string[] expected';\n }\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.opType != null && message.hasOwnProperty('opType'))\n if (!$util.isString(message.opType)) return 'opType: string expected';\n if (message.domain != null && message.hasOwnProperty('domain'))\n if (!$util.isString(message.domain)) return 'domain: string expected';\n if (message.attribute != null && message.hasOwnProperty('attribute')) {\n if (!Array.isArray(message.attribute)) return 'attribute: array expected';\n for (var i = 0; i < message.attribute.length; ++i) {\n var error = $root.onnx.AttributeProto.verify(message.attribute[i]);\n if (error) return 'attribute.' + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n return null;\n };\n\n /**\n * Creates a NodeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.NodeProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.NodeProto} NodeProto\n */\n NodeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.NodeProto) return object;\n var message = new $root.onnx.NodeProto();\n if (object.input) {\n if (!Array.isArray(object.input)) throw TypeError('.onnx.NodeProto.input: array expected');\n message.input = [];\n for (var i = 0; i < object.input.length; ++i) message.input[i] = String(object.input[i]);\n }\n if (object.output) {\n if (!Array.isArray(object.output)) throw TypeError('.onnx.NodeProto.output: array expected');\n message.output = [];\n for (var i = 0; i < object.output.length; ++i) message.output[i] = String(object.output[i]);\n }\n if (object.name != null) message.name = String(object.name);\n if (object.opType != null) message.opType = String(object.opType);\n if (object.domain != null) message.domain = String(object.domain);\n if (object.attribute) {\n if (!Array.isArray(object.attribute)) throw TypeError('.onnx.NodeProto.attribute: array expected');\n message.attribute = [];\n for (var i = 0; i < object.attribute.length; ++i) {\n if (typeof object.attribute[i] !== 'object') throw TypeError('.onnx.NodeProto.attribute: object expected');\n message.attribute[i] = $root.onnx.AttributeProto.fromObject(object.attribute[i]);\n }\n }\n if (object.docString != null) message.docString = String(object.docString);\n return message;\n };\n\n /**\n * Creates a plain object from a NodeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.NodeProto\n * @static\n * @param {onnx.NodeProto} message NodeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n NodeProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.input = [];\n object.output = [];\n object.attribute = [];\n }\n if (options.defaults) {\n object.name = '';\n object.opType = '';\n object.docString = '';\n object.domain = '';\n }\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j) object.input[j] = message.input[j];\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j) object.output[j] = message.output[j];\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.opType != null && message.hasOwnProperty('opType')) object.opType = message.opType;\n if (message.attribute && message.attribute.length) {\n object.attribute = [];\n for (var j = 0; j < message.attribute.length; ++j)\n object.attribute[j] = $root.onnx.AttributeProto.toObject(message.attribute[j], options);\n }\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.domain != null && message.hasOwnProperty('domain')) object.domain = message.domain;\n return object;\n };\n\n /**\n * Converts this NodeProto to JSON.\n * @function toJSON\n * @memberof onnx.NodeProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n NodeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for NodeProto\n * @function getTypeUrl\n * @memberof onnx.NodeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n NodeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.NodeProto';\n };\n\n return NodeProto;\n })();\n\n onnx.TrainingInfoProto = (function () {\n /**\n * Properties of a TrainingInfoProto.\n * @memberof onnx\n * @interface ITrainingInfoProto\n * @property {onnx.IGraphProto|null} [initialization] TrainingInfoProto initialization\n * @property {onnx.IGraphProto|null} [algorithm] TrainingInfoProto algorithm\n * @property {Array.<onnx.IStringStringEntryProto>|null} [initializationBinding] TrainingInfoProto initializationBinding\n * @property {Array.<onnx.IStringStringEntryProto>|null} [updateBinding] TrainingInfoProto updateBinding\n */\n\n /**\n * Constructs a new TrainingInfoProto.\n * @memberof onnx\n * @classdesc Represents a TrainingInfoProto.\n * @implements ITrainingInfoProto\n * @constructor\n * @param {onnx.ITrainingInfoProto=} [properties] Properties to set\n */\n function TrainingInfoProto(properties) {\n this.initializationBinding = [];\n this.updateBinding = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TrainingInfoProto initialization.\n * @member {onnx.IGraphProto|null|undefined} initialization\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.initialization = null;\n\n /**\n * TrainingInfoProto algorithm.\n * @member {onnx.IGraphProto|null|undefined} algorithm\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.algorithm = null;\n\n /**\n * TrainingInfoProto initializationBinding.\n * @member {Array.<onnx.IStringStringEntryProto>} initializationBinding\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.initializationBinding = $util.emptyArray;\n\n /**\n * TrainingInfoProto updateBinding.\n * @member {Array.<onnx.IStringStringEntryProto>} updateBinding\n * @memberof onnx.TrainingInfoProto\n * @instance\n */\n TrainingInfoProto.prototype.updateBinding = $util.emptyArray;\n\n /**\n * Creates a new TrainingInfoProto instance using the specified properties.\n * @function create\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto=} [properties] Properties to set\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto instance\n */\n TrainingInfoProto.create = function create(properties) {\n return new TrainingInfoProto(properties);\n };\n\n /**\n * Encodes the specified TrainingInfoProto message. Does not implicitly {@link onnx.TrainingInfoProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto} message TrainingInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TrainingInfoProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.initialization != null && Object.hasOwnProperty.call(message, 'initialization'))\n $root.onnx.GraphProto.encode(message.initialization, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.algorithm != null && Object.hasOwnProperty.call(message, 'algorithm'))\n $root.onnx.GraphProto.encode(message.algorithm, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.initializationBinding != null && message.initializationBinding.length)\n for (var i = 0; i < message.initializationBinding.length; ++i)\n $root.onnx.StringStringEntryProto.encode(\n message.initializationBinding[i],\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n ).ldelim();\n if (message.updateBinding != null && message.updateBinding.length)\n for (var i = 0; i < message.updateBinding.length; ++i)\n $root.onnx.StringStringEntryProto.encode(\n message.updateBinding[i],\n writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TrainingInfoProto message, length delimited. Does not implicitly {@link onnx.TrainingInfoProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.ITrainingInfoProto} message TrainingInfoProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TrainingInfoProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TrainingInfoProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TrainingInfoProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TrainingInfoProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.initialization = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.algorithm = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n if (!(message.initializationBinding && message.initializationBinding.length))\n message.initializationBinding = [];\n message.initializationBinding.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n if (!(message.updateBinding && message.updateBinding.length)) message.updateBinding = [];\n message.updateBinding.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TrainingInfoProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TrainingInfoProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TrainingInfoProto message.\n * @function verify\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TrainingInfoProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.initialization != null && message.hasOwnProperty('initialization')) {\n var error = $root.onnx.GraphProto.verify(message.initialization);\n if (error) return 'initialization.' + error;\n }\n if (message.algorithm != null && message.hasOwnProperty('algorithm')) {\n var error = $root.onnx.GraphProto.verify(message.algorithm);\n if (error) return 'algorithm.' + error;\n }\n if (message.initializationBinding != null && message.hasOwnProperty('initializationBinding')) {\n if (!Array.isArray(message.initializationBinding)) return 'initializationBinding: array expected';\n for (var i = 0; i < message.initializationBinding.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.initializationBinding[i]);\n if (error) return 'initializationBinding.' + error;\n }\n }\n if (message.updateBinding != null && message.hasOwnProperty('updateBinding')) {\n if (!Array.isArray(message.updateBinding)) return 'updateBinding: array expected';\n for (var i = 0; i < message.updateBinding.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.updateBinding[i]);\n if (error) return 'updateBinding.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TrainingInfoProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TrainingInfoProto} TrainingInfoProto\n */\n TrainingInfoProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TrainingInfoProto) return object;\n var message = new $root.onnx.TrainingInfoProto();\n if (object.initialization != null) {\n if (typeof object.initialization !== 'object')\n throw TypeError('.onnx.TrainingInfoProto.initialization: object expected');\n message.initialization = $root.onnx.GraphProto.fromObject(object.initialization);\n }\n if (object.algorithm != null) {\n if (typeof object.algorithm !== 'object') throw TypeError('.onnx.TrainingInfoProto.algorithm: object expected');\n message.algorithm = $root.onnx.GraphProto.fromObject(object.algorithm);\n }\n if (object.initializationBinding) {\n if (!Array.isArray(object.initializationBinding))\n throw TypeError('.onnx.TrainingInfoProto.initializationBinding: array expected');\n message.initializationBinding = [];\n for (var i = 0; i < object.initializationBinding.length; ++i) {\n if (typeof object.initializationBinding[i] !== 'object')\n throw TypeError('.onnx.TrainingInfoProto.initializationBinding: object expected');\n message.initializationBinding[i] = $root.onnx.StringStringEntryProto.fromObject(\n object.initializationBinding[i],\n );\n }\n }\n if (object.updateBinding) {\n if (!Array.isArray(object.updateBinding))\n throw TypeError('.onnx.TrainingInfoProto.updateBinding: array expected');\n message.updateBinding = [];\n for (var i = 0; i < object.updateBinding.length; ++i) {\n if (typeof object.updateBinding[i] !== 'object')\n throw TypeError('.onnx.TrainingInfoProto.updateBinding: object expected');\n message.updateBinding[i] = $root.onnx.StringStringEntryProto.fromObject(object.updateBinding[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TrainingInfoProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {onnx.TrainingInfoProto} message TrainingInfoProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n TrainingInfoProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.initializationBinding = [];\n object.updateBinding = [];\n }\n if (options.defaults) {\n object.initialization = null;\n object.algorithm = null;\n }\n if (message.initialization != null && message.hasOwnProperty('initialization'))\n object.initialization = $root.onnx.GraphProto.toObject(message.initialization, options);\n if (message.algorithm != null && message.hasOwnProperty('algorithm'))\n object.algorithm = $root.onnx.GraphProto.toObject(message.algorithm, options);\n if (message.initializationBinding && message.initializationBinding.length) {\n object.initializationBinding = [];\n for (var j = 0; j < message.initializationBinding.length; ++j)\n object.initializationBinding[j] = $root.onnx.StringStringEntryProto.toObject(\n message.initializationBinding[j],\n options,\n );\n }\n if (message.updateBinding && message.updateBinding.length) {\n object.updateBinding = [];\n for (var j = 0; j < message.updateBinding.length; ++j)\n object.updateBinding[j] = $root.onnx.StringStringEntryProto.toObject(message.updateBinding[j], options);\n }\n return object;\n };\n\n /**\n * Converts this TrainingInfoProto to JSON.\n * @function toJSON\n * @memberof onnx.TrainingInfoProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n TrainingInfoProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TrainingInfoProto\n * @function getTypeUrl\n * @memberof onnx.TrainingInfoProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TrainingInfoProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TrainingInfoProto';\n };\n\n return TrainingInfoProto;\n })();\n\n onnx.ModelProto = (function () {\n /**\n * Properties of a ModelProto.\n * @memberof onnx\n * @interface IModelProto\n * @property {number|Long|null} [irVersion] ModelProto irVersion\n * @property {Array.<onnx.IOperatorSetIdProto>|null} [opsetImport] ModelProto opsetImport\n * @property {string|null} [producerName] ModelProto producerName\n * @property {string|null} [producerVersion] ModelProto producerVersion\n * @property {string|null} [domain] ModelProto domain\n * @property {number|Long|null} [modelVersion] ModelProto modelVersion\n * @property {string|null} [docString] ModelProto docString\n * @property {onnx.IGraphProto|null} [graph] ModelProto graph\n * @property {Array.<onnx.IStringStringEntryProto>|null} [metadataProps] ModelProto metadataProps\n * @property {Array.<onnx.ITrainingInfoProto>|null} [trainingInfo] ModelProto trainingInfo\n * @property {Array.<onnx.IFunctionProto>|null} [functions] ModelProto functions\n */\n\n /**\n * Constructs a new ModelProto.\n * @memberof onnx\n * @classdesc Represents a ModelProto.\n * @implements IModelProto\n * @constructor\n * @param {onnx.IModelProto=} [properties] Properties to set\n */\n function ModelProto(properties) {\n this.opsetImport = [];\n this.metadataProps = [];\n this.trainingInfo = [];\n this.functions = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ModelProto irVersion.\n * @member {number|Long} irVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.irVersion = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * ModelProto opsetImport.\n * @member {Array.<onnx.IOperatorSetIdProto>} opsetImport\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.opsetImport = $util.emptyArray;\n\n /**\n * ModelProto producerName.\n * @member {string} producerName\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.producerName = '';\n\n /**\n * ModelProto producerVersion.\n * @member {string} producerVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.producerVersion = '';\n\n /**\n * ModelProto domain.\n * @member {string} domain\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.domain = '';\n\n /**\n * ModelProto modelVersion.\n * @member {number|Long} modelVersion\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.modelVersion = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * ModelProto docString.\n * @member {string} docString\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.docString = '';\n\n /**\n * ModelProto graph.\n * @member {onnx.IGraphProto|null|undefined} graph\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.graph = null;\n\n /**\n * ModelProto metadataProps.\n * @member {Array.<onnx.IStringStringEntryProto>} metadataProps\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.metadataProps = $util.emptyArray;\n\n /**\n * ModelProto trainingInfo.\n * @member {Array.<onnx.ITrainingInfoProto>} trainingInfo\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.trainingInfo = $util.emptyArray;\n\n /**\n * ModelProto functions.\n * @member {Array.<onnx.IFunctionProto>} functions\n * @memberof onnx.ModelProto\n * @instance\n */\n ModelProto.prototype.functions = $util.emptyArray;\n\n /**\n * Creates a new ModelProto instance using the specified properties.\n * @function create\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto=} [properties] Properties to set\n * @returns {onnx.ModelProto} ModelProto instance\n */\n ModelProto.create = function create(properties) {\n return new ModelProto(properties);\n };\n\n /**\n * Encodes the specified ModelProto message. Does not implicitly {@link onnx.ModelProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto} message ModelProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ModelProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.irVersion != null && Object.hasOwnProperty.call(message, 'irVersion'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.irVersion);\n if (message.producerName != null && Object.hasOwnProperty.call(message, 'producerName'))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.producerName);\n if (message.producerVersion != null && Object.hasOwnProperty.call(message, 'producerVersion'))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.producerVersion);\n if (message.domain != null && Object.hasOwnProperty.call(message, 'domain'))\n writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.domain);\n if (message.modelVersion != null && Object.hasOwnProperty.call(message, 'modelVersion'))\n writer.uint32(/* id 5, wireType 0 =*/ 40).int64(message.modelVersion);\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.docString);\n if (message.graph != null && Object.hasOwnProperty.call(message, 'graph'))\n $root.onnx.GraphProto.encode(message.graph, writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.opsetImport != null && message.opsetImport.length)\n for (var i = 0; i < message.opsetImport.length; ++i)\n $root.onnx.OperatorSetIdProto.encode(\n message.opsetImport[i],\n writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n ).ldelim();\n if (message.metadataProps != null && message.metadataProps.length)\n for (var i = 0; i < message.metadataProps.length; ++i)\n $root.onnx.StringStringEntryProto.encode(\n message.metadataProps[i],\n writer.uint32(/* id 14, wireType 2 =*/ 114).fork(),\n ).ldelim();\n if (message.trainingInfo != null && message.trainingInfo.length)\n for (var i = 0; i < message.trainingInfo.length; ++i)\n $root.onnx.TrainingInfoProto.encode(\n message.trainingInfo[i],\n writer.uint32(/* id 20, wireType 2 =*/ 162).fork(),\n ).ldelim();\n if (message.functions != null && message.functions.length)\n for (var i = 0; i < message.functions.length; ++i)\n $root.onnx.FunctionProto.encode(\n message.functions[i],\n writer.uint32(/* id 25, wireType 2 =*/ 202).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ModelProto message, length delimited. Does not implicitly {@link onnx.ModelProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.IModelProto} message ModelProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ModelProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ModelProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.ModelProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.ModelProto} ModelProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ModelProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.ModelProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.irVersion = reader.int64();\n break;\n }\n case 8: {\n if (!(message.opsetImport && message.opsetImport.length)) message.opsetImport = [];\n message.opsetImport.push($root.onnx.OperatorSetIdProto.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.producerName = reader.string();\n break;\n }\n case 3: {\n message.producerVersion = reader.string();\n break;\n }\n case 4: {\n message.domain = reader.string();\n break;\n }\n case 5: {\n message.modelVersion = reader.int64();\n break;\n }\n case 6: {\n message.docString = reader.string();\n break;\n }\n case 7: {\n message.graph = $root.onnx.GraphProto.decode(reader, reader.uint32());\n break;\n }\n case 14: {\n if (!(message.metadataProps && message.metadataProps.length)) message.metadataProps = [];\n message.metadataProps.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 20: {\n if (!(message.trainingInfo && message.trainingInfo.length)) message.trainingInfo = [];\n message.trainingInfo.push($root.onnx.TrainingInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 25: {\n if (!(message.functions && message.functions.length)) message.functions = [];\n message.functions.push($root.onnx.FunctionProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ModelProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.ModelProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.ModelProto} ModelProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ModelProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ModelProto message.\n * @function verify\n * @memberof onnx.ModelProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ModelProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.irVersion != null && message.hasOwnProperty('irVersion'))\n if (\n !$util.isInteger(message.irVersion) &&\n !(message.irVersion && $util.isInteger(message.irVersion.low) && $util.isInteger(message.irVersion.high))\n )\n return 'irVersion: integer|Long expected';\n if (message.opsetImport != null && message.hasOwnProperty('opsetImport')) {\n if (!Array.isArray(message.opsetImport)) return 'opsetImport: array expected';\n for (var i = 0; i < message.opsetImport.length; ++i) {\n var error = $root.onnx.OperatorSetIdProto.verify(message.opsetImport[i]);\n if (error) return 'opsetImport.' + error;\n }\n }\n if (message.producerName != null && message.hasOwnProperty('producerName'))\n if (!$util.isString(message.producerName)) return 'producerName: string expected';\n if (message.producerVersion != null && message.hasOwnProperty('producerVersion'))\n if (!$util.isString(message.producerVersion)) return 'producerVersion: string expected';\n if (message.domain != null && message.hasOwnProperty('domain'))\n if (!$util.isString(message.domain)) return 'domain: string expected';\n if (message.modelVersion != null && message.hasOwnProperty('modelVersion'))\n if (\n !$util.isInteger(message.modelVersion) &&\n !(\n message.modelVersion &&\n $util.isInteger(message.modelVersion.low) &&\n $util.isInteger(message.modelVersion.high)\n )\n )\n return 'modelVersion: integer|Long expected';\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n if (message.graph != null && message.hasOwnProperty('graph')) {\n var error = $root.onnx.GraphProto.verify(message.graph);\n if (error) return 'graph.' + error;\n }\n if (message.metadataProps != null && message.hasOwnProperty('metadataProps')) {\n if (!Array.isArray(message.metadataProps)) return 'metadataProps: array expected';\n for (var i = 0; i < message.metadataProps.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.metadataProps[i]);\n if (error) return 'metadataProps.' + error;\n }\n }\n if (message.trainingInfo != null && message.hasOwnProperty('trainingInfo')) {\n if (!Array.isArray(message.trainingInfo)) return 'trainingInfo: array expected';\n for (var i = 0; i < message.trainingInfo.length; ++i) {\n var error = $root.onnx.TrainingInfoProto.verify(message.trainingInfo[i]);\n if (error) return 'trainingInfo.' + error;\n }\n }\n if (message.functions != null && message.hasOwnProperty('functions')) {\n if (!Array.isArray(message.functions)) return 'functions: array expected';\n for (var i = 0; i < message.functions.length; ++i) {\n var error = $root.onnx.FunctionProto.verify(message.functions[i]);\n if (error) return 'functions.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a ModelProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.ModelProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.ModelProto} ModelProto\n */\n ModelProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.ModelProto) return object;\n var message = new $root.onnx.ModelProto();\n if (object.irVersion != null)\n if ($util.Long) (message.irVersion = $util.Long.fromValue(object.irVersion)).unsigned = false;\n else if (typeof object.irVersion === 'string') message.irVersion = parseInt(object.irVersion, 10);\n else if (typeof object.irVersion === 'number') message.irVersion = object.irVersion;\n else if (typeof object.irVersion === 'object')\n message.irVersion = new $util.LongBits(object.irVersion.low >>> 0, object.irVersion.high >>> 0).toNumber();\n if (object.opsetImport) {\n if (!Array.isArray(object.opsetImport)) throw TypeError('.onnx.ModelProto.opsetImport: array expected');\n message.opsetImport = [];\n for (var i = 0; i < object.opsetImport.length; ++i) {\n if (typeof object.opsetImport[i] !== 'object')\n throw TypeError('.onnx.ModelProto.opsetImport: object expected');\n message.opsetImport[i] = $root.onnx.OperatorSetIdProto.fromObject(object.opsetImport[i]);\n }\n }\n if (object.producerName != null) message.producerName = String(object.producerName);\n if (object.producerVersion != null) message.producerVersion = String(object.producerVersion);\n if (object.domain != null) message.domain = String(object.domain);\n if (object.modelVersion != null)\n if ($util.Long) (message.modelVersion = $util.Long.fromValue(object.modelVersion)).unsigned = false;\n else if (typeof object.modelVersion === 'string') message.modelVersion = parseInt(object.modelVersion, 10);\n else if (typeof object.modelVersion === 'number') message.modelVersion = object.modelVersion;\n else if (typeof object.modelVersion === 'object')\n message.modelVersion = new $util.LongBits(\n object.modelVersion.low >>> 0,\n object.modelVersion.high >>> 0,\n ).toNumber();\n if (object.docString != null) message.docString = String(object.docString);\n if (object.graph != null) {\n if (typeof object.graph !== 'object') throw TypeError('.onnx.ModelProto.graph: object expected');\n message.graph = $root.onnx.GraphProto.fromObject(object.graph);\n }\n if (object.metadataProps) {\n if (!Array.isArray(object.metadataProps)) throw TypeError('.onnx.ModelProto.metadataProps: array expected');\n message.metadataProps = [];\n for (var i = 0; i < object.metadataProps.length; ++i) {\n if (typeof object.metadataProps[i] !== 'object')\n throw TypeError('.onnx.ModelProto.metadataProps: object expected');\n message.metadataProps[i] = $root.onnx.StringStringEntryProto.fromObject(object.metadataProps[i]);\n }\n }\n if (object.trainingInfo) {\n if (!Array.isArray(object.trainingInfo)) throw TypeError('.onnx.ModelProto.trainingInfo: array expected');\n message.trainingInfo = [];\n for (var i = 0; i < object.trainingInfo.length; ++i) {\n if (typeof object.trainingInfo[i] !== 'object')\n throw TypeError('.onnx.ModelProto.trainingInfo: object expected');\n message.trainingInfo[i] = $root.onnx.TrainingInfoProto.fromObject(object.trainingInfo[i]);\n }\n }\n if (object.functions) {\n if (!Array.isArray(object.functions)) throw TypeError('.onnx.ModelProto.functions: array expected');\n message.functions = [];\n for (var i = 0; i < object.functions.length; ++i) {\n if (typeof object.functions[i] !== 'object') throw TypeError('.onnx.ModelProto.functions: object expected');\n message.functions[i] = $root.onnx.FunctionProto.fromObject(object.functions[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a ModelProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.ModelProto\n * @static\n * @param {onnx.ModelProto} message ModelProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n ModelProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.opsetImport = [];\n object.metadataProps = [];\n object.trainingInfo = [];\n object.functions = [];\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.irVersion =\n options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.irVersion = options.longs === String ? '0' : 0;\n object.producerName = '';\n object.producerVersion = '';\n object.domain = '';\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.modelVersion =\n options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.modelVersion = options.longs === String ? '0' : 0;\n object.docString = '';\n object.graph = null;\n }\n if (message.irVersion != null && message.hasOwnProperty('irVersion'))\n if (typeof message.irVersion === 'number')\n object.irVersion = options.longs === String ? String(message.irVersion) : message.irVersion;\n else\n object.irVersion =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.irVersion)\n : options.longs === Number\n ? new $util.LongBits(message.irVersion.low >>> 0, message.irVersion.high >>> 0).toNumber()\n : message.irVersion;\n if (message.producerName != null && message.hasOwnProperty('producerName'))\n object.producerName = message.producerName;\n if (message.producerVersion != null && message.hasOwnProperty('producerVersion'))\n object.producerVersion = message.producerVersion;\n if (message.domain != null && message.hasOwnProperty('domain')) object.domain = message.domain;\n if (message.modelVersion != null && message.hasOwnProperty('modelVersion'))\n if (typeof message.modelVersion === 'number')\n object.modelVersion = options.longs === String ? String(message.modelVersion) : message.modelVersion;\n else\n object.modelVersion =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.modelVersion)\n : options.longs === Number\n ? new $util.LongBits(message.modelVersion.low >>> 0, message.modelVersion.high >>> 0).toNumber()\n : message.modelVersion;\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.graph != null && message.hasOwnProperty('graph'))\n object.graph = $root.onnx.GraphProto.toObject(message.graph, options);\n if (message.opsetImport && message.opsetImport.length) {\n object.opsetImport = [];\n for (var j = 0; j < message.opsetImport.length; ++j)\n object.opsetImport[j] = $root.onnx.OperatorSetIdProto.toObject(message.opsetImport[j], options);\n }\n if (message.metadataProps && message.metadataProps.length) {\n object.metadataProps = [];\n for (var j = 0; j < message.metadataProps.length; ++j)\n object.metadataProps[j] = $root.onnx.StringStringEntryProto.toObject(message.metadataProps[j], options);\n }\n if (message.trainingInfo && message.trainingInfo.length) {\n object.trainingInfo = [];\n for (var j = 0; j < message.trainingInfo.length; ++j)\n object.trainingInfo[j] = $root.onnx.TrainingInfoProto.toObject(message.trainingInfo[j], options);\n }\n if (message.functions && message.functions.length) {\n object.functions = [];\n for (var j = 0; j < message.functions.length; ++j)\n object.functions[j] = $root.onnx.FunctionProto.toObject(message.functions[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ModelProto to JSON.\n * @function toJSON\n * @memberof onnx.ModelProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n ModelProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for ModelProto\n * @function getTypeUrl\n * @memberof onnx.ModelProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ModelProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.ModelProto';\n };\n\n return ModelProto;\n })();\n\n onnx.StringStringEntryProto = (function () {\n /**\n * Properties of a StringStringEntryProto.\n * @memberof onnx\n * @interface IStringStringEntryProto\n * @property {string|null} [key] StringStringEntryProto key\n * @property {string|null} [value] StringStringEntryProto value\n */\n\n /**\n * Constructs a new StringStringEntryProto.\n * @memberof onnx\n * @classdesc Represents a StringStringEntryProto.\n * @implements IStringStringEntryProto\n * @constructor\n * @param {onnx.IStringStringEntryProto=} [properties] Properties to set\n */\n function StringStringEntryProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * StringStringEntryProto key.\n * @member {string} key\n * @memberof onnx.StringStringEntryProto\n * @instance\n */\n StringStringEntryProto.prototype.key = '';\n\n /**\n * StringStringEntryProto value.\n * @member {string} value\n * @memberof onnx.StringStringEntryProto\n * @instance\n */\n StringStringEntryProto.prototype.value = '';\n\n /**\n * Creates a new StringStringEntryProto instance using the specified properties.\n * @function create\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto=} [properties] Properties to set\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto instance\n */\n StringStringEntryProto.create = function create(properties) {\n return new StringStringEntryProto(properties);\n };\n\n /**\n * Encodes the specified StringStringEntryProto message. Does not implicitly {@link onnx.StringStringEntryProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto} message StringStringEntryProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n StringStringEntryProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.key != null && Object.hasOwnProperty.call(message, 'key'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.key);\n if (message.value != null && Object.hasOwnProperty.call(message, 'value'))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.value);\n return writer;\n };\n\n /**\n * Encodes the specified StringStringEntryProto message, length delimited. Does not implicitly {@link onnx.StringStringEntryProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.IStringStringEntryProto} message StringStringEntryProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n StringStringEntryProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a StringStringEntryProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n StringStringEntryProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.StringStringEntryProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.key = reader.string();\n break;\n }\n case 2: {\n message.value = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a StringStringEntryProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n StringStringEntryProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a StringStringEntryProto message.\n * @function verify\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n StringStringEntryProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.key != null && message.hasOwnProperty('key'))\n if (!$util.isString(message.key)) return 'key: string expected';\n if (message.value != null && message.hasOwnProperty('value'))\n if (!$util.isString(message.value)) return 'value: string expected';\n return null;\n };\n\n /**\n * Creates a StringStringEntryProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.StringStringEntryProto} StringStringEntryProto\n */\n StringStringEntryProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.StringStringEntryProto) return object;\n var message = new $root.onnx.StringStringEntryProto();\n if (object.key != null) message.key = String(object.key);\n if (object.value != null) message.value = String(object.value);\n return message;\n };\n\n /**\n * Creates a plain object from a StringStringEntryProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {onnx.StringStringEntryProto} message StringStringEntryProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n StringStringEntryProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.key = '';\n object.value = '';\n }\n if (message.key != null && message.hasOwnProperty('key')) object.key = message.key;\n if (message.value != null && message.hasOwnProperty('value')) object.value = message.value;\n return object;\n };\n\n /**\n * Converts this StringStringEntryProto to JSON.\n * @function toJSON\n * @memberof onnx.StringStringEntryProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n StringStringEntryProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for StringStringEntryProto\n * @function getTypeUrl\n * @memberof onnx.StringStringEntryProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n StringStringEntryProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.StringStringEntryProto';\n };\n\n return StringStringEntryProto;\n })();\n\n onnx.TensorAnnotation = (function () {\n /**\n * Properties of a TensorAnnotation.\n * @memberof onnx\n * @interface ITensorAnnotation\n * @property {string|null} [tensorName] TensorAnnotation tensorName\n * @property {Array.<onnx.IStringStringEntryProto>|null} [quantParameterTensorNames] TensorAnnotation quantParameterTensorNames\n */\n\n /**\n * Constructs a new TensorAnnotation.\n * @memberof onnx\n * @classdesc Represents a TensorAnnotation.\n * @implements ITensorAnnotation\n * @constructor\n * @param {onnx.ITensorAnnotation=} [properties] Properties to set\n */\n function TensorAnnotation(properties) {\n this.quantParameterTensorNames = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorAnnotation tensorName.\n * @member {string} tensorName\n * @memberof onnx.TensorAnnotation\n * @instance\n */\n TensorAnnotation.prototype.tensorName = '';\n\n /**\n * TensorAnnotation quantParameterTensorNames.\n * @member {Array.<onnx.IStringStringEntryProto>} quantParameterTensorNames\n * @memberof onnx.TensorAnnotation\n * @instance\n */\n TensorAnnotation.prototype.quantParameterTensorNames = $util.emptyArray;\n\n /**\n * Creates a new TensorAnnotation instance using the specified properties.\n * @function create\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation=} [properties] Properties to set\n * @returns {onnx.TensorAnnotation} TensorAnnotation instance\n */\n TensorAnnotation.create = function create(properties) {\n return new TensorAnnotation(properties);\n };\n\n /**\n * Encodes the specified TensorAnnotation message. Does not implicitly {@link onnx.TensorAnnotation.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation} message TensorAnnotation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorAnnotation.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.tensorName != null && Object.hasOwnProperty.call(message, 'tensorName'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.tensorName);\n if (message.quantParameterTensorNames != null && message.quantParameterTensorNames.length)\n for (var i = 0; i < message.quantParameterTensorNames.length; ++i)\n $root.onnx.StringStringEntryProto.encode(\n message.quantParameterTensorNames[i],\n writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TensorAnnotation message, length delimited. Does not implicitly {@link onnx.TensorAnnotation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.ITensorAnnotation} message TensorAnnotation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorAnnotation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorAnnotation message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorAnnotation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TensorAnnotation();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.tensorName = reader.string();\n break;\n }\n case 2: {\n if (!(message.quantParameterTensorNames && message.quantParameterTensorNames.length))\n message.quantParameterTensorNames = [];\n message.quantParameterTensorNames.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorAnnotation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorAnnotation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorAnnotation message.\n * @function verify\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorAnnotation.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.tensorName != null && message.hasOwnProperty('tensorName'))\n if (!$util.isString(message.tensorName)) return 'tensorName: string expected';\n if (message.quantParameterTensorNames != null && message.hasOwnProperty('quantParameterTensorNames')) {\n if (!Array.isArray(message.quantParameterTensorNames)) return 'quantParameterTensorNames: array expected';\n for (var i = 0; i < message.quantParameterTensorNames.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.quantParameterTensorNames[i]);\n if (error) return 'quantParameterTensorNames.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TensorAnnotation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TensorAnnotation} TensorAnnotation\n */\n TensorAnnotation.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorAnnotation) return object;\n var message = new $root.onnx.TensorAnnotation();\n if (object.tensorName != null) message.tensorName = String(object.tensorName);\n if (object.quantParameterTensorNames) {\n if (!Array.isArray(object.quantParameterTensorNames))\n throw TypeError('.onnx.TensorAnnotation.quantParameterTensorNames: array expected');\n message.quantParameterTensorNames = [];\n for (var i = 0; i < object.quantParameterTensorNames.length; ++i) {\n if (typeof object.quantParameterTensorNames[i] !== 'object')\n throw TypeError('.onnx.TensorAnnotation.quantParameterTensorNames: object expected');\n message.quantParameterTensorNames[i] = $root.onnx.StringStringEntryProto.fromObject(\n object.quantParameterTensorNames[i],\n );\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorAnnotation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {onnx.TensorAnnotation} message TensorAnnotation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n TensorAnnotation.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) object.quantParameterTensorNames = [];\n if (options.defaults) object.tensorName = '';\n if (message.tensorName != null && message.hasOwnProperty('tensorName')) object.tensorName = message.tensorName;\n if (message.quantParameterTensorNames && message.quantParameterTensorNames.length) {\n object.quantParameterTensorNames = [];\n for (var j = 0; j < message.quantParameterTensorNames.length; ++j)\n object.quantParameterTensorNames[j] = $root.onnx.StringStringEntryProto.toObject(\n message.quantParameterTensorNames[j],\n options,\n );\n }\n return object;\n };\n\n /**\n * Converts this TensorAnnotation to JSON.\n * @function toJSON\n * @memberof onnx.TensorAnnotation\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n TensorAnnotation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorAnnotation\n * @function getTypeUrl\n * @memberof onnx.TensorAnnotation\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorAnnotation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TensorAnnotation';\n };\n\n return TensorAnnotation;\n })();\n\n onnx.GraphProto = (function () {\n /**\n * Properties of a GraphProto.\n * @memberof onnx\n * @interface IGraphProto\n * @property {Array.<onnx.INodeProto>|null} [node] GraphProto node\n * @property {string|null} [name] GraphProto name\n * @property {Array.<onnx.ITensorProto>|null} [initializer] GraphProto initializer\n * @property {Array.<onnx.ISparseTensorProto>|null} [sparseInitializer] GraphProto sparseInitializer\n * @property {string|null} [docString] GraphProto docString\n * @property {Array.<onnx.IValueInfoProto>|null} [input] GraphProto input\n * @property {Array.<onnx.IValueInfoProto>|null} [output] GraphProto output\n * @property {Array.<onnx.IValueInfoProto>|null} [valueInfo] GraphProto valueInfo\n * @property {Array.<onnx.ITensorAnnotation>|null} [quantizationAnnotation] GraphProto quantizationAnnotation\n */\n\n /**\n * Constructs a new GraphProto.\n * @memberof onnx\n * @classdesc Represents a GraphProto.\n * @implements IGraphProto\n * @constructor\n * @param {onnx.IGraphProto=} [properties] Properties to set\n */\n function GraphProto(properties) {\n this.node = [];\n this.initializer = [];\n this.sparseInitializer = [];\n this.input = [];\n this.output = [];\n this.valueInfo = [];\n this.quantizationAnnotation = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * GraphProto node.\n * @member {Array.<onnx.INodeProto>} node\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.node = $util.emptyArray;\n\n /**\n * GraphProto name.\n * @member {string} name\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.name = '';\n\n /**\n * GraphProto initializer.\n * @member {Array.<onnx.ITensorProto>} initializer\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.initializer = $util.emptyArray;\n\n /**\n * GraphProto sparseInitializer.\n * @member {Array.<onnx.ISparseTensorProto>} sparseInitializer\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.sparseInitializer = $util.emptyArray;\n\n /**\n * GraphProto docString.\n * @member {string} docString\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.docString = '';\n\n /**\n * GraphProto input.\n * @member {Array.<onnx.IValueInfoProto>} input\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.input = $util.emptyArray;\n\n /**\n * GraphProto output.\n * @member {Array.<onnx.IValueInfoProto>} output\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.output = $util.emptyArray;\n\n /**\n * GraphProto valueInfo.\n * @member {Array.<onnx.IValueInfoProto>} valueInfo\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.valueInfo = $util.emptyArray;\n\n /**\n * GraphProto quantizationAnnotation.\n * @member {Array.<onnx.ITensorAnnotation>} quantizationAnnotation\n * @memberof onnx.GraphProto\n * @instance\n */\n GraphProto.prototype.quantizationAnnotation = $util.emptyArray;\n\n /**\n * Creates a new GraphProto instance using the specified properties.\n * @function create\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto=} [properties] Properties to set\n * @returns {onnx.GraphProto} GraphProto instance\n */\n GraphProto.create = function create(properties) {\n return new GraphProto(properties);\n };\n\n /**\n * Encodes the specified GraphProto message. Does not implicitly {@link onnx.GraphProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto} message GraphProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n GraphProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.node != null && message.node.length)\n for (var i = 0; i < message.node.length; ++i)\n $root.onnx.NodeProto.encode(message.node[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.name);\n if (message.initializer != null && message.initializer.length)\n for (var i = 0; i < message.initializer.length; ++i)\n $root.onnx.TensorProto.encode(\n message.initializer[i],\n writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n ).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 10, wireType 2 =*/ 82).string(message.docString);\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n $root.onnx.ValueInfoProto.encode(\n message.input[i],\n writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n ).ldelim();\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n $root.onnx.ValueInfoProto.encode(\n message.output[i],\n writer.uint32(/* id 12, wireType 2 =*/ 98).fork(),\n ).ldelim();\n if (message.valueInfo != null && message.valueInfo.length)\n for (var i = 0; i < message.valueInfo.length; ++i)\n $root.onnx.ValueInfoProto.encode(\n message.valueInfo[i],\n writer.uint32(/* id 13, wireType 2 =*/ 106).fork(),\n ).ldelim();\n if (message.quantizationAnnotation != null && message.quantizationAnnotation.length)\n for (var i = 0; i < message.quantizationAnnotation.length; ++i)\n $root.onnx.TensorAnnotation.encode(\n message.quantizationAnnotation[i],\n writer.uint32(/* id 14, wireType 2 =*/ 114).fork(),\n ).ldelim();\n if (message.sparseInitializer != null && message.sparseInitializer.length)\n for (var i = 0; i < message.sparseInitializer.length; ++i)\n $root.onnx.SparseTensorProto.encode(\n message.sparseInitializer[i],\n writer.uint32(/* id 15, wireType 2 =*/ 122).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified GraphProto message, length delimited. Does not implicitly {@link onnx.GraphProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.IGraphProto} message GraphProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n GraphProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a GraphProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.GraphProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.GraphProto} GraphProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n GraphProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.GraphProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.node && message.node.length)) message.node = [];\n message.node.push($root.onnx.NodeProto.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.name = reader.string();\n break;\n }\n case 5: {\n if (!(message.initializer && message.initializer.length)) message.initializer = [];\n message.initializer.push($root.onnx.TensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 15: {\n if (!(message.sparseInitializer && message.sparseInitializer.length)) message.sparseInitializer = [];\n message.sparseInitializer.push($root.onnx.SparseTensorProto.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.docString = reader.string();\n break;\n }\n case 11: {\n if (!(message.input && message.input.length)) message.input = [];\n message.input.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 12: {\n if (!(message.output && message.output.length)) message.output = [];\n message.output.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 13: {\n if (!(message.valueInfo && message.valueInfo.length)) message.valueInfo = [];\n message.valueInfo.push($root.onnx.ValueInfoProto.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n if (!(message.quantizationAnnotation && message.quantizationAnnotation.length))\n message.quantizationAnnotation = [];\n message.quantizationAnnotation.push($root.onnx.TensorAnnotation.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a GraphProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.GraphProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.GraphProto} GraphProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n GraphProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a GraphProto message.\n * @function verify\n * @memberof onnx.GraphProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n GraphProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.node != null && message.hasOwnProperty('node')) {\n if (!Array.isArray(message.node)) return 'node: array expected';\n for (var i = 0; i < message.node.length; ++i) {\n var error = $root.onnx.NodeProto.verify(message.node[i]);\n if (error) return 'node.' + error;\n }\n }\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.initializer != null && message.hasOwnProperty('initializer')) {\n if (!Array.isArray(message.initializer)) return 'initializer: array expected';\n for (var i = 0; i < message.initializer.length; ++i) {\n var error = $root.onnx.TensorProto.verify(message.initializer[i]);\n if (error) return 'initializer.' + error;\n }\n }\n if (message.sparseInitializer != null && message.hasOwnProperty('sparseInitializer')) {\n if (!Array.isArray(message.sparseInitializer)) return 'sparseInitializer: array expected';\n for (var i = 0; i < message.sparseInitializer.length; ++i) {\n var error = $root.onnx.SparseTensorProto.verify(message.sparseInitializer[i]);\n if (error) return 'sparseInitializer.' + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n if (message.input != null && message.hasOwnProperty('input')) {\n if (!Array.isArray(message.input)) return 'input: array expected';\n for (var i = 0; i < message.input.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.input[i]);\n if (error) return 'input.' + error;\n }\n }\n if (message.output != null && message.hasOwnProperty('output')) {\n if (!Array.isArray(message.output)) return 'output: array expected';\n for (var i = 0; i < message.output.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.output[i]);\n if (error) return 'output.' + error;\n }\n }\n if (message.valueInfo != null && message.hasOwnProperty('valueInfo')) {\n if (!Array.isArray(message.valueInfo)) return 'valueInfo: array expected';\n for (var i = 0; i < message.valueInfo.length; ++i) {\n var error = $root.onnx.ValueInfoProto.verify(message.valueInfo[i]);\n if (error) return 'valueInfo.' + error;\n }\n }\n if (message.quantizationAnnotation != null && message.hasOwnProperty('quantizationAnnotation')) {\n if (!Array.isArray(message.quantizationAnnotation)) return 'quantizationAnnotation: array expected';\n for (var i = 0; i < message.quantizationAnnotation.length; ++i) {\n var error = $root.onnx.TensorAnnotation.verify(message.quantizationAnnotation[i]);\n if (error) return 'quantizationAnnotation.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a GraphProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.GraphProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.GraphProto} GraphProto\n */\n GraphProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.GraphProto) return object;\n var message = new $root.onnx.GraphProto();\n if (object.node) {\n if (!Array.isArray(object.node)) throw TypeError('.onnx.GraphProto.node: array expected');\n message.node = [];\n for (var i = 0; i < object.node.length; ++i) {\n if (typeof object.node[i] !== 'object') throw TypeError('.onnx.GraphProto.node: object expected');\n message.node[i] = $root.onnx.NodeProto.fromObject(object.node[i]);\n }\n }\n if (object.name != null) message.name = String(object.name);\n if (object.initializer) {\n if (!Array.isArray(object.initializer)) throw TypeError('.onnx.GraphProto.initializer: array expected');\n message.initializer = [];\n for (var i = 0; i < object.initializer.length; ++i) {\n if (typeof object.initializer[i] !== 'object')\n throw TypeError('.onnx.GraphProto.initializer: object expected');\n message.initializer[i] = $root.onnx.TensorProto.fromObject(object.initializer[i]);\n }\n }\n if (object.sparseInitializer) {\n if (!Array.isArray(object.sparseInitializer))\n throw TypeError('.onnx.GraphProto.sparseInitializer: array expected');\n message.sparseInitializer = [];\n for (var i = 0; i < object.sparseInitializer.length; ++i) {\n if (typeof object.sparseInitializer[i] !== 'object')\n throw TypeError('.onnx.GraphProto.sparseInitializer: object expected');\n message.sparseInitializer[i] = $root.onnx.SparseTensorProto.fromObject(object.sparseInitializer[i]);\n }\n }\n if (object.docString != null) message.docString = String(object.docString);\n if (object.input) {\n if (!Array.isArray(object.input)) throw TypeError('.onnx.GraphProto.input: array expected');\n message.input = [];\n for (var i = 0; i < object.input.length; ++i) {\n if (typeof object.input[i] !== 'object') throw TypeError('.onnx.GraphProto.input: object expected');\n message.input[i] = $root.onnx.ValueInfoProto.fromObject(object.input[i]);\n }\n }\n if (object.output) {\n if (!Array.isArray(object.output)) throw TypeError('.onnx.GraphProto.output: array expected');\n message.output = [];\n for (var i = 0; i < object.output.length; ++i) {\n if (typeof object.output[i] !== 'object') throw TypeError('.onnx.GraphProto.output: object expected');\n message.output[i] = $root.onnx.ValueInfoProto.fromObject(object.output[i]);\n }\n }\n if (object.valueInfo) {\n if (!Array.isArray(object.valueInfo)) throw TypeError('.onnx.GraphProto.valueInfo: array expected');\n message.valueInfo = [];\n for (var i = 0; i < object.valueInfo.length; ++i) {\n if (typeof object.valueInfo[i] !== 'object') throw TypeError('.onnx.GraphProto.valueInfo: object expected');\n message.valueInfo[i] = $root.onnx.ValueInfoProto.fromObject(object.valueInfo[i]);\n }\n }\n if (object.quantizationAnnotation) {\n if (!Array.isArray(object.quantizationAnnotation))\n throw TypeError('.onnx.GraphProto.quantizationAnnotation: array expected');\n message.quantizationAnnotation = [];\n for (var i = 0; i < object.quantizationAnnotation.length; ++i) {\n if (typeof object.quantizationAnnotation[i] !== 'object')\n throw TypeError('.onnx.GraphProto.quantizationAnnotation: object expected');\n message.quantizationAnnotation[i] = $root.onnx.TensorAnnotation.fromObject(object.quantizationAnnotation[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a GraphProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.GraphProto\n * @static\n * @param {onnx.GraphProto} message GraphProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n GraphProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.node = [];\n object.initializer = [];\n object.input = [];\n object.output = [];\n object.valueInfo = [];\n object.quantizationAnnotation = [];\n object.sparseInitializer = [];\n }\n if (options.defaults) {\n object.name = '';\n object.docString = '';\n }\n if (message.node && message.node.length) {\n object.node = [];\n for (var j = 0; j < message.node.length; ++j)\n object.node[j] = $root.onnx.NodeProto.toObject(message.node[j], options);\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.initializer && message.initializer.length) {\n object.initializer = [];\n for (var j = 0; j < message.initializer.length; ++j)\n object.initializer[j] = $root.onnx.TensorProto.toObject(message.initializer[j], options);\n }\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j)\n object.input[j] = $root.onnx.ValueInfoProto.toObject(message.input[j], options);\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j)\n object.output[j] = $root.onnx.ValueInfoProto.toObject(message.output[j], options);\n }\n if (message.valueInfo && message.valueInfo.length) {\n object.valueInfo = [];\n for (var j = 0; j < message.valueInfo.length; ++j)\n object.valueInfo[j] = $root.onnx.ValueInfoProto.toObject(message.valueInfo[j], options);\n }\n if (message.quantizationAnnotation && message.quantizationAnnotation.length) {\n object.quantizationAnnotation = [];\n for (var j = 0; j < message.quantizationAnnotation.length; ++j)\n object.quantizationAnnotation[j] = $root.onnx.TensorAnnotation.toObject(\n message.quantizationAnnotation[j],\n options,\n );\n }\n if (message.sparseInitializer && message.sparseInitializer.length) {\n object.sparseInitializer = [];\n for (var j = 0; j < message.sparseInitializer.length; ++j)\n object.sparseInitializer[j] = $root.onnx.SparseTensorProto.toObject(message.sparseInitializer[j], options);\n }\n return object;\n };\n\n /**\n * Converts this GraphProto to JSON.\n * @function toJSON\n * @memberof onnx.GraphProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n GraphProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for GraphProto\n * @function getTypeUrl\n * @memberof onnx.GraphProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n GraphProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.GraphProto';\n };\n\n return GraphProto;\n })();\n\n onnx.TensorProto = (function () {\n /**\n * Properties of a TensorProto.\n * @memberof onnx\n * @interface ITensorProto\n * @property {Array.<number|Long>|null} [dims] TensorProto dims\n * @property {number|null} [dataType] TensorProto dataType\n * @property {onnx.TensorProto.ISegment|null} [segment] TensorProto segment\n * @property {Array.<number>|null} [floatData] TensorProto floatData\n * @property {Array.<number>|null} [int32Data] TensorProto int32Data\n * @property {Array.<Uint8Array>|null} [stringData] TensorProto stringData\n * @property {Array.<number|Long>|null} [int64Data] TensorProto int64Data\n * @property {string|null} [name] TensorProto name\n * @property {string|null} [docString] TensorProto docString\n * @property {Uint8Array|null} [rawData] TensorProto rawData\n * @property {Array.<onnx.IStringStringEntryProto>|null} [externalData] TensorProto externalData\n * @property {onnx.TensorProto.DataLocation|null} [dataLocation] TensorProto dataLocation\n * @property {Array.<number>|null} [doubleData] TensorProto doubleData\n * @property {Array.<number|Long>|null} [uint64Data] TensorProto uint64Data\n */\n\n /**\n * Constructs a new TensorProto.\n * @memberof onnx\n * @classdesc Represents a TensorProto.\n * @implements ITensorProto\n * @constructor\n * @param {onnx.ITensorProto=} [properties] Properties to set\n */\n function TensorProto(properties) {\n this.dims = [];\n this.floatData = [];\n this.int32Data = [];\n this.stringData = [];\n this.int64Data = [];\n this.externalData = [];\n this.doubleData = [];\n this.uint64Data = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorProto dims.\n * @member {Array.<number|Long>} dims\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dims = $util.emptyArray;\n\n /**\n * TensorProto dataType.\n * @member {number} dataType\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dataType = 0;\n\n /**\n * TensorProto segment.\n * @member {onnx.TensorProto.ISegment|null|undefined} segment\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.segment = null;\n\n /**\n * TensorProto floatData.\n * @member {Array.<number>} floatData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.floatData = $util.emptyArray;\n\n /**\n * TensorProto int32Data.\n * @member {Array.<number>} int32Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.int32Data = $util.emptyArray;\n\n /**\n * TensorProto stringData.\n * @member {Array.<Uint8Array>} stringData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.stringData = $util.emptyArray;\n\n /**\n * TensorProto int64Data.\n * @member {Array.<number|Long>} int64Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.int64Data = $util.emptyArray;\n\n /**\n * TensorProto name.\n * @member {string} name\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.name = '';\n\n /**\n * TensorProto docString.\n * @member {string} docString\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.docString = '';\n\n /**\n * TensorProto rawData.\n * @member {Uint8Array} rawData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.rawData = $util.newBuffer([]);\n\n /**\n * TensorProto externalData.\n * @member {Array.<onnx.IStringStringEntryProto>} externalData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.externalData = $util.emptyArray;\n\n /**\n * TensorProto dataLocation.\n * @member {onnx.TensorProto.DataLocation} dataLocation\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.dataLocation = 0;\n\n /**\n * TensorProto doubleData.\n * @member {Array.<number>} doubleData\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.doubleData = $util.emptyArray;\n\n /**\n * TensorProto uint64Data.\n * @member {Array.<number|Long>} uint64Data\n * @memberof onnx.TensorProto\n * @instance\n */\n TensorProto.prototype.uint64Data = $util.emptyArray;\n\n /**\n * Creates a new TensorProto instance using the specified properties.\n * @function create\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto=} [properties] Properties to set\n * @returns {onnx.TensorProto} TensorProto instance\n */\n TensorProto.create = function create(properties) {\n return new TensorProto(properties);\n };\n\n /**\n * Encodes the specified TensorProto message. Does not implicitly {@link onnx.TensorProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto} message TensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.dims != null && message.dims.length) {\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork();\n for (var i = 0; i < message.dims.length; ++i) writer.int64(message.dims[i]);\n writer.ldelim();\n }\n if (message.dataType != null && Object.hasOwnProperty.call(message, 'dataType'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.dataType);\n if (message.segment != null && Object.hasOwnProperty.call(message, 'segment'))\n $root.onnx.TensorProto.Segment.encode(\n message.segment,\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n ).ldelim();\n if (message.floatData != null && message.floatData.length) {\n writer.uint32(/* id 4, wireType 2 =*/ 34).fork();\n for (var i = 0; i < message.floatData.length; ++i) writer.float(message.floatData[i]);\n writer.ldelim();\n }\n if (message.int32Data != null && message.int32Data.length) {\n writer.uint32(/* id 5, wireType 2 =*/ 42).fork();\n for (var i = 0; i < message.int32Data.length; ++i) writer.int32(message.int32Data[i]);\n writer.ldelim();\n }\n if (message.stringData != null && message.stringData.length)\n for (var i = 0; i < message.stringData.length; ++i)\n writer.uint32(/* id 6, wireType 2 =*/ 50).bytes(message.stringData[i]);\n if (message.int64Data != null && message.int64Data.length) {\n writer.uint32(/* id 7, wireType 2 =*/ 58).fork();\n for (var i = 0; i < message.int64Data.length; ++i) writer.int64(message.int64Data[i]);\n writer.ldelim();\n }\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 8, wireType 2 =*/ 66).string(message.name);\n if (message.rawData != null && Object.hasOwnProperty.call(message, 'rawData'))\n writer.uint32(/* id 9, wireType 2 =*/ 74).bytes(message.rawData);\n if (message.doubleData != null && message.doubleData.length) {\n writer.uint32(/* id 10, wireType 2 =*/ 82).fork();\n for (var i = 0; i < message.doubleData.length; ++i) writer.double(message.doubleData[i]);\n writer.ldelim();\n }\n if (message.uint64Data != null && message.uint64Data.length) {\n writer.uint32(/* id 11, wireType 2 =*/ 90).fork();\n for (var i = 0; i < message.uint64Data.length; ++i) writer.uint64(message.uint64Data[i]);\n writer.ldelim();\n }\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 12, wireType 2 =*/ 98).string(message.docString);\n if (message.externalData != null && message.externalData.length)\n for (var i = 0; i < message.externalData.length; ++i)\n $root.onnx.StringStringEntryProto.encode(\n message.externalData[i],\n writer.uint32(/* id 13, wireType 2 =*/ 106).fork(),\n ).ldelim();\n if (message.dataLocation != null && Object.hasOwnProperty.call(message, 'dataLocation'))\n writer.uint32(/* id 14, wireType 0 =*/ 112).int32(message.dataLocation);\n return writer;\n };\n\n /**\n * Encodes the specified TensorProto message, length delimited. Does not implicitly {@link onnx.TensorProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.ITensorProto} message TensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorProto} TensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TensorProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dims && message.dims.length)) message.dims = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.dims.push(reader.int64());\n } else message.dims.push(reader.int64());\n break;\n }\n case 2: {\n message.dataType = reader.int32();\n break;\n }\n case 3: {\n message.segment = $root.onnx.TensorProto.Segment.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n if (!(message.floatData && message.floatData.length)) message.floatData = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.floatData.push(reader.float());\n } else message.floatData.push(reader.float());\n break;\n }\n case 5: {\n if (!(message.int32Data && message.int32Data.length)) message.int32Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.int32Data.push(reader.int32());\n } else message.int32Data.push(reader.int32());\n break;\n }\n case 6: {\n if (!(message.stringData && message.stringData.length)) message.stringData = [];\n message.stringData.push(reader.bytes());\n break;\n }\n case 7: {\n if (!(message.int64Data && message.int64Data.length)) message.int64Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.int64Data.push(reader.int64());\n } else message.int64Data.push(reader.int64());\n break;\n }\n case 8: {\n message.name = reader.string();\n break;\n }\n case 12: {\n message.docString = reader.string();\n break;\n }\n case 9: {\n message.rawData = reader.bytes();\n break;\n }\n case 13: {\n if (!(message.externalData && message.externalData.length)) message.externalData = [];\n message.externalData.push($root.onnx.StringStringEntryProto.decode(reader, reader.uint32()));\n break;\n }\n case 14: {\n message.dataLocation = reader.int32();\n break;\n }\n case 10: {\n if (!(message.doubleData && message.doubleData.length)) message.doubleData = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.doubleData.push(reader.double());\n } else message.doubleData.push(reader.double());\n break;\n }\n case 11: {\n if (!(message.uint64Data && message.uint64Data.length)) message.uint64Data = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.uint64Data.push(reader.uint64());\n } else message.uint64Data.push(reader.uint64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorProto} TensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorProto message.\n * @function verify\n * @memberof onnx.TensorProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.dims != null && message.hasOwnProperty('dims')) {\n if (!Array.isArray(message.dims)) return 'dims: array expected';\n for (var i = 0; i < message.dims.length; ++i)\n if (\n !$util.isInteger(message.dims[i]) &&\n !(message.dims[i] && $util.isInteger(message.dims[i].low) && $util.isInteger(message.dims[i].high))\n )\n return 'dims: integer|Long[] expected';\n }\n if (message.dataType != null && message.hasOwnProperty('dataType'))\n if (!$util.isInteger(message.dataType)) return 'dataType: integer expected';\n if (message.segment != null && message.hasOwnProperty('segment')) {\n var error = $root.onnx.TensorProto.Segment.verify(message.segment);\n if (error) return 'segment.' + error;\n }\n if (message.floatData != null && message.hasOwnProperty('floatData')) {\n if (!Array.isArray(message.floatData)) return 'floatData: array expected';\n for (var i = 0; i < message.floatData.length; ++i)\n if (typeof message.floatData[i] !== 'number') return 'floatData: number[] expected';\n }\n if (message.int32Data != null && message.hasOwnProperty('int32Data')) {\n if (!Array.isArray(message.int32Data)) return 'int32Data: array expected';\n for (var i = 0; i < message.int32Data.length; ++i)\n if (!$util.isInteger(message.int32Data[i])) return 'int32Data: integer[] expected';\n }\n if (message.stringData != null && message.hasOwnProperty('stringData')) {\n if (!Array.isArray(message.stringData)) return 'stringData: array expected';\n for (var i = 0; i < message.stringData.length; ++i)\n if (\n !(\n (message.stringData[i] && typeof message.stringData[i].length === 'number') ||\n $util.isString(message.stringData[i])\n )\n )\n return 'stringData: buffer[] expected';\n }\n if (message.int64Data != null && message.hasOwnProperty('int64Data')) {\n if (!Array.isArray(message.int64Data)) return 'int64Data: array expected';\n for (var i = 0; i < message.int64Data.length; ++i)\n if (\n !$util.isInteger(message.int64Data[i]) &&\n !(\n message.int64Data[i] &&\n $util.isInteger(message.int64Data[i].low) &&\n $util.isInteger(message.int64Data[i].high)\n )\n )\n return 'int64Data: integer|Long[] expected';\n }\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n if (message.rawData != null && message.hasOwnProperty('rawData'))\n if (!((message.rawData && typeof message.rawData.length === 'number') || $util.isString(message.rawData)))\n return 'rawData: buffer expected';\n if (message.externalData != null && message.hasOwnProperty('externalData')) {\n if (!Array.isArray(message.externalData)) return 'externalData: array expected';\n for (var i = 0; i < message.externalData.length; ++i) {\n var error = $root.onnx.StringStringEntryProto.verify(message.externalData[i]);\n if (error) return 'externalData.' + error;\n }\n }\n if (message.dataLocation != null && message.hasOwnProperty('dataLocation'))\n switch (message.dataLocation) {\n default:\n return 'dataLocation: enum value expected';\n case 0:\n case 1:\n break;\n }\n if (message.doubleData != null && message.hasOwnProperty('doubleData')) {\n if (!Array.isArray(message.doubleData)) return 'doubleData: array expected';\n for (var i = 0; i < message.doubleData.length; ++i)\n if (typeof message.doubleData[i] !== 'number') return 'doubleData: number[] expected';\n }\n if (message.uint64Data != null && message.hasOwnProperty('uint64Data')) {\n if (!Array.isArray(message.uint64Data)) return 'uint64Data: array expected';\n for (var i = 0; i < message.uint64Data.length; ++i)\n if (\n !$util.isInteger(message.uint64Data[i]) &&\n !(\n message.uint64Data[i] &&\n $util.isInteger(message.uint64Data[i].low) &&\n $util.isInteger(message.uint64Data[i].high)\n )\n )\n return 'uint64Data: integer|Long[] expected';\n }\n return null;\n };\n\n /**\n * Creates a TensorProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TensorProto} TensorProto\n */\n TensorProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorProto) return object;\n var message = new $root.onnx.TensorProto();\n if (object.dims) {\n if (!Array.isArray(object.dims)) throw TypeError('.onnx.TensorProto.dims: array expected');\n message.dims = [];\n for (var i = 0; i < object.dims.length; ++i)\n if ($util.Long) (message.dims[i] = $util.Long.fromValue(object.dims[i])).unsigned = false;\n else if (typeof object.dims[i] === 'string') message.dims[i] = parseInt(object.dims[i], 10);\n else if (typeof object.dims[i] === 'number') message.dims[i] = object.dims[i];\n else if (typeof object.dims[i] === 'object')\n message.dims[i] = new $util.LongBits(object.dims[i].low >>> 0, object.dims[i].high >>> 0).toNumber();\n }\n if (object.dataType != null) message.dataType = object.dataType | 0;\n if (object.segment != null) {\n if (typeof object.segment !== 'object') throw TypeError('.onnx.TensorProto.segment: object expected');\n message.segment = $root.onnx.TensorProto.Segment.fromObject(object.segment);\n }\n if (object.floatData) {\n if (!Array.isArray(object.floatData)) throw TypeError('.onnx.TensorProto.floatData: array expected');\n message.floatData = [];\n for (var i = 0; i < object.floatData.length; ++i) message.floatData[i] = Number(object.floatData[i]);\n }\n if (object.int32Data) {\n if (!Array.isArray(object.int32Data)) throw TypeError('.onnx.TensorProto.int32Data: array expected');\n message.int32Data = [];\n for (var i = 0; i < object.int32Data.length; ++i) message.int32Data[i] = object.int32Data[i] | 0;\n }\n if (object.stringData) {\n if (!Array.isArray(object.stringData)) throw TypeError('.onnx.TensorProto.stringData: array expected');\n message.stringData = [];\n for (var i = 0; i < object.stringData.length; ++i)\n if (typeof object.stringData[i] === 'string')\n $util.base64.decode(\n object.stringData[i],\n (message.stringData[i] = $util.newBuffer($util.base64.length(object.stringData[i]))),\n 0,\n );\n else if (object.stringData[i].length >= 0) message.stringData[i] = object.stringData[i];\n }\n if (object.int64Data) {\n if (!Array.isArray(object.int64Data)) throw TypeError('.onnx.TensorProto.int64Data: array expected');\n message.int64Data = [];\n for (var i = 0; i < object.int64Data.length; ++i)\n if ($util.Long) (message.int64Data[i] = $util.Long.fromValue(object.int64Data[i])).unsigned = false;\n else if (typeof object.int64Data[i] === 'string') message.int64Data[i] = parseInt(object.int64Data[i], 10);\n else if (typeof object.int64Data[i] === 'number') message.int64Data[i] = object.int64Data[i];\n else if (typeof object.int64Data[i] === 'object')\n message.int64Data[i] = new $util.LongBits(\n object.int64Data[i].low >>> 0,\n object.int64Data[i].high >>> 0,\n ).toNumber();\n }\n if (object.name != null) message.name = String(object.name);\n if (object.docString != null) message.docString = String(object.docString);\n if (object.rawData != null)\n if (typeof object.rawData === 'string')\n $util.base64.decode(\n object.rawData,\n (message.rawData = $util.newBuffer($util.base64.length(object.rawData))),\n 0,\n );\n else if (object.rawData.length >= 0) message.rawData = object.rawData;\n if (object.externalData) {\n if (!Array.isArray(object.externalData)) throw TypeError('.onnx.TensorProto.externalData: array expected');\n message.externalData = [];\n for (var i = 0; i < object.externalData.length; ++i) {\n if (typeof object.externalData[i] !== 'object')\n throw TypeError('.onnx.TensorProto.externalData: object expected');\n message.externalData[i] = $root.onnx.StringStringEntryProto.fromObject(object.externalData[i]);\n }\n }\n switch (object.dataLocation) {\n default:\n if (typeof object.dataLocation === 'number') {\n message.dataLocation = object.dataLocation;\n break;\n }\n break;\n case 'DEFAULT':\n case 0:\n message.dataLocation = 0;\n break;\n case 'EXTERNAL':\n case 1:\n message.dataLocation = 1;\n break;\n }\n if (object.doubleData) {\n if (!Array.isArray(object.doubleData)) throw TypeError('.onnx.TensorProto.doubleData: array expected');\n message.doubleData = [];\n for (var i = 0; i < object.doubleData.length; ++i) message.doubleData[i] = Number(object.doubleData[i]);\n }\n if (object.uint64Data) {\n if (!Array.isArray(object.uint64Data)) throw TypeError('.onnx.TensorProto.uint64Data: array expected');\n message.uint64Data = [];\n for (var i = 0; i < object.uint64Data.length; ++i)\n if ($util.Long) (message.uint64Data[i] = $util.Long.fromValue(object.uint64Data[i])).unsigned = true;\n else if (typeof object.uint64Data[i] === 'string') message.uint64Data[i] = parseInt(object.uint64Data[i], 10);\n else if (typeof object.uint64Data[i] === 'number') message.uint64Data[i] = object.uint64Data[i];\n else if (typeof object.uint64Data[i] === 'object')\n message.uint64Data[i] = new $util.LongBits(\n object.uint64Data[i].low >>> 0,\n object.uint64Data[i].high >>> 0,\n ).toNumber(true);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorProto\n * @static\n * @param {onnx.TensorProto} message TensorProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n TensorProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.dims = [];\n object.floatData = [];\n object.int32Data = [];\n object.stringData = [];\n object.int64Data = [];\n object.doubleData = [];\n object.uint64Data = [];\n object.externalData = [];\n }\n if (options.defaults) {\n object.dataType = 0;\n object.segment = null;\n object.name = '';\n if (options.bytes === String) object.rawData = '';\n else {\n object.rawData = [];\n if (options.bytes !== Array) object.rawData = $util.newBuffer(object.rawData);\n }\n object.docString = '';\n object.dataLocation = options.enums === String ? 'DEFAULT' : 0;\n }\n if (message.dims && message.dims.length) {\n object.dims = [];\n for (var j = 0; j < message.dims.length; ++j)\n if (typeof message.dims[j] === 'number')\n object.dims[j] = options.longs === String ? String(message.dims[j]) : message.dims[j];\n else\n object.dims[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.dims[j])\n : options.longs === Number\n ? new $util.LongBits(message.dims[j].low >>> 0, message.dims[j].high >>> 0).toNumber()\n : message.dims[j];\n }\n if (message.dataType != null && message.hasOwnProperty('dataType')) object.dataType = message.dataType;\n if (message.segment != null && message.hasOwnProperty('segment'))\n object.segment = $root.onnx.TensorProto.Segment.toObject(message.segment, options);\n if (message.floatData && message.floatData.length) {\n object.floatData = [];\n for (var j = 0; j < message.floatData.length; ++j)\n object.floatData[j] =\n options.json && !isFinite(message.floatData[j]) ? String(message.floatData[j]) : message.floatData[j];\n }\n if (message.int32Data && message.int32Data.length) {\n object.int32Data = [];\n for (var j = 0; j < message.int32Data.length; ++j) object.int32Data[j] = message.int32Data[j];\n }\n if (message.stringData && message.stringData.length) {\n object.stringData = [];\n for (var j = 0; j < message.stringData.length; ++j)\n object.stringData[j] =\n options.bytes === String\n ? $util.base64.encode(message.stringData[j], 0, message.stringData[j].length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.stringData[j])\n : message.stringData[j];\n }\n if (message.int64Data && message.int64Data.length) {\n object.int64Data = [];\n for (var j = 0; j < message.int64Data.length; ++j)\n if (typeof message.int64Data[j] === 'number')\n object.int64Data[j] = options.longs === String ? String(message.int64Data[j]) : message.int64Data[j];\n else\n object.int64Data[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.int64Data[j])\n : options.longs === Number\n ? new $util.LongBits(message.int64Data[j].low >>> 0, message.int64Data[j].high >>> 0).toNumber()\n : message.int64Data[j];\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.rawData != null && message.hasOwnProperty('rawData'))\n object.rawData =\n options.bytes === String\n ? $util.base64.encode(message.rawData, 0, message.rawData.length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.rawData)\n : message.rawData;\n if (message.doubleData && message.doubleData.length) {\n object.doubleData = [];\n for (var j = 0; j < message.doubleData.length; ++j)\n object.doubleData[j] =\n options.json && !isFinite(message.doubleData[j]) ? String(message.doubleData[j]) : message.doubleData[j];\n }\n if (message.uint64Data && message.uint64Data.length) {\n object.uint64Data = [];\n for (var j = 0; j < message.uint64Data.length; ++j)\n if (typeof message.uint64Data[j] === 'number')\n object.uint64Data[j] = options.longs === String ? String(message.uint64Data[j]) : message.uint64Data[j];\n else\n object.uint64Data[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.uint64Data[j])\n : options.longs === Number\n ? new $util.LongBits(message.uint64Data[j].low >>> 0, message.uint64Data[j].high >>> 0).toNumber(true)\n : message.uint64Data[j];\n }\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.externalData && message.externalData.length) {\n object.externalData = [];\n for (var j = 0; j < message.externalData.length; ++j)\n object.externalData[j] = $root.onnx.StringStringEntryProto.toObject(message.externalData[j], options);\n }\n if (message.dataLocation != null && message.hasOwnProperty('dataLocation'))\n object.dataLocation =\n options.enums === String\n ? $root.onnx.TensorProto.DataLocation[message.dataLocation] === undefined\n ? message.dataLocation\n : $root.onnx.TensorProto.DataLocation[message.dataLocation]\n : message.dataLocation;\n return object;\n };\n\n /**\n * Converts this TensorProto to JSON.\n * @function toJSON\n * @memberof onnx.TensorProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n TensorProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorProto\n * @function getTypeUrl\n * @memberof onnx.TensorProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TensorProto';\n };\n\n /**\n * DataType enum.\n * @name onnx.TensorProto.DataType\n * @enum {number}\n * @property {number} UNDEFINED=0 UNDEFINED value\n * @property {number} FLOAT=1 FLOAT value\n * @property {number} UINT8=2 UINT8 value\n * @property {number} INT8=3 INT8 value\n * @property {number} UINT16=4 UINT16 value\n * @property {number} INT16=5 INT16 value\n * @property {number} INT32=6 INT32 value\n * @property {number} INT64=7 INT64 value\n * @property {number} STRING=8 STRING value\n * @property {number} BOOL=9 BOOL value\n * @property {number} FLOAT16=10 FLOAT16 value\n * @property {number} DOUBLE=11 DOUBLE value\n * @property {number} UINT32=12 UINT32 value\n * @property {number} UINT64=13 UINT64 value\n * @property {number} COMPLEX64=14 COMPLEX64 value\n * @property {number} COMPLEX128=15 COMPLEX128 value\n * @property {number} BFLOAT16=16 BFLOAT16 value\n * @property {number} FLOAT8E4M3FN=17 FLOAT8E4M3FN value\n * @property {number} FLOAT8E4M3FNUZ=18 FLOAT8E4M3FNUZ value\n * @property {number} FLOAT8E5M2=19 FLOAT8E5M2 value\n * @property {number} FLOAT8E5M2FNUZ=20 FLOAT8E5M2FNUZ value\n */\n TensorProto.DataType = (function () {\n var valuesById = {},\n values = Object.create(valuesById);\n values[(valuesById[0] = 'UNDEFINED')] = 0;\n values[(valuesById[1] = 'FLOAT')] = 1;\n values[(valuesById[2] = 'UINT8')] = 2;\n values[(valuesById[3] = 'INT8')] = 3;\n values[(valuesById[4] = 'UINT16')] = 4;\n values[(valuesById[5] = 'INT16')] = 5;\n values[(valuesById[6] = 'INT32')] = 6;\n values[(valuesById[7] = 'INT64')] = 7;\n values[(valuesById[8] = 'STRING')] = 8;\n values[(valuesById[9] = 'BOOL')] = 9;\n values[(valuesById[10] = 'FLOAT16')] = 10;\n values[(valuesById[11] = 'DOUBLE')] = 11;\n values[(valuesById[12] = 'UINT32')] = 12;\n values[(valuesById[13] = 'UINT64')] = 13;\n values[(valuesById[14] = 'COMPLEX64')] = 14;\n values[(valuesById[15] = 'COMPLEX128')] = 15;\n values[(valuesById[16] = 'BFLOAT16')] = 16;\n values[(valuesById[17] = 'FLOAT8E4M3FN')] = 17;\n values[(valuesById[18] = 'FLOAT8E4M3FNUZ')] = 18;\n values[(valuesById[19] = 'FLOAT8E5M2')] = 19;\n values[(valuesById[20] = 'FLOAT8E5M2FNUZ')] = 20;\n return values;\n })();\n\n TensorProto.Segment = (function () {\n /**\n * Properties of a Segment.\n * @memberof onnx.TensorProto\n * @interface ISegment\n * @property {number|Long|null} [begin] Segment begin\n * @property {number|Long|null} [end] Segment end\n */\n\n /**\n * Constructs a new Segment.\n * @memberof onnx.TensorProto\n * @classdesc Represents a Segment.\n * @implements ISegment\n * @constructor\n * @param {onnx.TensorProto.ISegment=} [properties] Properties to set\n */\n function Segment(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Segment begin.\n * @member {number|Long} begin\n * @memberof onnx.TensorProto.Segment\n * @instance\n */\n Segment.prototype.begin = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * Segment end.\n * @member {number|Long} end\n * @memberof onnx.TensorProto.Segment\n * @instance\n */\n Segment.prototype.end = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * Creates a new Segment instance using the specified properties.\n * @function create\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment=} [properties] Properties to set\n * @returns {onnx.TensorProto.Segment} Segment instance\n */\n Segment.create = function create(properties) {\n return new Segment(properties);\n };\n\n /**\n * Encodes the specified Segment message. Does not implicitly {@link onnx.TensorProto.Segment.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment} message Segment message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Segment.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.begin != null && Object.hasOwnProperty.call(message, 'begin'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.begin);\n if (message.end != null && Object.hasOwnProperty.call(message, 'end'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.end);\n return writer;\n };\n\n /**\n * Encodes the specified Segment message, length delimited. Does not implicitly {@link onnx.TensorProto.Segment.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.ISegment} message Segment message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Segment.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Segment message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorProto.Segment} Segment\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Segment.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TensorProto.Segment();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.begin = reader.int64();\n break;\n }\n case 2: {\n message.end = reader.int64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Segment message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorProto.Segment} Segment\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Segment.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Segment message.\n * @function verify\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Segment.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.begin != null && message.hasOwnProperty('begin'))\n if (\n !$util.isInteger(message.begin) &&\n !(message.begin && $util.isInteger(message.begin.low) && $util.isInteger(message.begin.high))\n )\n return 'begin: integer|Long expected';\n if (message.end != null && message.hasOwnProperty('end'))\n if (\n !$util.isInteger(message.end) &&\n !(message.end && $util.isInteger(message.end.low) && $util.isInteger(message.end.high))\n )\n return 'end: integer|Long expected';\n return null;\n };\n\n /**\n * Creates a Segment message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TensorProto.Segment} Segment\n */\n Segment.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorProto.Segment) return object;\n var message = new $root.onnx.TensorProto.Segment();\n if (object.begin != null)\n if ($util.Long) (message.begin = $util.Long.fromValue(object.begin)).unsigned = false;\n else if (typeof object.begin === 'string') message.begin = parseInt(object.begin, 10);\n else if (typeof object.begin === 'number') message.begin = object.begin;\n else if (typeof object.begin === 'object')\n message.begin = new $util.LongBits(object.begin.low >>> 0, object.begin.high >>> 0).toNumber();\n if (object.end != null)\n if ($util.Long) (message.end = $util.Long.fromValue(object.end)).unsigned = false;\n else if (typeof object.end === 'string') message.end = parseInt(object.end, 10);\n else if (typeof object.end === 'number') message.end = object.end;\n else if (typeof object.end === 'object')\n message.end = new $util.LongBits(object.end.low >>> 0, object.end.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from a Segment message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {onnx.TensorProto.Segment} message Segment\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Segment.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.begin =\n options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.begin = options.longs === String ? '0' : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.end = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.end = options.longs === String ? '0' : 0;\n }\n if (message.begin != null && message.hasOwnProperty('begin'))\n if (typeof message.begin === 'number')\n object.begin = options.longs === String ? String(message.begin) : message.begin;\n else\n object.begin =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.begin)\n : options.longs === Number\n ? new $util.LongBits(message.begin.low >>> 0, message.begin.high >>> 0).toNumber()\n : message.begin;\n if (message.end != null && message.hasOwnProperty('end'))\n if (typeof message.end === 'number')\n object.end = options.longs === String ? String(message.end) : message.end;\n else\n object.end =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.end)\n : options.longs === Number\n ? new $util.LongBits(message.end.low >>> 0, message.end.high >>> 0).toNumber()\n : message.end;\n return object;\n };\n\n /**\n * Converts this Segment to JSON.\n * @function toJSON\n * @memberof onnx.TensorProto.Segment\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Segment.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Segment\n * @function getTypeUrl\n * @memberof onnx.TensorProto.Segment\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Segment.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TensorProto.Segment';\n };\n\n return Segment;\n })();\n\n /**\n * DataLocation enum.\n * @name onnx.TensorProto.DataLocation\n * @enum {number}\n * @property {number} DEFAULT=0 DEFAULT value\n * @property {number} EXTERNAL=1 EXTERNAL value\n */\n TensorProto.DataLocation = (function () {\n var valuesById = {},\n values = Object.create(valuesById);\n values[(valuesById[0] = 'DEFAULT')] = 0;\n values[(valuesById[1] = 'EXTERNAL')] = 1;\n return values;\n })();\n\n return TensorProto;\n })();\n\n onnx.SparseTensorProto = (function () {\n /**\n * Properties of a SparseTensorProto.\n * @memberof onnx\n * @interface ISparseTensorProto\n * @property {onnx.ITensorProto|null} [values] SparseTensorProto values\n * @property {onnx.ITensorProto|null} [indices] SparseTensorProto indices\n * @property {Array.<number|Long>|null} [dims] SparseTensorProto dims\n */\n\n /**\n * Constructs a new SparseTensorProto.\n * @memberof onnx\n * @classdesc Represents a SparseTensorProto.\n * @implements ISparseTensorProto\n * @constructor\n * @param {onnx.ISparseTensorProto=} [properties] Properties to set\n */\n function SparseTensorProto(properties) {\n this.dims = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SparseTensorProto values.\n * @member {onnx.ITensorProto|null|undefined} values\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.values = null;\n\n /**\n * SparseTensorProto indices.\n * @member {onnx.ITensorProto|null|undefined} indices\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.indices = null;\n\n /**\n * SparseTensorProto dims.\n * @member {Array.<number|Long>} dims\n * @memberof onnx.SparseTensorProto\n * @instance\n */\n SparseTensorProto.prototype.dims = $util.emptyArray;\n\n /**\n * Creates a new SparseTensorProto instance using the specified properties.\n * @function create\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto=} [properties] Properties to set\n * @returns {onnx.SparseTensorProto} SparseTensorProto instance\n */\n SparseTensorProto.create = function create(properties) {\n return new SparseTensorProto(properties);\n };\n\n /**\n * Encodes the specified SparseTensorProto message. Does not implicitly {@link onnx.SparseTensorProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto} message SparseTensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensorProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.values != null && Object.hasOwnProperty.call(message, 'values'))\n $root.onnx.TensorProto.encode(message.values, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n if (message.indices != null && Object.hasOwnProperty.call(message, 'indices'))\n $root.onnx.TensorProto.encode(message.indices, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n if (message.dims != null && message.dims.length) {\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork();\n for (var i = 0; i < message.dims.length; ++i) writer.int64(message.dims[i]);\n writer.ldelim();\n }\n return writer;\n };\n\n /**\n * Encodes the specified SparseTensorProto message, length delimited. Does not implicitly {@link onnx.SparseTensorProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.ISparseTensorProto} message SparseTensorProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensorProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SparseTensorProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensorProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.SparseTensorProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.values = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.indices = $root.onnx.TensorProto.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n if (!(message.dims && message.dims.length)) message.dims = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2) message.dims.push(reader.int64());\n } else message.dims.push(reader.int64());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SparseTensorProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensorProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SparseTensorProto message.\n * @function verify\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SparseTensorProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.values != null && message.hasOwnProperty('values')) {\n var error = $root.onnx.TensorProto.verify(message.values);\n if (error) return 'values.' + error;\n }\n if (message.indices != null && message.hasOwnProperty('indices')) {\n var error = $root.onnx.TensorProto.verify(message.indices);\n if (error) return 'indices.' + error;\n }\n if (message.dims != null && message.hasOwnProperty('dims')) {\n if (!Array.isArray(message.dims)) return 'dims: array expected';\n for (var i = 0; i < message.dims.length; ++i)\n if (\n !$util.isInteger(message.dims[i]) &&\n !(message.dims[i] && $util.isInteger(message.dims[i].low) && $util.isInteger(message.dims[i].high))\n )\n return 'dims: integer|Long[] expected';\n }\n return null;\n };\n\n /**\n * Creates a SparseTensorProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.SparseTensorProto} SparseTensorProto\n */\n SparseTensorProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.SparseTensorProto) return object;\n var message = new $root.onnx.SparseTensorProto();\n if (object.values != null) {\n if (typeof object.values !== 'object') throw TypeError('.onnx.SparseTensorProto.values: object expected');\n message.values = $root.onnx.TensorProto.fromObject(object.values);\n }\n if (object.indices != null) {\n if (typeof object.indices !== 'object') throw TypeError('.onnx.SparseTensorProto.indices: object expected');\n message.indices = $root.onnx.TensorProto.fromObject(object.indices);\n }\n if (object.dims) {\n if (!Array.isArray(object.dims)) throw TypeError('.onnx.SparseTensorProto.dims: array expected');\n message.dims = [];\n for (var i = 0; i < object.dims.length; ++i)\n if ($util.Long) (message.dims[i] = $util.Long.fromValue(object.dims[i])).unsigned = false;\n else if (typeof object.dims[i] === 'string') message.dims[i] = parseInt(object.dims[i], 10);\n else if (typeof object.dims[i] === 'number') message.dims[i] = object.dims[i];\n else if (typeof object.dims[i] === 'object')\n message.dims[i] = new $util.LongBits(object.dims[i].low >>> 0, object.dims[i].high >>> 0).toNumber();\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SparseTensorProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {onnx.SparseTensorProto} message SparseTensorProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n SparseTensorProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) object.dims = [];\n if (options.defaults) {\n object.values = null;\n object.indices = null;\n }\n if (message.values != null && message.hasOwnProperty('values'))\n object.values = $root.onnx.TensorProto.toObject(message.values, options);\n if (message.indices != null && message.hasOwnProperty('indices'))\n object.indices = $root.onnx.TensorProto.toObject(message.indices, options);\n if (message.dims && message.dims.length) {\n object.dims = [];\n for (var j = 0; j < message.dims.length; ++j)\n if (typeof message.dims[j] === 'number')\n object.dims[j] = options.longs === String ? String(message.dims[j]) : message.dims[j];\n else\n object.dims[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.dims[j])\n : options.longs === Number\n ? new $util.LongBits(message.dims[j].low >>> 0, message.dims[j].high >>> 0).toNumber()\n : message.dims[j];\n }\n return object;\n };\n\n /**\n * Converts this SparseTensorProto to JSON.\n * @function toJSON\n * @memberof onnx.SparseTensorProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n SparseTensorProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SparseTensorProto\n * @function getTypeUrl\n * @memberof onnx.SparseTensorProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SparseTensorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.SparseTensorProto';\n };\n\n return SparseTensorProto;\n })();\n\n onnx.TensorShapeProto = (function () {\n /**\n * Properties of a TensorShapeProto.\n * @memberof onnx\n * @interface ITensorShapeProto\n * @property {Array.<onnx.TensorShapeProto.IDimension>|null} [dim] TensorShapeProto dim\n */\n\n /**\n * Constructs a new TensorShapeProto.\n * @memberof onnx\n * @classdesc Represents a TensorShapeProto.\n * @implements ITensorShapeProto\n * @constructor\n * @param {onnx.ITensorShapeProto=} [properties] Properties to set\n */\n function TensorShapeProto(properties) {\n this.dim = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TensorShapeProto dim.\n * @member {Array.<onnx.TensorShapeProto.IDimension>} dim\n * @memberof onnx.TensorShapeProto\n * @instance\n */\n TensorShapeProto.prototype.dim = $util.emptyArray;\n\n /**\n * Creates a new TensorShapeProto instance using the specified properties.\n * @function create\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto=} [properties] Properties to set\n * @returns {onnx.TensorShapeProto} TensorShapeProto instance\n */\n TensorShapeProto.create = function create(properties) {\n return new TensorShapeProto(properties);\n };\n\n /**\n * Encodes the specified TensorShapeProto message. Does not implicitly {@link onnx.TensorShapeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto} message TensorShapeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorShapeProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.dim != null && message.dim.length)\n for (var i = 0; i < message.dim.length; ++i)\n $root.onnx.TensorShapeProto.Dimension.encode(\n message.dim[i],\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TensorShapeProto message, length delimited. Does not implicitly {@link onnx.TensorShapeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.ITensorShapeProto} message TensorShapeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TensorShapeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TensorShapeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorShapeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TensorShapeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.dim && message.dim.length)) message.dim = [];\n message.dim.push($root.onnx.TensorShapeProto.Dimension.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TensorShapeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TensorShapeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TensorShapeProto message.\n * @function verify\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TensorShapeProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.dim != null && message.hasOwnProperty('dim')) {\n if (!Array.isArray(message.dim)) return 'dim: array expected';\n for (var i = 0; i < message.dim.length; ++i) {\n var error = $root.onnx.TensorShapeProto.Dimension.verify(message.dim[i]);\n if (error) return 'dim.' + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a TensorShapeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TensorShapeProto} TensorShapeProto\n */\n TensorShapeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorShapeProto) return object;\n var message = new $root.onnx.TensorShapeProto();\n if (object.dim) {\n if (!Array.isArray(object.dim)) throw TypeError('.onnx.TensorShapeProto.dim: array expected');\n message.dim = [];\n for (var i = 0; i < object.dim.length; ++i) {\n if (typeof object.dim[i] !== 'object') throw TypeError('.onnx.TensorShapeProto.dim: object expected');\n message.dim[i] = $root.onnx.TensorShapeProto.Dimension.fromObject(object.dim[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a TensorShapeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {onnx.TensorShapeProto} message TensorShapeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n TensorShapeProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) object.dim = [];\n if (message.dim && message.dim.length) {\n object.dim = [];\n for (var j = 0; j < message.dim.length; ++j)\n object.dim[j] = $root.onnx.TensorShapeProto.Dimension.toObject(message.dim[j], options);\n }\n return object;\n };\n\n /**\n * Converts this TensorShapeProto to JSON.\n * @function toJSON\n * @memberof onnx.TensorShapeProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n TensorShapeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TensorShapeProto\n * @function getTypeUrl\n * @memberof onnx.TensorShapeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TensorShapeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TensorShapeProto';\n };\n\n TensorShapeProto.Dimension = (function () {\n /**\n * Properties of a Dimension.\n * @memberof onnx.TensorShapeProto\n * @interface IDimension\n * @property {number|Long|null} [dimValue] Dimension dimValue\n * @property {string|null} [dimParam] Dimension dimParam\n * @property {string|null} [denotation] Dimension denotation\n */\n\n /**\n * Constructs a new Dimension.\n * @memberof onnx.TensorShapeProto\n * @classdesc Represents a Dimension.\n * @implements IDimension\n * @constructor\n * @param {onnx.TensorShapeProto.IDimension=} [properties] Properties to set\n */\n function Dimension(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Dimension dimValue.\n * @member {number|Long|null|undefined} dimValue\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.dimValue = null;\n\n /**\n * Dimension dimParam.\n * @member {string|null|undefined} dimParam\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.dimParam = null;\n\n /**\n * Dimension denotation.\n * @member {string} denotation\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Dimension.prototype.denotation = '';\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Dimension value.\n * @member {\"dimValue\"|\"dimParam\"|undefined} value\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n */\n Object.defineProperty(Dimension.prototype, 'value', {\n get: $util.oneOfGetter(($oneOfFields = ['dimValue', 'dimParam'])),\n set: $util.oneOfSetter($oneOfFields),\n });\n\n /**\n * Creates a new Dimension instance using the specified properties.\n * @function create\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension=} [properties] Properties to set\n * @returns {onnx.TensorShapeProto.Dimension} Dimension instance\n */\n Dimension.create = function create(properties) {\n return new Dimension(properties);\n };\n\n /**\n * Encodes the specified Dimension message. Does not implicitly {@link onnx.TensorShapeProto.Dimension.verify|verify} messages.\n * @function encode\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension} message Dimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Dimension.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.dimValue != null && Object.hasOwnProperty.call(message, 'dimValue'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.dimValue);\n if (message.dimParam != null && Object.hasOwnProperty.call(message, 'dimParam'))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.dimParam);\n if (message.denotation != null && Object.hasOwnProperty.call(message, 'denotation'))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.denotation);\n return writer;\n };\n\n /**\n * Encodes the specified Dimension message, length delimited. Does not implicitly {@link onnx.TensorShapeProto.Dimension.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.IDimension} message Dimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Dimension.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Dimension message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Dimension.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TensorShapeProto.Dimension();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.dimValue = reader.int64();\n break;\n }\n case 2: {\n message.dimParam = reader.string();\n break;\n }\n case 3: {\n message.denotation = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Dimension message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Dimension.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Dimension message.\n * @function verify\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Dimension.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n var properties = {};\n if (message.dimValue != null && message.hasOwnProperty('dimValue')) {\n properties.value = 1;\n if (\n !$util.isInteger(message.dimValue) &&\n !(message.dimValue && $util.isInteger(message.dimValue.low) && $util.isInteger(message.dimValue.high))\n )\n return 'dimValue: integer|Long expected';\n }\n if (message.dimParam != null && message.hasOwnProperty('dimParam')) {\n if (properties.value === 1) return 'value: multiple values';\n properties.value = 1;\n if (!$util.isString(message.dimParam)) return 'dimParam: string expected';\n }\n if (message.denotation != null && message.hasOwnProperty('denotation'))\n if (!$util.isString(message.denotation)) return 'denotation: string expected';\n return null;\n };\n\n /**\n * Creates a Dimension message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TensorShapeProto.Dimension} Dimension\n */\n Dimension.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TensorShapeProto.Dimension) return object;\n var message = new $root.onnx.TensorShapeProto.Dimension();\n if (object.dimValue != null)\n if ($util.Long) (message.dimValue = $util.Long.fromValue(object.dimValue)).unsigned = false;\n else if (typeof object.dimValue === 'string') message.dimValue = parseInt(object.dimValue, 10);\n else if (typeof object.dimValue === 'number') message.dimValue = object.dimValue;\n else if (typeof object.dimValue === 'object')\n message.dimValue = new $util.LongBits(object.dimValue.low >>> 0, object.dimValue.high >>> 0).toNumber();\n if (object.dimParam != null) message.dimParam = String(object.dimParam);\n if (object.denotation != null) message.denotation = String(object.denotation);\n return message;\n };\n\n /**\n * Creates a plain object from a Dimension message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {onnx.TensorShapeProto.Dimension} message Dimension\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Dimension.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) object.denotation = '';\n if (message.dimValue != null && message.hasOwnProperty('dimValue')) {\n if (typeof message.dimValue === 'number')\n object.dimValue = options.longs === String ? String(message.dimValue) : message.dimValue;\n else\n object.dimValue =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.dimValue)\n : options.longs === Number\n ? new $util.LongBits(message.dimValue.low >>> 0, message.dimValue.high >>> 0).toNumber()\n : message.dimValue;\n if (options.oneofs) object.value = 'dimValue';\n }\n if (message.dimParam != null && message.hasOwnProperty('dimParam')) {\n object.dimParam = message.dimParam;\n if (options.oneofs) object.value = 'dimParam';\n }\n if (message.denotation != null && message.hasOwnProperty('denotation')) object.denotation = message.denotation;\n return object;\n };\n\n /**\n * Converts this Dimension to JSON.\n * @function toJSON\n * @memberof onnx.TensorShapeProto.Dimension\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Dimension.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Dimension\n * @function getTypeUrl\n * @memberof onnx.TensorShapeProto.Dimension\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Dimension.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TensorShapeProto.Dimension';\n };\n\n return Dimension;\n })();\n\n return TensorShapeProto;\n })();\n\n onnx.TypeProto = (function () {\n /**\n * Properties of a TypeProto.\n * @memberof onnx\n * @interface ITypeProto\n * @property {onnx.TypeProto.ITensor|null} [tensorType] TypeProto tensorType\n * @property {onnx.TypeProto.ISequence|null} [sequenceType] TypeProto sequenceType\n * @property {onnx.TypeProto.IMap|null} [mapType] TypeProto mapType\n * @property {onnx.TypeProto.IOptional|null} [optionalType] TypeProto optionalType\n * @property {onnx.TypeProto.ISparseTensor|null} [sparseTensorType] TypeProto sparseTensorType\n * @property {string|null} [denotation] TypeProto denotation\n */\n\n /**\n * Constructs a new TypeProto.\n * @memberof onnx\n * @classdesc Represents a TypeProto.\n * @implements ITypeProto\n * @constructor\n * @param {onnx.ITypeProto=} [properties] Properties to set\n */\n function TypeProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * TypeProto tensorType.\n * @member {onnx.TypeProto.ITensor|null|undefined} tensorType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.tensorType = null;\n\n /**\n * TypeProto sequenceType.\n * @member {onnx.TypeProto.ISequence|null|undefined} sequenceType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.sequenceType = null;\n\n /**\n * TypeProto mapType.\n * @member {onnx.TypeProto.IMap|null|undefined} mapType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.mapType = null;\n\n /**\n * TypeProto optionalType.\n * @member {onnx.TypeProto.IOptional|null|undefined} optionalType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.optionalType = null;\n\n /**\n * TypeProto sparseTensorType.\n * @member {onnx.TypeProto.ISparseTensor|null|undefined} sparseTensorType\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.sparseTensorType = null;\n\n /**\n * TypeProto denotation.\n * @member {string} denotation\n * @memberof onnx.TypeProto\n * @instance\n */\n TypeProto.prototype.denotation = '';\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * TypeProto value.\n * @member {\"tensorType\"|\"sequenceType\"|\"mapType\"|\"optionalType\"|\"sparseTensorType\"|undefined} value\n * @memberof onnx.TypeProto\n * @instance\n */\n Object.defineProperty(TypeProto.prototype, 'value', {\n get: $util.oneOfGetter(\n ($oneOfFields = ['tensorType', 'sequenceType', 'mapType', 'optionalType', 'sparseTensorType']),\n ),\n set: $util.oneOfSetter($oneOfFields),\n });\n\n /**\n * Creates a new TypeProto instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto=} [properties] Properties to set\n * @returns {onnx.TypeProto} TypeProto instance\n */\n TypeProto.create = function create(properties) {\n return new TypeProto(properties);\n };\n\n /**\n * Encodes the specified TypeProto message. Does not implicitly {@link onnx.TypeProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto} message TypeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TypeProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.tensorType != null && Object.hasOwnProperty.call(message, 'tensorType'))\n $root.onnx.TypeProto.Tensor.encode(\n message.tensorType,\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim();\n if (message.sequenceType != null && Object.hasOwnProperty.call(message, 'sequenceType'))\n $root.onnx.TypeProto.Sequence.encode(\n message.sequenceType,\n writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n ).ldelim();\n if (message.mapType != null && Object.hasOwnProperty.call(message, 'mapType'))\n $root.onnx.TypeProto.Map.encode(message.mapType, writer.uint32(/* id 5, wireType 2 =*/ 42).fork()).ldelim();\n if (message.denotation != null && Object.hasOwnProperty.call(message, 'denotation'))\n writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.denotation);\n if (message.sparseTensorType != null && Object.hasOwnProperty.call(message, 'sparseTensorType'))\n $root.onnx.TypeProto.SparseTensor.encode(\n message.sparseTensorType,\n writer.uint32(/* id 8, wireType 2 =*/ 66).fork(),\n ).ldelim();\n if (message.optionalType != null && Object.hasOwnProperty.call(message, 'optionalType'))\n $root.onnx.TypeProto.Optional.encode(\n message.optionalType,\n writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified TypeProto message, length delimited. Does not implicitly {@link onnx.TypeProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.ITypeProto} message TypeProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n TypeProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a TypeProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto} TypeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TypeProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.tensorType = $root.onnx.TypeProto.Tensor.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n message.sequenceType = $root.onnx.TypeProto.Sequence.decode(reader, reader.uint32());\n break;\n }\n case 5: {\n message.mapType = $root.onnx.TypeProto.Map.decode(reader, reader.uint32());\n break;\n }\n case 9: {\n message.optionalType = $root.onnx.TypeProto.Optional.decode(reader, reader.uint32());\n break;\n }\n case 8: {\n message.sparseTensorType = $root.onnx.TypeProto.SparseTensor.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.denotation = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a TypeProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto} TypeProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n TypeProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a TypeProto message.\n * @function verify\n * @memberof onnx.TypeProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n TypeProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n var properties = {};\n if (message.tensorType != null && message.hasOwnProperty('tensorType')) {\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Tensor.verify(message.tensorType);\n if (error) return 'tensorType.' + error;\n }\n }\n if (message.sequenceType != null && message.hasOwnProperty('sequenceType')) {\n if (properties.value === 1) return 'value: multiple values';\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Sequence.verify(message.sequenceType);\n if (error) return 'sequenceType.' + error;\n }\n }\n if (message.mapType != null && message.hasOwnProperty('mapType')) {\n if (properties.value === 1) return 'value: multiple values';\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Map.verify(message.mapType);\n if (error) return 'mapType.' + error;\n }\n }\n if (message.optionalType != null && message.hasOwnProperty('optionalType')) {\n if (properties.value === 1) return 'value: multiple values';\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.Optional.verify(message.optionalType);\n if (error) return 'optionalType.' + error;\n }\n }\n if (message.sparseTensorType != null && message.hasOwnProperty('sparseTensorType')) {\n if (properties.value === 1) return 'value: multiple values';\n properties.value = 1;\n {\n var error = $root.onnx.TypeProto.SparseTensor.verify(message.sparseTensorType);\n if (error) return 'sparseTensorType.' + error;\n }\n }\n if (message.denotation != null && message.hasOwnProperty('denotation'))\n if (!$util.isString(message.denotation)) return 'denotation: string expected';\n return null;\n };\n\n /**\n * Creates a TypeProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto} TypeProto\n */\n TypeProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto) return object;\n var message = new $root.onnx.TypeProto();\n if (object.tensorType != null) {\n if (typeof object.tensorType !== 'object') throw TypeError('.onnx.TypeProto.tensorType: object expected');\n message.tensorType = $root.onnx.TypeProto.Tensor.fromObject(object.tensorType);\n }\n if (object.sequenceType != null) {\n if (typeof object.sequenceType !== 'object') throw TypeError('.onnx.TypeProto.sequenceType: object expected');\n message.sequenceType = $root.onnx.TypeProto.Sequence.fromObject(object.sequenceType);\n }\n if (object.mapType != null) {\n if (typeof object.mapType !== 'object') throw TypeError('.onnx.TypeProto.mapType: object expected');\n message.mapType = $root.onnx.TypeProto.Map.fromObject(object.mapType);\n }\n if (object.optionalType != null) {\n if (typeof object.optionalType !== 'object') throw TypeError('.onnx.TypeProto.optionalType: object expected');\n message.optionalType = $root.onnx.TypeProto.Optional.fromObject(object.optionalType);\n }\n if (object.sparseTensorType != null) {\n if (typeof object.sparseTensorType !== 'object')\n throw TypeError('.onnx.TypeProto.sparseTensorType: object expected');\n message.sparseTensorType = $root.onnx.TypeProto.SparseTensor.fromObject(object.sparseTensorType);\n }\n if (object.denotation != null) message.denotation = String(object.denotation);\n return message;\n };\n\n /**\n * Creates a plain object from a TypeProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto\n * @static\n * @param {onnx.TypeProto} message TypeProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n TypeProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) object.denotation = '';\n if (message.tensorType != null && message.hasOwnProperty('tensorType')) {\n object.tensorType = $root.onnx.TypeProto.Tensor.toObject(message.tensorType, options);\n if (options.oneofs) object.value = 'tensorType';\n }\n if (message.sequenceType != null && message.hasOwnProperty('sequenceType')) {\n object.sequenceType = $root.onnx.TypeProto.Sequence.toObject(message.sequenceType, options);\n if (options.oneofs) object.value = 'sequenceType';\n }\n if (message.mapType != null && message.hasOwnProperty('mapType')) {\n object.mapType = $root.onnx.TypeProto.Map.toObject(message.mapType, options);\n if (options.oneofs) object.value = 'mapType';\n }\n if (message.denotation != null && message.hasOwnProperty('denotation')) object.denotation = message.denotation;\n if (message.sparseTensorType != null && message.hasOwnProperty('sparseTensorType')) {\n object.sparseTensorType = $root.onnx.TypeProto.SparseTensor.toObject(message.sparseTensorType, options);\n if (options.oneofs) object.value = 'sparseTensorType';\n }\n if (message.optionalType != null && message.hasOwnProperty('optionalType')) {\n object.optionalType = $root.onnx.TypeProto.Optional.toObject(message.optionalType, options);\n if (options.oneofs) object.value = 'optionalType';\n }\n return object;\n };\n\n /**\n * Converts this TypeProto to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n TypeProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for TypeProto\n * @function getTypeUrl\n * @memberof onnx.TypeProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n TypeProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto';\n };\n\n TypeProto.Tensor = (function () {\n /**\n * Properties of a Tensor.\n * @memberof onnx.TypeProto\n * @interface ITensor\n * @property {number|null} [elemType] Tensor elemType\n * @property {onnx.ITensorShapeProto|null} [shape] Tensor shape\n */\n\n /**\n * Constructs a new Tensor.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Tensor.\n * @implements ITensor\n * @constructor\n * @param {onnx.TypeProto.ITensor=} [properties] Properties to set\n */\n function Tensor(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Tensor elemType.\n * @member {number} elemType\n * @memberof onnx.TypeProto.Tensor\n * @instance\n */\n Tensor.prototype.elemType = 0;\n\n /**\n * Tensor shape.\n * @member {onnx.ITensorShapeProto|null|undefined} shape\n * @memberof onnx.TypeProto.Tensor\n * @instance\n */\n Tensor.prototype.shape = null;\n\n /**\n * Creates a new Tensor instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor=} [properties] Properties to set\n * @returns {onnx.TypeProto.Tensor} Tensor instance\n */\n Tensor.create = function create(properties) {\n return new Tensor(properties);\n };\n\n /**\n * Encodes the specified Tensor message. Does not implicitly {@link onnx.TypeProto.Tensor.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor} message Tensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tensor.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, 'elemType'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.elemType);\n if (message.shape != null && Object.hasOwnProperty.call(message, 'shape'))\n $root.onnx.TensorShapeProto.encode(message.shape, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Tensor message, length delimited. Does not implicitly {@link onnx.TypeProto.Tensor.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.ITensor} message Tensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tensor.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Tensor message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Tensor} Tensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tensor.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto.Tensor();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = reader.int32();\n break;\n }\n case 2: {\n message.shape = $root.onnx.TensorShapeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Tensor message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Tensor} Tensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tensor.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Tensor message.\n * @function verify\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Tensor.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.elemType != null && message.hasOwnProperty('elemType'))\n if (!$util.isInteger(message.elemType)) return 'elemType: integer expected';\n if (message.shape != null && message.hasOwnProperty('shape')) {\n var error = $root.onnx.TensorShapeProto.verify(message.shape);\n if (error) return 'shape.' + error;\n }\n return null;\n };\n\n /**\n * Creates a Tensor message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto.Tensor} Tensor\n */\n Tensor.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Tensor) return object;\n var message = new $root.onnx.TypeProto.Tensor();\n if (object.elemType != null) message.elemType = object.elemType | 0;\n if (object.shape != null) {\n if (typeof object.shape !== 'object') throw TypeError('.onnx.TypeProto.Tensor.shape: object expected');\n message.shape = $root.onnx.TensorShapeProto.fromObject(object.shape);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Tensor message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {onnx.TypeProto.Tensor} message Tensor\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Tensor.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.elemType = 0;\n object.shape = null;\n }\n if (message.elemType != null && message.hasOwnProperty('elemType')) object.elemType = message.elemType;\n if (message.shape != null && message.hasOwnProperty('shape'))\n object.shape = $root.onnx.TensorShapeProto.toObject(message.shape, options);\n return object;\n };\n\n /**\n * Converts this Tensor to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Tensor\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Tensor.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Tensor\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Tensor\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Tensor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto.Tensor';\n };\n\n return Tensor;\n })();\n\n TypeProto.Sequence = (function () {\n /**\n * Properties of a Sequence.\n * @memberof onnx.TypeProto\n * @interface ISequence\n * @property {onnx.ITypeProto|null} [elemType] Sequence elemType\n */\n\n /**\n * Constructs a new Sequence.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Sequence.\n * @implements ISequence\n * @constructor\n * @param {onnx.TypeProto.ISequence=} [properties] Properties to set\n */\n function Sequence(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Sequence elemType.\n * @member {onnx.ITypeProto|null|undefined} elemType\n * @memberof onnx.TypeProto.Sequence\n * @instance\n */\n Sequence.prototype.elemType = null;\n\n /**\n * Creates a new Sequence instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence=} [properties] Properties to set\n * @returns {onnx.TypeProto.Sequence} Sequence instance\n */\n Sequence.create = function create(properties) {\n return new Sequence(properties);\n };\n\n /**\n * Encodes the specified Sequence message. Does not implicitly {@link onnx.TypeProto.Sequence.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence} message Sequence message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sequence.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, 'elemType'))\n $root.onnx.TypeProto.encode(message.elemType, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Sequence message, length delimited. Does not implicitly {@link onnx.TypeProto.Sequence.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.ISequence} message Sequence message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sequence.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Sequence message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Sequence} Sequence\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sequence.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto.Sequence();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Sequence message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Sequence} Sequence\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sequence.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Sequence message.\n * @function verify\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sequence.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.elemType != null && message.hasOwnProperty('elemType')) {\n var error = $root.onnx.TypeProto.verify(message.elemType);\n if (error) return 'elemType.' + error;\n }\n return null;\n };\n\n /**\n * Creates a Sequence message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto.Sequence} Sequence\n */\n Sequence.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Sequence) return object;\n var message = new $root.onnx.TypeProto.Sequence();\n if (object.elemType != null) {\n if (typeof object.elemType !== 'object')\n throw TypeError('.onnx.TypeProto.Sequence.elemType: object expected');\n message.elemType = $root.onnx.TypeProto.fromObject(object.elemType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Sequence message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {onnx.TypeProto.Sequence} message Sequence\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Sequence.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) object.elemType = null;\n if (message.elemType != null && message.hasOwnProperty('elemType'))\n object.elemType = $root.onnx.TypeProto.toObject(message.elemType, options);\n return object;\n };\n\n /**\n * Converts this Sequence to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Sequence\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Sequence.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Sequence\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Sequence\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Sequence.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto.Sequence';\n };\n\n return Sequence;\n })();\n\n TypeProto.Map = (function () {\n /**\n * Properties of a Map.\n * @memberof onnx.TypeProto\n * @interface IMap\n * @property {number|null} [keyType] Map keyType\n * @property {onnx.ITypeProto|null} [valueType] Map valueType\n */\n\n /**\n * Constructs a new Map.\n * @memberof onnx.TypeProto\n * @classdesc Represents a Map.\n * @implements IMap\n * @constructor\n * @param {onnx.TypeProto.IMap=} [properties] Properties to set\n */\n function Map(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Map keyType.\n * @member {number} keyType\n * @memberof onnx.TypeProto.Map\n * @instance\n */\n Map.prototype.keyType = 0;\n\n /**\n * Map valueType.\n * @member {onnx.ITypeProto|null|undefined} valueType\n * @memberof onnx.TypeProto.Map\n * @instance\n */\n Map.prototype.valueType = null;\n\n /**\n * Creates a new Map instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap=} [properties] Properties to set\n * @returns {onnx.TypeProto.Map} Map instance\n */\n Map.create = function create(properties) {\n return new Map(properties);\n };\n\n /**\n * Encodes the specified Map message. Does not implicitly {@link onnx.TypeProto.Map.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap} message Map message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Map.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.keyType != null && Object.hasOwnProperty.call(message, 'keyType'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.keyType);\n if (message.valueType != null && Object.hasOwnProperty.call(message, 'valueType'))\n $root.onnx.TypeProto.encode(message.valueType, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Map message, length delimited. Does not implicitly {@link onnx.TypeProto.Map.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.IMap} message Map message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Map.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Map message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Map} Map\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Map.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto.Map();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.keyType = reader.int32();\n break;\n }\n case 2: {\n message.valueType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Map message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Map} Map\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Map.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Map message.\n * @function verify\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Map.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.keyType != null && message.hasOwnProperty('keyType'))\n if (!$util.isInteger(message.keyType)) return 'keyType: integer expected';\n if (message.valueType != null && message.hasOwnProperty('valueType')) {\n var error = $root.onnx.TypeProto.verify(message.valueType);\n if (error) return 'valueType.' + error;\n }\n return null;\n };\n\n /**\n * Creates a Map message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto.Map} Map\n */\n Map.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Map) return object;\n var message = new $root.onnx.TypeProto.Map();\n if (object.keyType != null) message.keyType = object.keyType | 0;\n if (object.valueType != null) {\n if (typeof object.valueType !== 'object') throw TypeError('.onnx.TypeProto.Map.valueType: object expected');\n message.valueType = $root.onnx.TypeProto.fromObject(object.valueType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Map message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {onnx.TypeProto.Map} message Map\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Map.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.keyType = 0;\n object.valueType = null;\n }\n if (message.keyType != null && message.hasOwnProperty('keyType')) object.keyType = message.keyType;\n if (message.valueType != null && message.hasOwnProperty('valueType'))\n object.valueType = $root.onnx.TypeProto.toObject(message.valueType, options);\n return object;\n };\n\n /**\n * Converts this Map to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Map\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Map.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Map\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Map\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Map.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto.Map';\n };\n\n return Map;\n })();\n\n TypeProto.Optional = (function () {\n /**\n * Properties of an Optional.\n * @memberof onnx.TypeProto\n * @interface IOptional\n * @property {onnx.ITypeProto|null} [elemType] Optional elemType\n */\n\n /**\n * Constructs a new Optional.\n * @memberof onnx.TypeProto\n * @classdesc Represents an Optional.\n * @implements IOptional\n * @constructor\n * @param {onnx.TypeProto.IOptional=} [properties] Properties to set\n */\n function Optional(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Optional elemType.\n * @member {onnx.ITypeProto|null|undefined} elemType\n * @memberof onnx.TypeProto.Optional\n * @instance\n */\n Optional.prototype.elemType = null;\n\n /**\n * Creates a new Optional instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional=} [properties] Properties to set\n * @returns {onnx.TypeProto.Optional} Optional instance\n */\n Optional.create = function create(properties) {\n return new Optional(properties);\n };\n\n /**\n * Encodes the specified Optional message. Does not implicitly {@link onnx.TypeProto.Optional.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional} message Optional message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Optional.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, 'elemType'))\n $root.onnx.TypeProto.encode(message.elemType, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Optional message, length delimited. Does not implicitly {@link onnx.TypeProto.Optional.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.IOptional} message Optional message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Optional.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Optional message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.Optional} Optional\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Optional.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto.Optional();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = $root.onnx.TypeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Optional message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.Optional} Optional\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Optional.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Optional message.\n * @function verify\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Optional.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.elemType != null && message.hasOwnProperty('elemType')) {\n var error = $root.onnx.TypeProto.verify(message.elemType);\n if (error) return 'elemType.' + error;\n }\n return null;\n };\n\n /**\n * Creates an Optional message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto.Optional} Optional\n */\n Optional.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.Optional) return object;\n var message = new $root.onnx.TypeProto.Optional();\n if (object.elemType != null) {\n if (typeof object.elemType !== 'object')\n throw TypeError('.onnx.TypeProto.Optional.elemType: object expected');\n message.elemType = $root.onnx.TypeProto.fromObject(object.elemType);\n }\n return message;\n };\n\n /**\n * Creates a plain object from an Optional message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {onnx.TypeProto.Optional} message Optional\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Optional.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) object.elemType = null;\n if (message.elemType != null && message.hasOwnProperty('elemType'))\n object.elemType = $root.onnx.TypeProto.toObject(message.elemType, options);\n return object;\n };\n\n /**\n * Converts this Optional to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.Optional\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Optional.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Optional\n * @function getTypeUrl\n * @memberof onnx.TypeProto.Optional\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Optional.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto.Optional';\n };\n\n return Optional;\n })();\n\n TypeProto.SparseTensor = (function () {\n /**\n * Properties of a SparseTensor.\n * @memberof onnx.TypeProto\n * @interface ISparseTensor\n * @property {number|null} [elemType] SparseTensor elemType\n * @property {onnx.ITensorShapeProto|null} [shape] SparseTensor shape\n */\n\n /**\n * Constructs a new SparseTensor.\n * @memberof onnx.TypeProto\n * @classdesc Represents a SparseTensor.\n * @implements ISparseTensor\n * @constructor\n * @param {onnx.TypeProto.ISparseTensor=} [properties] Properties to set\n */\n function SparseTensor(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SparseTensor elemType.\n * @member {number} elemType\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n */\n SparseTensor.prototype.elemType = 0;\n\n /**\n * SparseTensor shape.\n * @member {onnx.ITensorShapeProto|null|undefined} shape\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n */\n SparseTensor.prototype.shape = null;\n\n /**\n * Creates a new SparseTensor instance using the specified properties.\n * @function create\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor=} [properties] Properties to set\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor instance\n */\n SparseTensor.create = function create(properties) {\n return new SparseTensor(properties);\n };\n\n /**\n * Encodes the specified SparseTensor message. Does not implicitly {@link onnx.TypeProto.SparseTensor.verify|verify} messages.\n * @function encode\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor} message SparseTensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensor.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.elemType != null && Object.hasOwnProperty.call(message, 'elemType'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.elemType);\n if (message.shape != null && Object.hasOwnProperty.call(message, 'shape'))\n $root.onnx.TensorShapeProto.encode(message.shape, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SparseTensor message, length delimited. Does not implicitly {@link onnx.TypeProto.SparseTensor.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.ISparseTensor} message SparseTensor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SparseTensor.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SparseTensor message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensor.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.TypeProto.SparseTensor();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.elemType = reader.int32();\n break;\n }\n case 2: {\n message.shape = $root.onnx.TensorShapeProto.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SparseTensor message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SparseTensor.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SparseTensor message.\n * @function verify\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SparseTensor.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.elemType != null && message.hasOwnProperty('elemType'))\n if (!$util.isInteger(message.elemType)) return 'elemType: integer expected';\n if (message.shape != null && message.hasOwnProperty('shape')) {\n var error = $root.onnx.TensorShapeProto.verify(message.shape);\n if (error) return 'shape.' + error;\n }\n return null;\n };\n\n /**\n * Creates a SparseTensor message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.TypeProto.SparseTensor} SparseTensor\n */\n SparseTensor.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.TypeProto.SparseTensor) return object;\n var message = new $root.onnx.TypeProto.SparseTensor();\n if (object.elemType != null) message.elemType = object.elemType | 0;\n if (object.shape != null) {\n if (typeof object.shape !== 'object') throw TypeError('.onnx.TypeProto.SparseTensor.shape: object expected');\n message.shape = $root.onnx.TensorShapeProto.fromObject(object.shape);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SparseTensor message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {onnx.TypeProto.SparseTensor} message SparseTensor\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n SparseTensor.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.elemType = 0;\n object.shape = null;\n }\n if (message.elemType != null && message.hasOwnProperty('elemType')) object.elemType = message.elemType;\n if (message.shape != null && message.hasOwnProperty('shape'))\n object.shape = $root.onnx.TensorShapeProto.toObject(message.shape, options);\n return object;\n };\n\n /**\n * Converts this SparseTensor to JSON.\n * @function toJSON\n * @memberof onnx.TypeProto.SparseTensor\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n SparseTensor.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SparseTensor\n * @function getTypeUrl\n * @memberof onnx.TypeProto.SparseTensor\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SparseTensor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.TypeProto.SparseTensor';\n };\n\n return SparseTensor;\n })();\n\n return TypeProto;\n })();\n\n onnx.OperatorSetIdProto = (function () {\n /**\n * Properties of an OperatorSetIdProto.\n * @memberof onnx\n * @interface IOperatorSetIdProto\n * @property {string|null} [domain] OperatorSetIdProto domain\n * @property {number|Long|null} [version] OperatorSetIdProto version\n */\n\n /**\n * Constructs a new OperatorSetIdProto.\n * @memberof onnx\n * @classdesc Represents an OperatorSetIdProto.\n * @implements IOperatorSetIdProto\n * @constructor\n * @param {onnx.IOperatorSetIdProto=} [properties] Properties to set\n */\n function OperatorSetIdProto(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * OperatorSetIdProto domain.\n * @member {string} domain\n * @memberof onnx.OperatorSetIdProto\n * @instance\n */\n OperatorSetIdProto.prototype.domain = '';\n\n /**\n * OperatorSetIdProto version.\n * @member {number|Long} version\n * @memberof onnx.OperatorSetIdProto\n * @instance\n */\n OperatorSetIdProto.prototype.version = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * Creates a new OperatorSetIdProto instance using the specified properties.\n * @function create\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto=} [properties] Properties to set\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto instance\n */\n OperatorSetIdProto.create = function create(properties) {\n return new OperatorSetIdProto(properties);\n };\n\n /**\n * Encodes the specified OperatorSetIdProto message. Does not implicitly {@link onnx.OperatorSetIdProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto} message OperatorSetIdProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OperatorSetIdProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.domain != null && Object.hasOwnProperty.call(message, 'domain'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.domain);\n if (message.version != null && Object.hasOwnProperty.call(message, 'version'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.version);\n return writer;\n };\n\n /**\n * Encodes the specified OperatorSetIdProto message, length delimited. Does not implicitly {@link onnx.OperatorSetIdProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.IOperatorSetIdProto} message OperatorSetIdProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OperatorSetIdProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an OperatorSetIdProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OperatorSetIdProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.OperatorSetIdProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.domain = reader.string();\n break;\n }\n case 2: {\n message.version = reader.int64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an OperatorSetIdProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OperatorSetIdProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an OperatorSetIdProto message.\n * @function verify\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n OperatorSetIdProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.domain != null && message.hasOwnProperty('domain'))\n if (!$util.isString(message.domain)) return 'domain: string expected';\n if (message.version != null && message.hasOwnProperty('version'))\n if (\n !$util.isInteger(message.version) &&\n !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high))\n )\n return 'version: integer|Long expected';\n return null;\n };\n\n /**\n * Creates an OperatorSetIdProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.OperatorSetIdProto} OperatorSetIdProto\n */\n OperatorSetIdProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.OperatorSetIdProto) return object;\n var message = new $root.onnx.OperatorSetIdProto();\n if (object.domain != null) message.domain = String(object.domain);\n if (object.version != null)\n if ($util.Long) (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === 'string') message.version = parseInt(object.version, 10);\n else if (typeof object.version === 'number') message.version = object.version;\n else if (typeof object.version === 'object')\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an OperatorSetIdProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {onnx.OperatorSetIdProto} message OperatorSetIdProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n OperatorSetIdProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.defaults) {\n object.domain = '';\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.version =\n options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else object.version = options.longs === String ? '0' : 0;\n }\n if (message.domain != null && message.hasOwnProperty('domain')) object.domain = message.domain;\n if (message.version != null && message.hasOwnProperty('version'))\n if (typeof message.version === 'number')\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.version)\n : options.longs === Number\n ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber()\n : message.version;\n return object;\n };\n\n /**\n * Converts this OperatorSetIdProto to JSON.\n * @function toJSON\n * @memberof onnx.OperatorSetIdProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n OperatorSetIdProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for OperatorSetIdProto\n * @function getTypeUrl\n * @memberof onnx.OperatorSetIdProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n OperatorSetIdProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.OperatorSetIdProto';\n };\n\n return OperatorSetIdProto;\n })();\n\n /**\n * OperatorStatus enum.\n * @name onnx.OperatorStatus\n * @enum {number}\n * @property {number} EXPERIMENTAL=0 EXPERIMENTAL value\n * @property {number} STABLE=1 STABLE value\n */\n onnx.OperatorStatus = (function () {\n var valuesById = {},\n values = Object.create(valuesById);\n values[(valuesById[0] = 'EXPERIMENTAL')] = 0;\n values[(valuesById[1] = 'STABLE')] = 1;\n return values;\n })();\n\n onnx.FunctionProto = (function () {\n /**\n * Properties of a FunctionProto.\n * @memberof onnx\n * @interface IFunctionProto\n * @property {string|null} [name] FunctionProto name\n * @property {Array.<string>|null} [input] FunctionProto input\n * @property {Array.<string>|null} [output] FunctionProto output\n * @property {Array.<string>|null} [attribute] FunctionProto attribute\n * @property {Array.<onnx.IAttributeProto>|null} [attributeProto] FunctionProto attributeProto\n * @property {Array.<onnx.INodeProto>|null} [node] FunctionProto node\n * @property {string|null} [docString] FunctionProto docString\n * @property {Array.<onnx.IOperatorSetIdProto>|null} [opsetImport] FunctionProto opsetImport\n * @property {string|null} [domain] FunctionProto domain\n */\n\n /**\n * Constructs a new FunctionProto.\n * @memberof onnx\n * @classdesc Represents a FunctionProto.\n * @implements IFunctionProto\n * @constructor\n * @param {onnx.IFunctionProto=} [properties] Properties to set\n */\n function FunctionProto(properties) {\n this.input = [];\n this.output = [];\n this.attribute = [];\n this.attributeProto = [];\n this.node = [];\n this.opsetImport = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * FunctionProto name.\n * @member {string} name\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.name = '';\n\n /**\n * FunctionProto input.\n * @member {Array.<string>} input\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.input = $util.emptyArray;\n\n /**\n * FunctionProto output.\n * @member {Array.<string>} output\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.output = $util.emptyArray;\n\n /**\n * FunctionProto attribute.\n * @member {Array.<string>} attribute\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.attribute = $util.emptyArray;\n\n /**\n * FunctionProto attributeProto.\n * @member {Array.<onnx.IAttributeProto>} attributeProto\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.attributeProto = $util.emptyArray;\n\n /**\n * FunctionProto node.\n * @member {Array.<onnx.INodeProto>} node\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.node = $util.emptyArray;\n\n /**\n * FunctionProto docString.\n * @member {string} docString\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.docString = '';\n\n /**\n * FunctionProto opsetImport.\n * @member {Array.<onnx.IOperatorSetIdProto>} opsetImport\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.opsetImport = $util.emptyArray;\n\n /**\n * FunctionProto domain.\n * @member {string} domain\n * @memberof onnx.FunctionProto\n * @instance\n */\n FunctionProto.prototype.domain = '';\n\n /**\n * Creates a new FunctionProto instance using the specified properties.\n * @function create\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto=} [properties] Properties to set\n * @returns {onnx.FunctionProto} FunctionProto instance\n */\n FunctionProto.create = function create(properties) {\n return new FunctionProto(properties);\n };\n\n /**\n * Encodes the specified FunctionProto message. Does not implicitly {@link onnx.FunctionProto.verify|verify} messages.\n * @function encode\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto} message FunctionProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n FunctionProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.name != null && Object.hasOwnProperty.call(message, 'name'))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.name);\n if (message.input != null && message.input.length)\n for (var i = 0; i < message.input.length; ++i)\n writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.input[i]);\n if (message.output != null && message.output.length)\n for (var i = 0; i < message.output.length; ++i)\n writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.output[i]);\n if (message.attribute != null && message.attribute.length)\n for (var i = 0; i < message.attribute.length; ++i)\n writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.attribute[i]);\n if (message.node != null && message.node.length)\n for (var i = 0; i < message.node.length; ++i)\n $root.onnx.NodeProto.encode(message.node[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim();\n if (message.docString != null && Object.hasOwnProperty.call(message, 'docString'))\n writer.uint32(/* id 8, wireType 2 =*/ 66).string(message.docString);\n if (message.opsetImport != null && message.opsetImport.length)\n for (var i = 0; i < message.opsetImport.length; ++i)\n $root.onnx.OperatorSetIdProto.encode(\n message.opsetImport[i],\n writer.uint32(/* id 9, wireType 2 =*/ 74).fork(),\n ).ldelim();\n if (message.domain != null && Object.hasOwnProperty.call(message, 'domain'))\n writer.uint32(/* id 10, wireType 2 =*/ 82).string(message.domain);\n if (message.attributeProto != null && message.attributeProto.length)\n for (var i = 0; i < message.attributeProto.length; ++i)\n $root.onnx.AttributeProto.encode(\n message.attributeProto[i],\n writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified FunctionProto message, length delimited. Does not implicitly {@link onnx.FunctionProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.IFunctionProto} message FunctionProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n FunctionProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a FunctionProto message from the specified reader or buffer.\n * @function decode\n * @memberof onnx.FunctionProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {onnx.FunctionProto} FunctionProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n FunctionProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.onnx.FunctionProto();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.name = reader.string();\n break;\n }\n case 4: {\n if (!(message.input && message.input.length)) message.input = [];\n message.input.push(reader.string());\n break;\n }\n case 5: {\n if (!(message.output && message.output.length)) message.output = [];\n message.output.push(reader.string());\n break;\n }\n case 6: {\n if (!(message.attribute && message.attribute.length)) message.attribute = [];\n message.attribute.push(reader.string());\n break;\n }\n case 11: {\n if (!(message.attributeProto && message.attributeProto.length)) message.attributeProto = [];\n message.attributeProto.push($root.onnx.AttributeProto.decode(reader, reader.uint32()));\n break;\n }\n case 7: {\n if (!(message.node && message.node.length)) message.node = [];\n message.node.push($root.onnx.NodeProto.decode(reader, reader.uint32()));\n break;\n }\n case 8: {\n message.docString = reader.string();\n break;\n }\n case 9: {\n if (!(message.opsetImport && message.opsetImport.length)) message.opsetImport = [];\n message.opsetImport.push($root.onnx.OperatorSetIdProto.decode(reader, reader.uint32()));\n break;\n }\n case 10: {\n message.domain = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a FunctionProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof onnx.FunctionProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {onnx.FunctionProto} FunctionProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n FunctionProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a FunctionProto message.\n * @function verify\n * @memberof onnx.FunctionProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n FunctionProto.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected';\n if (message.name != null && message.hasOwnProperty('name'))\n if (!$util.isString(message.name)) return 'name: string expected';\n if (message.input != null && message.hasOwnProperty('input')) {\n if (!Array.isArray(message.input)) return 'input: array expected';\n for (var i = 0; i < message.input.length; ++i)\n if (!$util.isString(message.input[i])) return 'input: string[] expected';\n }\n if (message.output != null && message.hasOwnProperty('output')) {\n if (!Array.isArray(message.output)) return 'output: array expected';\n for (var i = 0; i < message.output.length; ++i)\n if (!$util.isString(message.output[i])) return 'output: string[] expected';\n }\n if (message.attribute != null && message.hasOwnProperty('attribute')) {\n if (!Array.isArray(message.attribute)) return 'attribute: array expected';\n for (var i = 0; i < message.attribute.length; ++i)\n if (!$util.isString(message.attribute[i])) return 'attribute: string[] expected';\n }\n if (message.attributeProto != null && message.hasOwnProperty('attributeProto')) {\n if (!Array.isArray(message.attributeProto)) return 'attributeProto: array expected';\n for (var i = 0; i < message.attributeProto.length; ++i) {\n var error = $root.onnx.AttributeProto.verify(message.attributeProto[i]);\n if (error) return 'attributeProto.' + error;\n }\n }\n if (message.node != null && message.hasOwnProperty('node')) {\n if (!Array.isArray(message.node)) return 'node: array expected';\n for (var i = 0; i < message.node.length; ++i) {\n var error = $root.onnx.NodeProto.verify(message.node[i]);\n if (error) return 'node.' + error;\n }\n }\n if (message.docString != null && message.hasOwnProperty('docString'))\n if (!$util.isString(message.docString)) return 'docString: string expected';\n if (message.opsetImport != null && message.hasOwnProperty('opsetImport')) {\n if (!Array.isArray(message.opsetImport)) return 'opsetImport: array expected';\n for (var i = 0; i < message.opsetImport.length; ++i) {\n var error = $root.onnx.OperatorSetIdProto.verify(message.opsetImport[i]);\n if (error) return 'opsetImport.' + error;\n }\n }\n if (message.domain != null && message.hasOwnProperty('domain'))\n if (!$util.isString(message.domain)) return 'domain: string expected';\n return null;\n };\n\n /**\n * Creates a FunctionProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof onnx.FunctionProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {onnx.FunctionProto} FunctionProto\n */\n FunctionProto.fromObject = function fromObject(object) {\n if (object instanceof $root.onnx.FunctionProto) return object;\n var message = new $root.onnx.FunctionProto();\n if (object.name != null) message.name = String(object.name);\n if (object.input) {\n if (!Array.isArray(object.input)) throw TypeError('.onnx.FunctionProto.input: array expected');\n message.input = [];\n for (var i = 0; i < object.input.length; ++i) message.input[i] = String(object.input[i]);\n }\n if (object.output) {\n if (!Array.isArray(object.output)) throw TypeError('.onnx.FunctionProto.output: array expected');\n message.output = [];\n for (var i = 0; i < object.output.length; ++i) message.output[i] = String(object.output[i]);\n }\n if (object.attribute) {\n if (!Array.isArray(object.attribute)) throw TypeError('.onnx.FunctionProto.attribute: array expected');\n message.attribute = [];\n for (var i = 0; i < object.attribute.length; ++i) message.attribute[i] = String(object.attribute[i]);\n }\n if (object.attributeProto) {\n if (!Array.isArray(object.attributeProto))\n throw TypeError('.onnx.FunctionProto.attributeProto: array expected');\n message.attributeProto = [];\n for (var i = 0; i < object.attributeProto.length; ++i) {\n if (typeof object.attributeProto[i] !== 'object')\n throw TypeError('.onnx.FunctionProto.attributeProto: object expected');\n message.attributeProto[i] = $root.onnx.AttributeProto.fromObject(object.attributeProto[i]);\n }\n }\n if (object.node) {\n if (!Array.isArray(object.node)) throw TypeError('.onnx.FunctionProto.node: array expected');\n message.node = [];\n for (var i = 0; i < object.node.length; ++i) {\n if (typeof object.node[i] !== 'object') throw TypeError('.onnx.FunctionProto.node: object expected');\n message.node[i] = $root.onnx.NodeProto.fromObject(object.node[i]);\n }\n }\n if (object.docString != null) message.docString = String(object.docString);\n if (object.opsetImport) {\n if (!Array.isArray(object.opsetImport)) throw TypeError('.onnx.FunctionProto.opsetImport: array expected');\n message.opsetImport = [];\n for (var i = 0; i < object.opsetImport.length; ++i) {\n if (typeof object.opsetImport[i] !== 'object')\n throw TypeError('.onnx.FunctionProto.opsetImport: object expected');\n message.opsetImport[i] = $root.onnx.OperatorSetIdProto.fromObject(object.opsetImport[i]);\n }\n }\n if (object.domain != null) message.domain = String(object.domain);\n return message;\n };\n\n /**\n * Creates a plain object from a FunctionProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof onnx.FunctionProto\n * @static\n * @param {onnx.FunctionProto} message FunctionProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n FunctionProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.input = [];\n object.output = [];\n object.attribute = [];\n object.node = [];\n object.opsetImport = [];\n object.attributeProto = [];\n }\n if (options.defaults) {\n object.name = '';\n object.docString = '';\n object.domain = '';\n }\n if (message.name != null && message.hasOwnProperty('name')) object.name = message.name;\n if (message.input && message.input.length) {\n object.input = [];\n for (var j = 0; j < message.input.length; ++j) object.input[j] = message.input[j];\n }\n if (message.output && message.output.length) {\n object.output = [];\n for (var j = 0; j < message.output.length; ++j) object.output[j] = message.output[j];\n }\n if (message.attribute && message.attribute.length) {\n object.attribute = [];\n for (var j = 0; j < message.attribute.length; ++j) object.attribute[j] = message.attribute[j];\n }\n if (message.node && message.node.length) {\n object.node = [];\n for (var j = 0; j < message.node.length; ++j)\n object.node[j] = $root.onnx.NodeProto.toObject(message.node[j], options);\n }\n if (message.docString != null && message.hasOwnProperty('docString')) object.docString = message.docString;\n if (message.opsetImport && message.opsetImport.length) {\n object.opsetImport = [];\n for (var j = 0; j < message.opsetImport.length; ++j)\n object.opsetImport[j] = $root.onnx.OperatorSetIdProto.toObject(message.opsetImport[j], options);\n }\n if (message.domain != null && message.hasOwnProperty('domain')) object.domain = message.domain;\n if (message.attributeProto && message.attributeProto.length) {\n object.attributeProto = [];\n for (var j = 0; j < message.attributeProto.length; ++j)\n object.attributeProto[j] = $root.onnx.AttributeProto.toObject(message.attributeProto[j], options);\n }\n return object;\n };\n\n /**\n * Converts this FunctionProto to JSON.\n * @function toJSON\n * @memberof onnx.FunctionProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n FunctionProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for FunctionProto\n * @function getTypeUrl\n * @memberof onnx.FunctionProto\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n FunctionProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = 'type.googleapis.com';\n }\n return typeUrlPrefix + '/onnx.FunctionProto';\n };\n\n return FunctionProto;\n })();\n\n return onnx;\n})();\n\n// module.exports = $root;\nexport const onnx = $root.onnx;\n"],"names":["$Reader","$protobuf","$Writer","$util","$root","onnx","valuesById","values","AttributeProto","properties","keys","i","message","writer","reader","length","end","tag","end2","error","object","options","long","j","typeUrlPrefix","ValueInfoProto","NodeProto","TrainingInfoProto","ModelProto","StringStringEntryProto","TensorAnnotation","GraphProto","TensorProto","Segment","SparseTensorProto","TensorShapeProto","Dimension","$oneOfFields","TypeProto","Tensor","Sequence","Map","Optional","SparseTensor","OperatorSetIdProto","FunctionProto"],"mappings":"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"}