/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/minimal");

// Common aliases
var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.type = (function() {

    /**
     * Namespace type.
     * @exports type
     * @namespace
     */
    var type = {};

    type.googleapis = (function() {

        /**
         * Namespace googleapis.
         * @memberof type
         * @namespace
         */
        var googleapis = {};

        googleapis.com = (function() {

            /**
             * Namespace com.
             * @memberof type.googleapis
             * @namespace
             */
            var com = {};

            com.TickersPbMsg = (function() {

                /**
                 * Namespace TickersPbMsg.
                 * @memberof type.googleapis.com
                 * @namespace
                 */
                var TickersPbMsg = {};

                TickersPbMsg.Response = (function() {

                    /**
                     * Properties of a Response.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @interface IResponse
                     * @property {string|null} [biz] Response biz
                     * @property {string|null} [type] Response type
                     * @property {string|null} [base] Response base
                     * @property {string|null} [quote] Response quote
                     * @property {string|null} [contractcode] Response contractcode
                     * @property {string|null} [granularity] Response granularity
                     * @property {type.googleapis.com.TickersPbMsg.IData|null} [data] Response data
                     * @property {number|null} [env] Response env
                     */

                    /**
                     * Constructs a new Response.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @classdesc Represents a Response.
                     * @implements IResponse
                     * @constructor
                     * @param {type.googleapis.com.TickersPbMsg.IResponse=} [properties] Properties to set
                     */
                    function Response(properties) {
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Response biz.
                     * @member {string} biz
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.biz = "";

                    /**
                     * Response type.
                     * @member {string} type
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.type = "";

                    /**
                     * Response base.
                     * @member {string} base
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.base = "";

                    /**
                     * Response quote.
                     * @member {string} quote
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.quote = "";

                    /**
                     * Response contractcode.
                     * @member {string} contractcode
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.contractcode = "";

                    /**
                     * Response granularity.
                     * @member {string} granularity
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.granularity = "";

                    /**
                     * Response data.
                     * @member {type.googleapis.com.TickersPbMsg.IData|null|undefined} data
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.data = null;

                    /**
                     * Response env.
                     * @member {number} env
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     */
                    Response.prototype.env = 0;

                    /**
                     * Creates a new Response instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IResponse=} [properties] Properties to set
                     * @returns {type.googleapis.com.TickersPbMsg.Response} Response instance
                     */
                    Response.create = function create(properties) {
                        return new Response(properties);
                    };

                    /**
                     * Encodes the specified Response message. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Response.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.biz != null && Object.hasOwnProperty.call(message, "biz"))
                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.biz);
                        if (message.type != null && Object.hasOwnProperty.call(message, "type"))
                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.type);
                        if (message.base != null && Object.hasOwnProperty.call(message, "base"))
                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.base);
                        if (message.quote != null && Object.hasOwnProperty.call(message, "quote"))
                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.quote);
                        if (message.contractcode != null && Object.hasOwnProperty.call(message, "contractcode"))
                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.contractcode);
                        if (message.granularity != null && Object.hasOwnProperty.call(message, "granularity"))
                            writer.uint32(/* id 6, wireType 2 =*/50).string(message.granularity);
                        if (message.data != null && Object.hasOwnProperty.call(message, "data"))
                            $root.type.googleapis.com.TickersPbMsg.Data.encode(message.data, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
                        if (message.env != null && Object.hasOwnProperty.call(message, "env"))
                            writer.uint32(/* id 8, wireType 0 =*/64).int32(message.env);
                        return writer;
                    };

                    /**
                     * Encodes the specified Response message, length delimited. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Response.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IResponse} message Response message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Response.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.TickersPbMsg.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.TickersPbMsg.Response();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.biz = reader.string();
                                    break;
                                }
                            case 2: {
                                    message.type = reader.string();
                                    break;
                                }
                            case 3: {
                                    message.base = reader.string();
                                    break;
                                }
                            case 4: {
                                    message.quote = reader.string();
                                    break;
                                }
                            case 5: {
                                    message.contractcode = reader.string();
                                    break;
                                }
                            case 6: {
                                    message.granularity = reader.string();
                                    break;
                                }
                            case 7: {
                                    message.data = $root.type.googleapis.com.TickersPbMsg.Data.decode(reader, reader.uint32());
                                    break;
                                }
                            case 8: {
                                    message.env = reader.int32();
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Response message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.TickersPbMsg.Response} Response
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Response.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Response message.
                     * @function verify
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Response.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.biz != null && message.hasOwnProperty("biz"))
                            if (!$util.isString(message.biz))
                                return "biz: string expected";
                        if (message.type != null && message.hasOwnProperty("type"))
                            if (!$util.isString(message.type))
                                return "type: string expected";
                        if (message.base != null && message.hasOwnProperty("base"))
                            if (!$util.isString(message.base))
                                return "base: string expected";
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            if (!$util.isString(message.quote))
                                return "quote: string expected";
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            if (!$util.isString(message.contractcode))
                                return "contractcode: string expected";
                        if (message.granularity != null && message.hasOwnProperty("granularity"))
                            if (!$util.isString(message.granularity))
                                return "granularity: string expected";
                        if (message.data != null && message.hasOwnProperty("data")) {
                            var error = $root.type.googleapis.com.TickersPbMsg.Data.verify(message.data);
                            if (error)
                                return "data." + error;
                        }
                        if (message.env != null && message.hasOwnProperty("env"))
                            if (!$util.isInteger(message.env))
                                return "env: integer expected";
                        return null;
                    };

                    /**
                     * Creates a Response message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.TickersPbMsg.Response} Response
                     */
                    Response.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.TickersPbMsg.Response)
                            return object;
                        var message = new $root.type.googleapis.com.TickersPbMsg.Response();
                        if (object.biz != null)
                            message.biz = String(object.biz);
                        if (object.type != null)
                            message.type = String(object.type);
                        if (object.base != null)
                            message.base = String(object.base);
                        if (object.quote != null)
                            message.quote = String(object.quote);
                        if (object.contractcode != null)
                            message.contractcode = String(object.contractcode);
                        if (object.granularity != null)
                            message.granularity = String(object.granularity);
                        if (object.data != null) {
                            if (typeof object.data !== "object")
                                throw TypeError(".type.googleapis.com.TickersPbMsg.Response.data: object expected");
                            message.data = $root.type.googleapis.com.TickersPbMsg.Data.fromObject(object.data);
                        }
                        if (object.env != null)
                            message.env = object.env | 0;
                        return message;
                    };

                    /**
                     * Creates a plain object from a Response message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.Response} message Response
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Response.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.defaults) {
                            object.biz = "";
                            object.type = "";
                            object.base = "";
                            object.quote = "";
                            object.contractcode = "";
                            object.granularity = "";
                            object.data = null;
                            object.env = 0;
                        }
                        if (message.biz != null && message.hasOwnProperty("biz"))
                            object.biz = message.biz;
                        if (message.type != null && message.hasOwnProperty("type"))
                            object.type = message.type;
                        if (message.base != null && message.hasOwnProperty("base"))
                            object.base = message.base;
                        if (message.quote != null && message.hasOwnProperty("quote"))
                            object.quote = message.quote;
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            object.contractcode = message.contractcode;
                        if (message.granularity != null && message.hasOwnProperty("granularity"))
                            object.granularity = message.granularity;
                        if (message.data != null && message.hasOwnProperty("data"))
                            object.data = $root.type.googleapis.com.TickersPbMsg.Data.toObject(message.data, options);
                        if (message.env != null && message.hasOwnProperty("env"))
                            object.env = message.env;
                        return object;
                    };

                    /**
                     * Converts this Response to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Response.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Response
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.TickersPbMsg.Response
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Response.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.TickersPbMsg.Response";
                    };

                    return Response;
                })();

                TickersPbMsg.Data = (function() {

                    /**
                     * Properties of a Data.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @interface IData
                     * @property {string|null} [typeUrl] Data typeUrl
                     * @property {Array.<type.googleapis.com.TickersPbMsg.IBody>|null} [value] Data value
                     */

                    /**
                     * Constructs a new Data.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @classdesc Represents a Data.
                     * @implements IData
                     * @constructor
                     * @param {type.googleapis.com.TickersPbMsg.IData=} [properties] Properties to set
                     */
                    function Data(properties) {
                        this.value = [];
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Data typeUrl.
                     * @member {string} typeUrl
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @instance
                     */
                    Data.prototype.typeUrl = "";

                    /**
                     * Data value.
                     * @member {Array.<type.googleapis.com.TickersPbMsg.IBody>} value
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @instance
                     */
                    Data.prototype.value = $util.emptyArray;

                    /**
                     * Creates a new Data instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IData=} [properties] Properties to set
                     * @returns {type.googleapis.com.TickersPbMsg.Data} Data instance
                     */
                    Data.create = function create(properties) {
                        return new Data(properties);
                    };

                    /**
                     * Encodes the specified Data message. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Data.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IData} message Data message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Data.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.typeUrl != null && Object.hasOwnProperty.call(message, "typeUrl"))
                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.typeUrl);
                        if (message.value != null && message.value.length)
                            for (var i = 0; i < message.value.length; ++i)
                                $root.type.googleapis.com.TickersPbMsg.Body.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                        return writer;
                    };

                    /**
                     * Encodes the specified Data message, length delimited. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Data.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IData} message Data message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Data.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Data message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.TickersPbMsg.Data} Data
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Data.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.TickersPbMsg.Data();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.typeUrl = reader.string();
                                    break;
                                }
                            case 2: {
                                    if (!(message.value && message.value.length))
                                        message.value = [];
                                    message.value.push($root.type.googleapis.com.TickersPbMsg.Body.decode(reader, reader.uint32()));
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Data message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.TickersPbMsg.Data} Data
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Data.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Data message.
                     * @function verify
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Data.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.typeUrl != null && message.hasOwnProperty("typeUrl"))
                            if (!$util.isString(message.typeUrl))
                                return "typeUrl: string expected";
                        if (message.value != null && message.hasOwnProperty("value")) {
                            if (!Array.isArray(message.value))
                                return "value: array expected";
                            for (var i = 0; i < message.value.length; ++i) {
                                var error = $root.type.googleapis.com.TickersPbMsg.Body.verify(message.value[i]);
                                if (error)
                                    return "value." + error;
                            }
                        }
                        return null;
                    };

                    /**
                     * Creates a Data message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.TickersPbMsg.Data} Data
                     */
                    Data.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.TickersPbMsg.Data)
                            return object;
                        var message = new $root.type.googleapis.com.TickersPbMsg.Data();
                        if (object.typeUrl != null)
                            message.typeUrl = String(object.typeUrl);
                        if (object.value) {
                            if (!Array.isArray(object.value))
                                throw TypeError(".type.googleapis.com.TickersPbMsg.Data.value: array expected");
                            message.value = [];
                            for (var i = 0; i < object.value.length; ++i) {
                                if (typeof object.value[i] !== "object")
                                    throw TypeError(".type.googleapis.com.TickersPbMsg.Data.value: object expected");
                                message.value[i] = $root.type.googleapis.com.TickersPbMsg.Body.fromObject(object.value[i]);
                            }
                        }
                        return message;
                    };

                    /**
                     * Creates a plain object from a Data message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.Data} message Data
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Data.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.arrays || options.defaults)
                            object.value = [];
                        if (options.defaults)
                            object.typeUrl = "";
                        if (message.typeUrl != null && message.hasOwnProperty("typeUrl"))
                            object.typeUrl = message.typeUrl;
                        if (message.value && message.value.length) {
                            object.value = [];
                            for (var j = 0; j < message.value.length; ++j)
                                object.value[j] = $root.type.googleapis.com.TickersPbMsg.Body.toObject(message.value[j], options);
                        }
                        return object;
                    };

                    /**
                     * Converts this Data to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Data.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Data
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.TickersPbMsg.Data
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Data.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.TickersPbMsg.Data";
                    };

                    return Data;
                })();

                TickersPbMsg.Body = (function() {

                    /**
                     * Properties of a Body.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @interface IBody
                     * @property {number|Long|null} [createddate] Body createddate
                     * @property {string|null} [high] Body high
                     * @property {string|null} [low] Body low
                     * @property {string|null} [amount24] Body amount24
                     * @property {string|null} [size24] Body size24
                     * @property {string|null} [first] Body first
                     * @property {string|null} [last] Body last
                     * @property {string|null} [change24] Body change24
                     * @property {string|null} [changepercentage] Body changepercentage
                     * @property {string|null} [buy] Body buy
                     * @property {string|null} [sell] Body sell
                     * @property {string|null} [contractcode] Body contractcode
                     * @property {string|null} [lastcny] Body lastcny
                     * @property {number|null} [env] Body env
                     */

                    /**
                     * Constructs a new Body.
                     * @memberof type.googleapis.com.TickersPbMsg
                     * @classdesc Represents a Body.
                     * @implements IBody
                     * @constructor
                     * @param {type.googleapis.com.TickersPbMsg.IBody=} [properties] Properties to set
                     */
                    function Body(properties) {
                        if (properties)
                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                                if (properties[keys[i]] != null)
                                    this[keys[i]] = properties[keys[i]];
                    }

                    /**
                     * Body createddate.
                     * @member {number|Long} createddate
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.createddate = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

                    /**
                     * Body high.
                     * @member {string} high
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.high = "";

                    /**
                     * Body low.
                     * @member {string} low
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.low = "";

                    /**
                     * Body amount24.
                     * @member {string} amount24
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.amount24 = "";

                    /**
                     * Body size24.
                     * @member {string} size24
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.size24 = "";

                    /**
                     * Body first.
                     * @member {string} first
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.first = "";

                    /**
                     * Body last.
                     * @member {string} last
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.last = "";

                    /**
                     * Body change24.
                     * @member {string} change24
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.change24 = "";

                    /**
                     * Body changepercentage.
                     * @member {string} changepercentage
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.changepercentage = "";

                    /**
                     * Body buy.
                     * @member {string} buy
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.buy = "";

                    /**
                     * Body sell.
                     * @member {string} sell
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.sell = "";

                    /**
                     * Body contractcode.
                     * @member {string} contractcode
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.contractcode = "";

                    /**
                     * Body lastcny.
                     * @member {string} lastcny
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.lastcny = "";

                    /**
                     * Body env.
                     * @member {number} env
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     */
                    Body.prototype.env = 0;

                    /**
                     * Creates a new Body instance using the specified properties.
                     * @function create
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IBody=} [properties] Properties to set
                     * @returns {type.googleapis.com.TickersPbMsg.Body} Body instance
                     */
                    Body.create = function create(properties) {
                        return new Body(properties);
                    };

                    /**
                     * Encodes the specified Body message. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Body.verify|verify} messages.
                     * @function encode
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IBody} message Body message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Body.encode = function encode(message, writer) {
                        if (!writer)
                            writer = $Writer.create();
                        if (message.createddate != null && Object.hasOwnProperty.call(message, "createddate"))
                            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.createddate);
                        if (message.high != null && Object.hasOwnProperty.call(message, "high"))
                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.high);
                        if (message.low != null && Object.hasOwnProperty.call(message, "low"))
                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.low);
                        if (message.amount24 != null && Object.hasOwnProperty.call(message, "amount24"))
                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.amount24);
                        if (message.size24 != null && Object.hasOwnProperty.call(message, "size24"))
                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.size24);
                        if (message.first != null && Object.hasOwnProperty.call(message, "first"))
                            writer.uint32(/* id 6, wireType 2 =*/50).string(message.first);
                        if (message.last != null && Object.hasOwnProperty.call(message, "last"))
                            writer.uint32(/* id 7, wireType 2 =*/58).string(message.last);
                        if (message.change24 != null && Object.hasOwnProperty.call(message, "change24"))
                            writer.uint32(/* id 8, wireType 2 =*/66).string(message.change24);
                        if (message.changepercentage != null && Object.hasOwnProperty.call(message, "changepercentage"))
                            writer.uint32(/* id 9, wireType 2 =*/74).string(message.changepercentage);
                        if (message.buy != null && Object.hasOwnProperty.call(message, "buy"))
                            writer.uint32(/* id 10, wireType 2 =*/82).string(message.buy);
                        if (message.sell != null && Object.hasOwnProperty.call(message, "sell"))
                            writer.uint32(/* id 11, wireType 2 =*/90).string(message.sell);
                        if (message.contractcode != null && Object.hasOwnProperty.call(message, "contractcode"))
                            writer.uint32(/* id 12, wireType 2 =*/98).string(message.contractcode);
                        if (message.lastcny != null && Object.hasOwnProperty.call(message, "lastcny"))
                            writer.uint32(/* id 13, wireType 2 =*/106).string(message.lastcny);
                        if (message.env != null && Object.hasOwnProperty.call(message, "env"))
                            writer.uint32(/* id 14, wireType 0 =*/112).int32(message.env);
                        return writer;
                    };

                    /**
                     * Encodes the specified Body message, length delimited. Does not implicitly {@link type.googleapis.com.TickersPbMsg.Body.verify|verify} messages.
                     * @function encodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.IBody} message Body message or plain object to encode
                     * @param {$protobuf.Writer} [writer] Writer to encode to
                     * @returns {$protobuf.Writer} Writer
                     */
                    Body.encodeDelimited = function encodeDelimited(message, writer) {
                        return this.encode(message, writer).ldelim();
                    };

                    /**
                     * Decodes a Body message from the specified reader or buffer.
                     * @function decode
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @param {number} [length] Message length if known beforehand
                     * @returns {type.googleapis.com.TickersPbMsg.Body} Body
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Body.decode = function decode(reader, length) {
                        if (!(reader instanceof $Reader))
                            reader = $Reader.create(reader);
                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.type.googleapis.com.TickersPbMsg.Body();
                        while (reader.pos < end) {
                            var tag = reader.uint32();
                            switch (tag >>> 3) {
                            case 1: {
                                    message.createddate = reader.int64();
                                    break;
                                }
                            case 2: {
                                    message.high = reader.string();
                                    break;
                                }
                            case 3: {
                                    message.low = reader.string();
                                    break;
                                }
                            case 4: {
                                    message.amount24 = reader.string();
                                    break;
                                }
                            case 5: {
                                    message.size24 = reader.string();
                                    break;
                                }
                            case 6: {
                                    message.first = reader.string();
                                    break;
                                }
                            case 7: {
                                    message.last = reader.string();
                                    break;
                                }
                            case 8: {
                                    message.change24 = reader.string();
                                    break;
                                }
                            case 9: {
                                    message.changepercentage = reader.string();
                                    break;
                                }
                            case 10: {
                                    message.buy = reader.string();
                                    break;
                                }
                            case 11: {
                                    message.sell = reader.string();
                                    break;
                                }
                            case 12: {
                                    message.contractcode = reader.string();
                                    break;
                                }
                            case 13: {
                                    message.lastcny = reader.string();
                                    break;
                                }
                            case 14: {
                                    message.env = reader.int32();
                                    break;
                                }
                            default:
                                reader.skipType(tag & 7);
                                break;
                            }
                        }
                        return message;
                    };

                    /**
                     * Decodes a Body message from the specified reader or buffer, length delimited.
                     * @function decodeDelimited
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
                     * @returns {type.googleapis.com.TickersPbMsg.Body} Body
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    Body.decodeDelimited = function decodeDelimited(reader) {
                        if (!(reader instanceof $Reader))
                            reader = new $Reader(reader);
                        return this.decode(reader, reader.uint32());
                    };

                    /**
                     * Verifies a Body message.
                     * @function verify
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {Object.<string,*>} message Plain object to verify
                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
                     */
                    Body.verify = function verify(message) {
                        if (typeof message !== "object" || message === null)
                            return "object expected";
                        if (message.createddate != null && message.hasOwnProperty("createddate"))
                            if (!$util.isInteger(message.createddate) && !(message.createddate && $util.isInteger(message.createddate.low) && $util.isInteger(message.createddate.high)))
                                return "createddate: integer|Long expected";
                        if (message.high != null && message.hasOwnProperty("high"))
                            if (!$util.isString(message.high))
                                return "high: string expected";
                        if (message.low != null && message.hasOwnProperty("low"))
                            if (!$util.isString(message.low))
                                return "low: string expected";
                        if (message.amount24 != null && message.hasOwnProperty("amount24"))
                            if (!$util.isString(message.amount24))
                                return "amount24: string expected";
                        if (message.size24 != null && message.hasOwnProperty("size24"))
                            if (!$util.isString(message.size24))
                                return "size24: string expected";
                        if (message.first != null && message.hasOwnProperty("first"))
                            if (!$util.isString(message.first))
                                return "first: string expected";
                        if (message.last != null && message.hasOwnProperty("last"))
                            if (!$util.isString(message.last))
                                return "last: string expected";
                        if (message.change24 != null && message.hasOwnProperty("change24"))
                            if (!$util.isString(message.change24))
                                return "change24: string expected";
                        if (message.changepercentage != null && message.hasOwnProperty("changepercentage"))
                            if (!$util.isString(message.changepercentage))
                                return "changepercentage: string expected";
                        if (message.buy != null && message.hasOwnProperty("buy"))
                            if (!$util.isString(message.buy))
                                return "buy: string expected";
                        if (message.sell != null && message.hasOwnProperty("sell"))
                            if (!$util.isString(message.sell))
                                return "sell: string expected";
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            if (!$util.isString(message.contractcode))
                                return "contractcode: string expected";
                        if (message.lastcny != null && message.hasOwnProperty("lastcny"))
                            if (!$util.isString(message.lastcny))
                                return "lastcny: string expected";
                        if (message.env != null && message.hasOwnProperty("env"))
                            if (!$util.isInteger(message.env))
                                return "env: integer expected";
                        return null;
                    };

                    /**
                     * Creates a Body message from a plain object. Also converts values to their respective internal types.
                     * @function fromObject
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {Object.<string,*>} object Plain object
                     * @returns {type.googleapis.com.TickersPbMsg.Body} Body
                     */
                    Body.fromObject = function fromObject(object) {
                        if (object instanceof $root.type.googleapis.com.TickersPbMsg.Body)
                            return object;
                        var message = new $root.type.googleapis.com.TickersPbMsg.Body();
                        if (object.createddate != null)
                            if ($util.Long)
                                (message.createddate = $util.Long.fromValue(object.createddate)).unsigned = false;
                            else if (typeof object.createddate === "string")
                                message.createddate = parseInt(object.createddate, 10);
                            else if (typeof object.createddate === "number")
                                message.createddate = object.createddate;
                            else if (typeof object.createddate === "object")
                                message.createddate = new $util.LongBits(object.createddate.low >>> 0, object.createddate.high >>> 0).toNumber();
                        if (object.high != null)
                            message.high = String(object.high);
                        if (object.low != null)
                            message.low = String(object.low);
                        if (object.amount24 != null)
                            message.amount24 = String(object.amount24);
                        if (object.size24 != null)
                            message.size24 = String(object.size24);
                        if (object.first != null)
                            message.first = String(object.first);
                        if (object.last != null)
                            message.last = String(object.last);
                        if (object.change24 != null)
                            message.change24 = String(object.change24);
                        if (object.changepercentage != null)
                            message.changepercentage = String(object.changepercentage);
                        if (object.buy != null)
                            message.buy = String(object.buy);
                        if (object.sell != null)
                            message.sell = String(object.sell);
                        if (object.contractcode != null)
                            message.contractcode = String(object.contractcode);
                        if (object.lastcny != null)
                            message.lastcny = String(object.lastcny);
                        if (object.env != null)
                            message.env = object.env | 0;
                        return message;
                    };

                    /**
                     * Creates a plain object from a Body message. Also converts values to other types if specified.
                     * @function toObject
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {type.googleapis.com.TickersPbMsg.Body} message Body
                     * @param {$protobuf.IConversionOptions} [options] Conversion options
                     * @returns {Object.<string,*>} Plain object
                     */
                    Body.toObject = function toObject(message, options) {
                        if (!options)
                            options = {};
                        var object = {};
                        if (options.defaults) {
                            if ($util.Long) {
                                var long = new $util.Long(0, 0, false);
                                object.createddate = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                            } else
                                object.createddate = options.longs === String ? "0" : 0;
                            object.high = "";
                            object.low = "";
                            object.amount24 = "";
                            object.size24 = "";
                            object.first = "";
                            object.last = "";
                            object.change24 = "";
                            object.changepercentage = "";
                            object.buy = "";
                            object.sell = "";
                            object.contractcode = "";
                            object.lastcny = "";
                            object.env = 0;
                        }
                        if (message.createddate != null && message.hasOwnProperty("createddate"))
                            if (typeof message.createddate === "number")
                                object.createddate = options.longs === String ? String(message.createddate) : message.createddate;
                            else
                                object.createddate = options.longs === String ? $util.Long.prototype.toString.call(message.createddate) : options.longs === Number ? new $util.LongBits(message.createddate.low >>> 0, message.createddate.high >>> 0).toNumber() : message.createddate;
                        if (message.high != null && message.hasOwnProperty("high"))
                            object.high = message.high;
                        if (message.low != null && message.hasOwnProperty("low"))
                            object.low = message.low;
                        if (message.amount24 != null && message.hasOwnProperty("amount24"))
                            object.amount24 = message.amount24;
                        if (message.size24 != null && message.hasOwnProperty("size24"))
                            object.size24 = message.size24;
                        if (message.first != null && message.hasOwnProperty("first"))
                            object.first = message.first;
                        if (message.last != null && message.hasOwnProperty("last"))
                            object.last = message.last;
                        if (message.change24 != null && message.hasOwnProperty("change24"))
                            object.change24 = message.change24;
                        if (message.changepercentage != null && message.hasOwnProperty("changepercentage"))
                            object.changepercentage = message.changepercentage;
                        if (message.buy != null && message.hasOwnProperty("buy"))
                            object.buy = message.buy;
                        if (message.sell != null && message.hasOwnProperty("sell"))
                            object.sell = message.sell;
                        if (message.contractcode != null && message.hasOwnProperty("contractcode"))
                            object.contractcode = message.contractcode;
                        if (message.lastcny != null && message.hasOwnProperty("lastcny"))
                            object.lastcny = message.lastcny;
                        if (message.env != null && message.hasOwnProperty("env"))
                            object.env = message.env;
                        return object;
                    };

                    /**
                     * Converts this Body to JSON.
                     * @function toJSON
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @instance
                     * @returns {Object.<string,*>} JSON object
                     */
                    Body.prototype.toJSON = function toJSON() {
                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                    };

                    /**
                     * Gets the default type url for Body
                     * @function getTypeUrl
                     * @memberof type.googleapis.com.TickersPbMsg.Body
                     * @static
                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns {string} The default type url
                     */
                    Body.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                        if (typeUrlPrefix === undefined) {
                            typeUrlPrefix = "type.googleapis.com";
                        }
                        return typeUrlPrefix + "/type.googleapis.com.TickersPbMsg.Body";
                    };

                    return Body;
                })();

                return TickersPbMsg;
            })();

            return com;
        })();

        return googleapis;
    })();

    return type;
})();

module.exports = $root;
