/*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"] = {});

/**
 * ColorPrizeArea enum.
 * @exports ColorPrizeArea
 * @enum {number}
 * @property {number} CPA_Single_0=0 CPA_Single_0 value
 * @property {number} CPA_Single_1=1 CPA_Single_1 value
 * @property {number} CPA_Single_2=2 CPA_Single_2 value
 * @property {number} CPA_Double=3 CPA_Double value
 * @property {number} CPA_Three=4 CPA_Three value
 */
$root.ColorPrizeArea = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "CPA_Single_0"] = 0;
    values[valuesById[1] = "CPA_Single_1"] = 1;
    values[valuesById[2] = "CPA_Single_2"] = 2;
    values[valuesById[3] = "CPA_Double"] = 3;
    values[valuesById[4] = "CPA_Three"] = 4;
    return values;
})();

$root.ColorPrizeAreaRange = (function() {

    /**
     * Properties of a ColorPrizeAreaRange.
     * @exports IColorPrizeAreaRange
     * @interface IColorPrizeAreaRange
     * @property {ColorPrizeArea|null} [pos] ColorPrizeAreaRange pos
     * @property {Long|null} [minMul] ColorPrizeAreaRange minMul
     * @property {Long|null} [maxMul] ColorPrizeAreaRange maxMul
     */

    /**
     * Constructs a new ColorPrizeAreaRange.
     * @exports ColorPrizeAreaRange
     * @classdesc Represents a ColorPrizeAreaRange.
     * @implements IColorPrizeAreaRange
     * @constructor
     * @param {IColorPrizeAreaRange=} [properties] Properties to set
     */
    function ColorPrizeAreaRange(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]];
    }

    /**
     * ColorPrizeAreaRange pos.
     * @member {ColorPrizeArea} pos
     * @memberof ColorPrizeAreaRange
     * @instance
     */
    ColorPrizeAreaRange.prototype.pos = 0;

    /**
     * ColorPrizeAreaRange minMul.
     * @member {Long} minMul
     * @memberof ColorPrizeAreaRange
     * @instance
     */
    ColorPrizeAreaRange.prototype.minMul = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * ColorPrizeAreaRange maxMul.
     * @member {Long} maxMul
     * @memberof ColorPrizeAreaRange
     * @instance
     */
    ColorPrizeAreaRange.prototype.maxMul = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new ColorPrizeAreaRange instance using the specified properties.
     * @function create
     * @memberof ColorPrizeAreaRange
     * @static
     * @param {IColorPrizeAreaRange=} [properties] Properties to set
     * @returns {ColorPrizeAreaRange} ColorPrizeAreaRange instance
     */
    ColorPrizeAreaRange.create = function create(properties) {
        return new ColorPrizeAreaRange(properties);
    };

    /**
     * Encodes the specified ColorPrizeAreaRange message. Does not implicitly {@link ColorPrizeAreaRange.verify|verify} messages.
     * @function encode
     * @memberof ColorPrizeAreaRange
     * @static
     * @param {IColorPrizeAreaRange} message ColorPrizeAreaRange message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorPrizeAreaRange.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.pos != null && Object.hasOwnProperty.call(message, "pos"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.pos);
        if (message.minMul != null && Object.hasOwnProperty.call(message, "minMul"))
            writer.uint32(/* id 2, wireType 0 =*/16).int64(message.minMul);
        if (message.maxMul != null && Object.hasOwnProperty.call(message, "maxMul"))
            writer.uint32(/* id 3, wireType 0 =*/24).int64(message.maxMul);
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorPrizeAreaRange message.
     * @function verify
     * @memberof ColorPrizeAreaRange
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorPrizeAreaRange.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.pos != null && message.hasOwnProperty("pos"))
            switch (message.pos) {
            default:
                return "pos: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
                break;
            }
        if (message.minMul != null && message.hasOwnProperty("minMul"))
            if (!$util.isInteger(message.minMul) && !(message.minMul && $util.isInteger(message.minMul.low) && $util.isInteger(message.minMul.high)))
                return "minMul: integer|Long expected";
        if (message.maxMul != null && message.hasOwnProperty("maxMul"))
            if (!$util.isInteger(message.maxMul) && !(message.maxMul && $util.isInteger(message.maxMul.low) && $util.isInteger(message.maxMul.high)))
                return "maxMul: integer|Long expected";
        return null;
    };

    /**
     * Creates a ColorPrizeAreaRange message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorPrizeAreaRange
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorPrizeAreaRange} ColorPrizeAreaRange
     */
    ColorPrizeAreaRange.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorPrizeAreaRange)
            return object;
        var message = new $root.ColorPrizeAreaRange();
        switch (object.pos) {
        default:
            if (typeof object.pos === "number") {
                message.pos = object.pos;
                break;
            }
            break;
        case "CPA_Single_0":
        case 0:
            message.pos = 0;
            break;
        case "CPA_Single_1":
        case 1:
            message.pos = 1;
            break;
        case "CPA_Single_2":
        case 2:
            message.pos = 2;
            break;
        case "CPA_Double":
        case 3:
            message.pos = 3;
            break;
        case "CPA_Three":
        case 4:
            message.pos = 4;
            break;
        }
        if (object.minMul != null)
            if ($util.Long)
                (message.minMul = $util.Long.fromValue(object.minMul)).unsigned = false;
            else if (typeof object.minMul === "string")
                message.minMul = parseInt(object.minMul, 10);
            else if (typeof object.minMul === "number")
                message.minMul = object.minMul;
            else if (typeof object.minMul === "object")
                message.minMul = new $util.LongBits(object.minMul.low >>> 0, object.minMul.high >>> 0).toNumber();
        if (object.maxMul != null)
            if ($util.Long)
                (message.maxMul = $util.Long.fromValue(object.maxMul)).unsigned = false;
            else if (typeof object.maxMul === "string")
                message.maxMul = parseInt(object.maxMul, 10);
            else if (typeof object.maxMul === "number")
                message.maxMul = object.maxMul;
            else if (typeof object.maxMul === "object")
                message.maxMul = new $util.LongBits(object.maxMul.low >>> 0, object.maxMul.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a ColorPrizeAreaRange message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorPrizeAreaRange
     * @static
     * @param {ColorPrizeAreaRange} message ColorPrizeAreaRange
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorPrizeAreaRange.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.pos = options.enums === String ? "CPA_Single_0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.minMul = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.minMul = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.maxMul = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.maxMul = options.longs === String ? "0" : 0;
        }
        if (message.pos != null && message.hasOwnProperty("pos"))
            object.pos = options.enums === String ? $root.ColorPrizeArea[message.pos] === undefined ? message.pos : $root.ColorPrizeArea[message.pos] : message.pos;
        if (message.minMul != null && message.hasOwnProperty("minMul"))
            if (typeof message.minMul === "number")
                object.minMul = options.longs === String ? String(message.minMul) : message.minMul;
            else
                object.minMul = options.longs === String ? $util.Long.prototype.toString.call(message.minMul) : options.longs === Number ? new $util.LongBits(message.minMul.low >>> 0, message.minMul.high >>> 0).toNumber() : message.minMul;
        if (message.maxMul != null && message.hasOwnProperty("maxMul"))
            if (typeof message.maxMul === "number")
                object.maxMul = options.longs === String ? String(message.maxMul) : message.maxMul;
            else
                object.maxMul = options.longs === String ? $util.Long.prototype.toString.call(message.maxMul) : options.longs === Number ? new $util.LongBits(message.maxMul.low >>> 0, message.maxMul.high >>> 0).toNumber() : message.maxMul;
        return object;
    };

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

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

    return ColorPrizeAreaRange;
})();

$root.ColorRoomConfig = (function() {

    /**
     * Properties of a ColorRoomConfig.
     * @exports IColorRoomConfig
     * @interface IColorRoomConfig
     * @property {Array.<Long>|null} [betList] ColorRoomConfig betList
     * @property {Array.<IColorPrizeAreaRange>|null} [mulRangeConfig] ColorRoomConfig mulRangeConfig
     */

    /**
     * Constructs a new ColorRoomConfig.
     * @exports ColorRoomConfig
     * @classdesc Represents a ColorRoomConfig.
     * @implements IColorRoomConfig
     * @constructor
     * @param {IColorRoomConfig=} [properties] Properties to set
     */
    function ColorRoomConfig(properties) {
        this.betList = [];
        this.mulRangeConfig = [];
        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]];
    }

    /**
     * ColorRoomConfig betList.
     * @member {Array.<Long>} betList
     * @memberof ColorRoomConfig
     * @instance
     */
    ColorRoomConfig.prototype.betList = $util.emptyArray;

    /**
     * ColorRoomConfig mulRangeConfig.
     * @member {Array.<IColorPrizeAreaRange>} mulRangeConfig
     * @memberof ColorRoomConfig
     * @instance
     */
    ColorRoomConfig.prototype.mulRangeConfig = $util.emptyArray;

    /**
     * Creates a new ColorRoomConfig instance using the specified properties.
     * @function create
     * @memberof ColorRoomConfig
     * @static
     * @param {IColorRoomConfig=} [properties] Properties to set
     * @returns {ColorRoomConfig} ColorRoomConfig instance
     */
    ColorRoomConfig.create = function create(properties) {
        return new ColorRoomConfig(properties);
    };

    /**
     * Encodes the specified ColorRoomConfig message. Does not implicitly {@link ColorRoomConfig.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomConfig
     * @static
     * @param {IColorRoomConfig} message ColorRoomConfig message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomConfig.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.betList != null && message.betList.length) {
            writer.uint32(/* id 3, wireType 2 =*/26).fork();
            for (var i = 0; i < message.betList.length; ++i)
                writer.int64(message.betList[i]);
            writer.ldelim();
        }
        if (message.mulRangeConfig != null && message.mulRangeConfig.length)
            for (var i = 0; i < message.mulRangeConfig.length; ++i)
                $root.ColorPrizeAreaRange.encode(message.mulRangeConfig[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomConfig message.
     * @function verify
     * @memberof ColorRoomConfig
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomConfig.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.betList != null && message.hasOwnProperty("betList")) {
            if (!Array.isArray(message.betList))
                return "betList: array expected";
            for (var i = 0; i < message.betList.length; ++i)
                if (!$util.isInteger(message.betList[i]) && !(message.betList[i] && $util.isInteger(message.betList[i].low) && $util.isInteger(message.betList[i].high)))
                    return "betList: integer|Long[] expected";
        }
        if (message.mulRangeConfig != null && message.hasOwnProperty("mulRangeConfig")) {
            if (!Array.isArray(message.mulRangeConfig))
                return "mulRangeConfig: array expected";
            for (var i = 0; i < message.mulRangeConfig.length; ++i) {
                var error = $root.ColorPrizeAreaRange.verify(message.mulRangeConfig[i]);
                if (error)
                    return "mulRangeConfig." + error;
            }
        }
        return null;
    };

    /**
     * Creates a ColorRoomConfig message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomConfig
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomConfig} ColorRoomConfig
     */
    ColorRoomConfig.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomConfig)
            return object;
        var message = new $root.ColorRoomConfig();
        if (object.betList) {
            if (!Array.isArray(object.betList))
                throw TypeError(".ColorRoomConfig.betList: array expected");
            message.betList = [];
            for (var i = 0; i < object.betList.length; ++i)
                if ($util.Long)
                    (message.betList[i] = $util.Long.fromValue(object.betList[i])).unsigned = false;
                else if (typeof object.betList[i] === "string")
                    message.betList[i] = parseInt(object.betList[i], 10);
                else if (typeof object.betList[i] === "number")
                    message.betList[i] = object.betList[i];
                else if (typeof object.betList[i] === "object")
                    message.betList[i] = new $util.LongBits(object.betList[i].low >>> 0, object.betList[i].high >>> 0).toNumber();
        }
        if (object.mulRangeConfig) {
            if (!Array.isArray(object.mulRangeConfig))
                throw TypeError(".ColorRoomConfig.mulRangeConfig: array expected");
            message.mulRangeConfig = [];
            for (var i = 0; i < object.mulRangeConfig.length; ++i) {
                if (typeof object.mulRangeConfig[i] !== "object")
                    throw TypeError(".ColorRoomConfig.mulRangeConfig: object expected");
                message.mulRangeConfig[i] = $root.ColorPrizeAreaRange.fromObject(object.mulRangeConfig[i]);
            }
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomConfig message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomConfig
     * @static
     * @param {ColorRoomConfig} message ColorRoomConfig
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomConfig.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.arrays || options.defaults) {
            object.betList = [];
            object.mulRangeConfig = [];
        }
        if (message.betList && message.betList.length) {
            object.betList = [];
            for (var j = 0; j < message.betList.length; ++j)
                if (typeof message.betList[j] === "number")
                    object.betList[j] = options.longs === String ? String(message.betList[j]) : message.betList[j];
                else
                    object.betList[j] = options.longs === String ? $util.Long.prototype.toString.call(message.betList[j]) : options.longs === Number ? new $util.LongBits(message.betList[j].low >>> 0, message.betList[j].high >>> 0).toNumber() : message.betList[j];
        }
        if (message.mulRangeConfig && message.mulRangeConfig.length) {
            object.mulRangeConfig = [];
            for (var j = 0; j < message.mulRangeConfig.length; ++j)
                object.mulRangeConfig[j] = $root.ColorPrizeAreaRange.toObject(message.mulRangeConfig[j], options);
        }
        return object;
    };

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

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

    return ColorRoomConfig;
})();

/**
 * ColorType enum.
 * @exports ColorType
 * @enum {number}
 * @property {number} CT_Yellow=0 CT_Yellow value
 * @property {number} CT_White=1 CT_White value
 * @property {number} CT_Pink=2 CT_Pink value
 * @property {number} CT_Blue=3 CT_Blue value
 * @property {number} CT_Red=4 CT_Red value
 * @property {number} CT_Green=5 CT_Green value
 */
$root.ColorType = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "CT_Yellow"] = 0;
    values[valuesById[1] = "CT_White"] = 1;
    values[valuesById[2] = "CT_Pink"] = 2;
    values[valuesById[3] = "CT_Blue"] = 3;
    values[valuesById[4] = "CT_Red"] = 4;
    values[valuesById[5] = "CT_Green"] = 5;
    return values;
})();

/**
 * ColorBetArea enum.
 * @exports ColorBetArea
 * @enum {number}
 * @property {number} CBA_Yellow=0 CBA_Yellow value
 * @property {number} CBA_White=1 CBA_White value
 * @property {number} CBA_Pink=2 CBA_Pink value
 * @property {number} CBA_Blue=3 CBA_Blue value
 * @property {number} CBA_Red=4 CBA_Red value
 * @property {number} CBA_Green=5 CBA_Green value
 * @property {number} CBA_Yellow2=6 CBA_Yellow2 value
 * @property {number} CBA_White2=7 CBA_White2 value
 * @property {number} CBA_Pink2=8 CBA_Pink2 value
 * @property {number} CBA_Blue2=9 CBA_Blue2 value
 * @property {number} CBA_Red2=10 CBA_Red2 value
 * @property {number} CBA_Green2=11 CBA_Green2 value
 * @property {number} CBA_Yellow3=12 CBA_Yellow3 value
 * @property {number} CBA_White3=13 CBA_White3 value
 * @property {number} CBA_Pink3=14 CBA_Pink3 value
 * @property {number} CBA_Blue3=15 CBA_Blue3 value
 * @property {number} CBA_Red3=16 CBA_Red3 value
 * @property {number} CBA_Green3=17 CBA_Green3 value
 */
$root.ColorBetArea = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "CBA_Yellow"] = 0;
    values[valuesById[1] = "CBA_White"] = 1;
    values[valuesById[2] = "CBA_Pink"] = 2;
    values[valuesById[3] = "CBA_Blue"] = 3;
    values[valuesById[4] = "CBA_Red"] = 4;
    values[valuesById[5] = "CBA_Green"] = 5;
    values[valuesById[6] = "CBA_Yellow2"] = 6;
    values[valuesById[7] = "CBA_White2"] = 7;
    values[valuesById[8] = "CBA_Pink2"] = 8;
    values[valuesById[9] = "CBA_Blue2"] = 9;
    values[valuesById[10] = "CBA_Red2"] = 10;
    values[valuesById[11] = "CBA_Green2"] = 11;
    values[valuesById[12] = "CBA_Yellow3"] = 12;
    values[valuesById[13] = "CBA_White3"] = 13;
    values[valuesById[14] = "CBA_Pink3"] = 14;
    values[valuesById[15] = "CBA_Blue3"] = 15;
    values[valuesById[16] = "CBA_Red3"] = 16;
    values[valuesById[17] = "CBA_Green3"] = 17;
    return values;
})();

/**
 * ColorGameStatus enum.
 * @exports ColorGameStatus
 * @enum {number}
 * @property {number} CGS_WaitStart=0 CGS_WaitStart value
 * @property {number} CGS_Start=1 CGS_Start value
 * @property {number} CGS_Betting=2 CGS_Betting value
 * @property {number} CGS_BetEnd=3 CGS_BetEnd value
 * @property {number} CGS_OpenThreeDice=4 CGS_OpenThreeDice value
 * @property {number} CGS_Settle=5 CGS_Settle value
 */
$root.ColorGameStatus = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "CGS_WaitStart"] = 0;
    values[valuesById[1] = "CGS_Start"] = 1;
    values[valuesById[2] = "CGS_Betting"] = 2;
    values[valuesById[3] = "CGS_BetEnd"] = 3;
    values[valuesById[4] = "CGS_OpenThreeDice"] = 4;
    values[valuesById[5] = "CGS_Settle"] = 5;
    return values;
})();

$root.ColorRoomWaitStart = (function() {

    /**
     * Properties of a ColorRoomWaitStart.
     * @exports IColorRoomWaitStart
     * @interface IColorRoomWaitStart
     * @property {INtfColorTrend|null} [Trends] ColorRoomWaitStart Trends
     */

    /**
     * Constructs a new ColorRoomWaitStart.
     * @exports ColorRoomWaitStart
     * @classdesc Represents a ColorRoomWaitStart.
     * @implements IColorRoomWaitStart
     * @constructor
     * @param {IColorRoomWaitStart=} [properties] Properties to set
     */
    function ColorRoomWaitStart(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]];
    }

    /**
     * ColorRoomWaitStart Trends.
     * @member {INtfColorTrend|null|undefined} Trends
     * @memberof ColorRoomWaitStart
     * @instance
     */
    ColorRoomWaitStart.prototype.Trends = null;

    /**
     * Creates a new ColorRoomWaitStart instance using the specified properties.
     * @function create
     * @memberof ColorRoomWaitStart
     * @static
     * @param {IColorRoomWaitStart=} [properties] Properties to set
     * @returns {ColorRoomWaitStart} ColorRoomWaitStart instance
     */
    ColorRoomWaitStart.create = function create(properties) {
        return new ColorRoomWaitStart(properties);
    };

    /**
     * Encodes the specified ColorRoomWaitStart message. Does not implicitly {@link ColorRoomWaitStart.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomWaitStart
     * @static
     * @param {IColorRoomWaitStart} message ColorRoomWaitStart message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomWaitStart.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.Trends != null && Object.hasOwnProperty.call(message, "Trends"))
            $root.NtfColorTrend.encode(message.Trends, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomWaitStart message.
     * @function verify
     * @memberof ColorRoomWaitStart
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomWaitStart.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.Trends != null && message.hasOwnProperty("Trends")) {
            var error = $root.NtfColorTrend.verify(message.Trends);
            if (error)
                return "Trends." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomWaitStart message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomWaitStart
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomWaitStart} ColorRoomWaitStart
     */
    ColorRoomWaitStart.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomWaitStart)
            return object;
        var message = new $root.ColorRoomWaitStart();
        if (object.Trends != null) {
            if (typeof object.Trends !== "object")
                throw TypeError(".ColorRoomWaitStart.Trends: object expected");
            message.Trends = $root.NtfColorTrend.fromObject(object.Trends);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomWaitStart message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomWaitStart
     * @static
     * @param {ColorRoomWaitStart} message ColorRoomWaitStart
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomWaitStart.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults)
            object.Trends = null;
        if (message.Trends != null && message.hasOwnProperty("Trends"))
            object.Trends = $root.NtfColorTrend.toObject(message.Trends, options);
        return object;
    };

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

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

    return ColorRoomWaitStart;
})();

$root.ColorRoomStart = (function() {

    /**
     * Properties of a ColorRoomStart.
     * @exports IColorRoomStart
     * @interface IColorRoomStart
     * @property {INtfColorGameStart|null} [start] ColorRoomStart start
     * @property {INtfColorTrend|null} [Trends] ColorRoomStart Trends
     */

    /**
     * Constructs a new ColorRoomStart.
     * @exports ColorRoomStart
     * @classdesc Represents a ColorRoomStart.
     * @implements IColorRoomStart
     * @constructor
     * @param {IColorRoomStart=} [properties] Properties to set
     */
    function ColorRoomStart(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]];
    }

    /**
     * ColorRoomStart start.
     * @member {INtfColorGameStart|null|undefined} start
     * @memberof ColorRoomStart
     * @instance
     */
    ColorRoomStart.prototype.start = null;

    /**
     * ColorRoomStart Trends.
     * @member {INtfColorTrend|null|undefined} Trends
     * @memberof ColorRoomStart
     * @instance
     */
    ColorRoomStart.prototype.Trends = null;

    /**
     * Creates a new ColorRoomStart instance using the specified properties.
     * @function create
     * @memberof ColorRoomStart
     * @static
     * @param {IColorRoomStart=} [properties] Properties to set
     * @returns {ColorRoomStart} ColorRoomStart instance
     */
    ColorRoomStart.create = function create(properties) {
        return new ColorRoomStart(properties);
    };

    /**
     * Encodes the specified ColorRoomStart message. Does not implicitly {@link ColorRoomStart.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomStart
     * @static
     * @param {IColorRoomStart} message ColorRoomStart message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomStart.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.start != null && Object.hasOwnProperty.call(message, "start"))
            $root.NtfColorGameStart.encode(message.start, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        if (message.Trends != null && Object.hasOwnProperty.call(message, "Trends"))
            $root.NtfColorTrend.encode(message.Trends, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomStart message.
     * @function verify
     * @memberof ColorRoomStart
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomStart.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.start != null && message.hasOwnProperty("start")) {
            var error = $root.NtfColorGameStart.verify(message.start);
            if (error)
                return "start." + error;
        }
        if (message.Trends != null && message.hasOwnProperty("Trends")) {
            var error = $root.NtfColorTrend.verify(message.Trends);
            if (error)
                return "Trends." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomStart message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomStart
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomStart} ColorRoomStart
     */
    ColorRoomStart.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomStart)
            return object;
        var message = new $root.ColorRoomStart();
        if (object.start != null) {
            if (typeof object.start !== "object")
                throw TypeError(".ColorRoomStart.start: object expected");
            message.start = $root.NtfColorGameStart.fromObject(object.start);
        }
        if (object.Trends != null) {
            if (typeof object.Trends !== "object")
                throw TypeError(".ColorRoomStart.Trends: object expected");
            message.Trends = $root.NtfColorTrend.fromObject(object.Trends);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomStart message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomStart
     * @static
     * @param {ColorRoomStart} message ColorRoomStart
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomStart.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.start = null;
            object.Trends = null;
        }
        if (message.start != null && message.hasOwnProperty("start"))
            object.start = $root.NtfColorGameStart.toObject(message.start, options);
        if (message.Trends != null && message.hasOwnProperty("Trends"))
            object.Trends = $root.NtfColorTrend.toObject(message.Trends, options);
        return object;
    };

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

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

    return ColorRoomStart;
})();

$root.ColorRoomBetting = (function() {

    /**
     * Properties of a ColorRoomBetting.
     * @exports IColorRoomBetting
     * @interface IColorRoomBetting
     * @property {INtfColorBetAreaInfo|null} [betAreaInfo] ColorRoomBetting betAreaInfo
     */

    /**
     * Constructs a new ColorRoomBetting.
     * @exports ColorRoomBetting
     * @classdesc Represents a ColorRoomBetting.
     * @implements IColorRoomBetting
     * @constructor
     * @param {IColorRoomBetting=} [properties] Properties to set
     */
    function ColorRoomBetting(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]];
    }

    /**
     * ColorRoomBetting betAreaInfo.
     * @member {INtfColorBetAreaInfo|null|undefined} betAreaInfo
     * @memberof ColorRoomBetting
     * @instance
     */
    ColorRoomBetting.prototype.betAreaInfo = null;

    /**
     * Creates a new ColorRoomBetting instance using the specified properties.
     * @function create
     * @memberof ColorRoomBetting
     * @static
     * @param {IColorRoomBetting=} [properties] Properties to set
     * @returns {ColorRoomBetting} ColorRoomBetting instance
     */
    ColorRoomBetting.create = function create(properties) {
        return new ColorRoomBetting(properties);
    };

    /**
     * Encodes the specified ColorRoomBetting message. Does not implicitly {@link ColorRoomBetting.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomBetting
     * @static
     * @param {IColorRoomBetting} message ColorRoomBetting message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomBetting.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.betAreaInfo != null && Object.hasOwnProperty.call(message, "betAreaInfo"))
            $root.NtfColorBetAreaInfo.encode(message.betAreaInfo, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomBetting message.
     * @function verify
     * @memberof ColorRoomBetting
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomBetting.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.betAreaInfo != null && message.hasOwnProperty("betAreaInfo")) {
            var error = $root.NtfColorBetAreaInfo.verify(message.betAreaInfo);
            if (error)
                return "betAreaInfo." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomBetting message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomBetting
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomBetting} ColorRoomBetting
     */
    ColorRoomBetting.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomBetting)
            return object;
        var message = new $root.ColorRoomBetting();
        if (object.betAreaInfo != null) {
            if (typeof object.betAreaInfo !== "object")
                throw TypeError(".ColorRoomBetting.betAreaInfo: object expected");
            message.betAreaInfo = $root.NtfColorBetAreaInfo.fromObject(object.betAreaInfo);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomBetting message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomBetting
     * @static
     * @param {ColorRoomBetting} message ColorRoomBetting
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomBetting.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults)
            object.betAreaInfo = null;
        if (message.betAreaInfo != null && message.hasOwnProperty("betAreaInfo"))
            object.betAreaInfo = $root.NtfColorBetAreaInfo.toObject(message.betAreaInfo, options);
        return object;
    };

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

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

    return ColorRoomBetting;
})();

$root.ColorRoomEndBet = (function() {

    /**
     * Properties of a ColorRoomEndBet.
     * @exports IColorRoomEndBet
     * @interface IColorRoomEndBet
     * @property {INtfColorEndBetting|null} [areaMul] ColorRoomEndBet areaMul
     * @property {INtfColorBetAreaInfo|null} [betAreaInfo] ColorRoomEndBet betAreaInfo
     * @property {INtfColorBigUser|null} [bigUser] ColorRoomEndBet bigUser
     */

    /**
     * Constructs a new ColorRoomEndBet.
     * @exports ColorRoomEndBet
     * @classdesc Represents a ColorRoomEndBet.
     * @implements IColorRoomEndBet
     * @constructor
     * @param {IColorRoomEndBet=} [properties] Properties to set
     */
    function ColorRoomEndBet(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]];
    }

    /**
     * ColorRoomEndBet areaMul.
     * @member {INtfColorEndBetting|null|undefined} areaMul
     * @memberof ColorRoomEndBet
     * @instance
     */
    ColorRoomEndBet.prototype.areaMul = null;

    /**
     * ColorRoomEndBet betAreaInfo.
     * @member {INtfColorBetAreaInfo|null|undefined} betAreaInfo
     * @memberof ColorRoomEndBet
     * @instance
     */
    ColorRoomEndBet.prototype.betAreaInfo = null;

    /**
     * ColorRoomEndBet bigUser.
     * @member {INtfColorBigUser|null|undefined} bigUser
     * @memberof ColorRoomEndBet
     * @instance
     */
    ColorRoomEndBet.prototype.bigUser = null;

    /**
     * Creates a new ColorRoomEndBet instance using the specified properties.
     * @function create
     * @memberof ColorRoomEndBet
     * @static
     * @param {IColorRoomEndBet=} [properties] Properties to set
     * @returns {ColorRoomEndBet} ColorRoomEndBet instance
     */
    ColorRoomEndBet.create = function create(properties) {
        return new ColorRoomEndBet(properties);
    };

    /**
     * Encodes the specified ColorRoomEndBet message. Does not implicitly {@link ColorRoomEndBet.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomEndBet
     * @static
     * @param {IColorRoomEndBet} message ColorRoomEndBet message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomEndBet.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.areaMul != null && Object.hasOwnProperty.call(message, "areaMul"))
            $root.NtfColorEndBetting.encode(message.areaMul, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        if (message.betAreaInfo != null && Object.hasOwnProperty.call(message, "betAreaInfo"))
            $root.NtfColorBetAreaInfo.encode(message.betAreaInfo, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
        if (message.bigUser != null && Object.hasOwnProperty.call(message, "bigUser"))
            $root.NtfColorBigUser.encode(message.bigUser, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomEndBet message.
     * @function verify
     * @memberof ColorRoomEndBet
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomEndBet.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.areaMul != null && message.hasOwnProperty("areaMul")) {
            var error = $root.NtfColorEndBetting.verify(message.areaMul);
            if (error)
                return "areaMul." + error;
        }
        if (message.betAreaInfo != null && message.hasOwnProperty("betAreaInfo")) {
            var error = $root.NtfColorBetAreaInfo.verify(message.betAreaInfo);
            if (error)
                return "betAreaInfo." + error;
        }
        if (message.bigUser != null && message.hasOwnProperty("bigUser")) {
            var error = $root.NtfColorBigUser.verify(message.bigUser);
            if (error)
                return "bigUser." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomEndBet message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomEndBet
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomEndBet} ColorRoomEndBet
     */
    ColorRoomEndBet.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomEndBet)
            return object;
        var message = new $root.ColorRoomEndBet();
        if (object.areaMul != null) {
            if (typeof object.areaMul !== "object")
                throw TypeError(".ColorRoomEndBet.areaMul: object expected");
            message.areaMul = $root.NtfColorEndBetting.fromObject(object.areaMul);
        }
        if (object.betAreaInfo != null) {
            if (typeof object.betAreaInfo !== "object")
                throw TypeError(".ColorRoomEndBet.betAreaInfo: object expected");
            message.betAreaInfo = $root.NtfColorBetAreaInfo.fromObject(object.betAreaInfo);
        }
        if (object.bigUser != null) {
            if (typeof object.bigUser !== "object")
                throw TypeError(".ColorRoomEndBet.bigUser: object expected");
            message.bigUser = $root.NtfColorBigUser.fromObject(object.bigUser);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomEndBet message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomEndBet
     * @static
     * @param {ColorRoomEndBet} message ColorRoomEndBet
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomEndBet.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.areaMul = null;
            object.betAreaInfo = null;
            object.bigUser = null;
        }
        if (message.areaMul != null && message.hasOwnProperty("areaMul"))
            object.areaMul = $root.NtfColorEndBetting.toObject(message.areaMul, options);
        if (message.betAreaInfo != null && message.hasOwnProperty("betAreaInfo"))
            object.betAreaInfo = $root.NtfColorBetAreaInfo.toObject(message.betAreaInfo, options);
        if (message.bigUser != null && message.hasOwnProperty("bigUser"))
            object.bigUser = $root.NtfColorBigUser.toObject(message.bigUser, options);
        return object;
    };

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

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

    return ColorRoomEndBet;
})();

$root.ColorRoomOpenThreeDice = (function() {

    /**
     * Properties of a ColorRoomOpenThreeDice.
     * @exports IColorRoomOpenThreeDice
     * @interface IColorRoomOpenThreeDice
     * @property {INtfColorOpenThreeDice|null} [dices] ColorRoomOpenThreeDice dices
     */

    /**
     * Constructs a new ColorRoomOpenThreeDice.
     * @exports ColorRoomOpenThreeDice
     * @classdesc Represents a ColorRoomOpenThreeDice.
     * @implements IColorRoomOpenThreeDice
     * @constructor
     * @param {IColorRoomOpenThreeDice=} [properties] Properties to set
     */
    function ColorRoomOpenThreeDice(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]];
    }

    /**
     * ColorRoomOpenThreeDice dices.
     * @member {INtfColorOpenThreeDice|null|undefined} dices
     * @memberof ColorRoomOpenThreeDice
     * @instance
     */
    ColorRoomOpenThreeDice.prototype.dices = null;

    /**
     * Creates a new ColorRoomOpenThreeDice instance using the specified properties.
     * @function create
     * @memberof ColorRoomOpenThreeDice
     * @static
     * @param {IColorRoomOpenThreeDice=} [properties] Properties to set
     * @returns {ColorRoomOpenThreeDice} ColorRoomOpenThreeDice instance
     */
    ColorRoomOpenThreeDice.create = function create(properties) {
        return new ColorRoomOpenThreeDice(properties);
    };

    /**
     * Encodes the specified ColorRoomOpenThreeDice message. Does not implicitly {@link ColorRoomOpenThreeDice.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomOpenThreeDice
     * @static
     * @param {IColorRoomOpenThreeDice} message ColorRoomOpenThreeDice message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomOpenThreeDice.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.dices != null && Object.hasOwnProperty.call(message, "dices"))
            $root.NtfColorOpenThreeDice.encode(message.dices, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomOpenThreeDice message.
     * @function verify
     * @memberof ColorRoomOpenThreeDice
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomOpenThreeDice.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.dices != null && message.hasOwnProperty("dices")) {
            var error = $root.NtfColorOpenThreeDice.verify(message.dices);
            if (error)
                return "dices." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomOpenThreeDice message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomOpenThreeDice
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomOpenThreeDice} ColorRoomOpenThreeDice
     */
    ColorRoomOpenThreeDice.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomOpenThreeDice)
            return object;
        var message = new $root.ColorRoomOpenThreeDice();
        if (object.dices != null) {
            if (typeof object.dices !== "object")
                throw TypeError(".ColorRoomOpenThreeDice.dices: object expected");
            message.dices = $root.NtfColorOpenThreeDice.fromObject(object.dices);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomOpenThreeDice message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomOpenThreeDice
     * @static
     * @param {ColorRoomOpenThreeDice} message ColorRoomOpenThreeDice
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomOpenThreeDice.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults)
            object.dices = null;
        if (message.dices != null && message.hasOwnProperty("dices"))
            object.dices = $root.NtfColorOpenThreeDice.toObject(message.dices, options);
        return object;
    };

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

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

    return ColorRoomOpenThreeDice;
})();

$root.ColorRoomSettle = (function() {

    /**
     * Properties of a ColorRoomSettle.
     * @exports IColorRoomSettle
     * @interface IColorRoomSettle
     * @property {INtfColorSettle|null} [settle] ColorRoomSettle settle
     */

    /**
     * Constructs a new ColorRoomSettle.
     * @exports ColorRoomSettle
     * @classdesc Represents a ColorRoomSettle.
     * @implements IColorRoomSettle
     * @constructor
     * @param {IColorRoomSettle=} [properties] Properties to set
     */
    function ColorRoomSettle(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]];
    }

    /**
     * ColorRoomSettle settle.
     * @member {INtfColorSettle|null|undefined} settle
     * @memberof ColorRoomSettle
     * @instance
     */
    ColorRoomSettle.prototype.settle = null;

    /**
     * Creates a new ColorRoomSettle instance using the specified properties.
     * @function create
     * @memberof ColorRoomSettle
     * @static
     * @param {IColorRoomSettle=} [properties] Properties to set
     * @returns {ColorRoomSettle} ColorRoomSettle instance
     */
    ColorRoomSettle.create = function create(properties) {
        return new ColorRoomSettle(properties);
    };

    /**
     * Encodes the specified ColorRoomSettle message. Does not implicitly {@link ColorRoomSettle.verify|verify} messages.
     * @function encode
     * @memberof ColorRoomSettle
     * @static
     * @param {IColorRoomSettle} message ColorRoomSettle message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorRoomSettle.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.settle != null && Object.hasOwnProperty.call(message, "settle"))
            $root.NtfColorSettle.encode(message.settle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorRoomSettle message.
     * @function verify
     * @memberof ColorRoomSettle
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorRoomSettle.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.settle != null && message.hasOwnProperty("settle")) {
            var error = $root.NtfColorSettle.verify(message.settle);
            if (error)
                return "settle." + error;
        }
        return null;
    };

    /**
     * Creates a ColorRoomSettle message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorRoomSettle
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorRoomSettle} ColorRoomSettle
     */
    ColorRoomSettle.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorRoomSettle)
            return object;
        var message = new $root.ColorRoomSettle();
        if (object.settle != null) {
            if (typeof object.settle !== "object")
                throw TypeError(".ColorRoomSettle.settle: object expected");
            message.settle = $root.NtfColorSettle.fromObject(object.settle);
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorRoomSettle message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorRoomSettle
     * @static
     * @param {ColorRoomSettle} message ColorRoomSettle
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorRoomSettle.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults)
            object.settle = null;
        if (message.settle != null && message.hasOwnProperty("settle"))
            object.settle = $root.NtfColorSettle.toObject(message.settle, options);
        return object;
    };

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

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

    return ColorRoomSettle;
})();

$root.NtfColorRoomInfo = (function() {

    /**
     * Properties of a NtfColorRoomInfo.
     * @exports INtfColorRoomInfo
     * @interface INtfColorRoomInfo
     * @property {ColorGameStatus|null} [status] NtfColorRoomInfo status
     * @property {Long|null} [endTime] NtfColorRoomInfo endTime
     * @property {IColorRoomConfig|null} [config] NtfColorRoomInfo config
     * @property {IColorUser|null} [user] NtfColorRoomInfo user
     * @property {IColorRoomWaitStart|null} [waitStart] NtfColorRoomInfo waitStart
     * @property {IColorRoomStart|null} [start] NtfColorRoomInfo start
     * @property {IColorRoomBetting|null} [betting] NtfColorRoomInfo betting
     * @property {IColorRoomEndBet|null} [endBet] NtfColorRoomInfo endBet
     * @property {IColorRoomOpenThreeDice|null} [openThreeDice] NtfColorRoomInfo openThreeDice
     * @property {IColorRoomSettle|null} [settle] NtfColorRoomInfo settle
     */

    /**
     * Constructs a new NtfColorRoomInfo.
     * @exports NtfColorRoomInfo
     * @classdesc Represents a NtfColorRoomInfo.
     * @implements INtfColorRoomInfo
     * @constructor
     * @param {INtfColorRoomInfo=} [properties] Properties to set
     */
    function NtfColorRoomInfo(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]];
    }

    /**
     * NtfColorRoomInfo status.
     * @member {ColorGameStatus} status
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.status = 0;

    /**
     * NtfColorRoomInfo endTime.
     * @member {Long} endTime
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorRoomInfo config.
     * @member {IColorRoomConfig|null|undefined} config
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.config = null;

    /**
     * NtfColorRoomInfo user.
     * @member {IColorUser|null|undefined} user
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.user = null;

    /**
     * NtfColorRoomInfo waitStart.
     * @member {IColorRoomWaitStart|null|undefined} waitStart
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.waitStart = null;

    /**
     * NtfColorRoomInfo start.
     * @member {IColorRoomStart|null|undefined} start
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.start = null;

    /**
     * NtfColorRoomInfo betting.
     * @member {IColorRoomBetting|null|undefined} betting
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.betting = null;

    /**
     * NtfColorRoomInfo endBet.
     * @member {IColorRoomEndBet|null|undefined} endBet
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.endBet = null;

    /**
     * NtfColorRoomInfo openThreeDice.
     * @member {IColorRoomOpenThreeDice|null|undefined} openThreeDice
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.openThreeDice = null;

    /**
     * NtfColorRoomInfo settle.
     * @member {IColorRoomSettle|null|undefined} settle
     * @memberof NtfColorRoomInfo
     * @instance
     */
    NtfColorRoomInfo.prototype.settle = null;

    /**
     * Creates a new NtfColorRoomInfo instance using the specified properties.
     * @function create
     * @memberof NtfColorRoomInfo
     * @static
     * @param {INtfColorRoomInfo=} [properties] Properties to set
     * @returns {NtfColorRoomInfo} NtfColorRoomInfo instance
     */
    NtfColorRoomInfo.create = function create(properties) {
        return new NtfColorRoomInfo(properties);
    };

    /**
     * Encodes the specified NtfColorRoomInfo message. Does not implicitly {@link NtfColorRoomInfo.verify|verify} messages.
     * @function encode
     * @memberof NtfColorRoomInfo
     * @static
     * @param {INtfColorRoomInfo} message NtfColorRoomInfo message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorRoomInfo.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.status != null && Object.hasOwnProperty.call(message, "status"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.status);
        if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
            writer.uint32(/* id 2, wireType 0 =*/16).int64(message.endTime);
        if (message.waitStart != null && Object.hasOwnProperty.call(message, "waitStart"))
            $root.ColorRoomWaitStart.encode(message.waitStart, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
        if (message.start != null && Object.hasOwnProperty.call(message, "start"))
            $root.ColorRoomStart.encode(message.start, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
        if (message.betting != null && Object.hasOwnProperty.call(message, "betting"))
            $root.ColorRoomBetting.encode(message.betting, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
        if (message.endBet != null && Object.hasOwnProperty.call(message, "endBet"))
            $root.ColorRoomEndBet.encode(message.endBet, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
        if (message.openThreeDice != null && Object.hasOwnProperty.call(message, "openThreeDice"))
            $root.ColorRoomOpenThreeDice.encode(message.openThreeDice, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
        if (message.settle != null && Object.hasOwnProperty.call(message, "settle"))
            $root.ColorRoomSettle.encode(message.settle, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
        if (message.user != null && Object.hasOwnProperty.call(message, "user"))
            $root.ColorUser.encode(message.user, writer.uint32(/* id 100, wireType 2 =*/802).fork()).ldelim();
        if (message.config != null && Object.hasOwnProperty.call(message, "config"))
            $root.ColorRoomConfig.encode(message.config, writer.uint32(/* id 101, wireType 2 =*/810).fork()).ldelim();
        return writer;
    };

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

    /**
     * Decodes a NtfColorRoomInfo message from the specified reader or buffer.
     * @function decode
     * @memberof NtfColorRoomInfo
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {NtfColorRoomInfo} NtfColorRoomInfo
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    NtfColorRoomInfo.decode = function decode(reader, length, error) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.NtfColorRoomInfo();
        while (reader.pos < end) {
            var tag = reader.uint32();
            if (tag === error)
                break;
            switch (tag >>> 3) {
            case 1: {
                    message.status = reader.int32();
                    break;
                }
            case 2: {
                    message.endTime = reader.int64();
                    break;
                }
            case 101: {
                    message.config = $root.ColorRoomConfig.decode(reader, reader.uint32());
                    break;
                }
            case 100: {
                    message.user = $root.ColorUser.decode(reader, reader.uint32());
                    break;
                }
            case 3: {
                    message.waitStart = $root.ColorRoomWaitStart.decode(reader, reader.uint32());
                    break;
                }
            case 4: {
                    message.start = $root.ColorRoomStart.decode(reader, reader.uint32());
                    break;
                }
            case 5: {
                    message.betting = $root.ColorRoomBetting.decode(reader, reader.uint32());
                    break;
                }
            case 6: {
                    message.endBet = $root.ColorRoomEndBet.decode(reader, reader.uint32());
                    break;
                }
            case 7: {
                    message.openThreeDice = $root.ColorRoomOpenThreeDice.decode(reader, reader.uint32());
                    break;
                }
            case 8: {
                    message.settle = $root.ColorRoomSettle.decode(reader, reader.uint32());
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

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

    /**
     * Verifies a NtfColorRoomInfo message.
     * @function verify
     * @memberof NtfColorRoomInfo
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorRoomInfo.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.status != null && message.hasOwnProperty("status"))
            switch (message.status) {
            default:
                return "status: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                break;
            }
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))
                return "endTime: integer|Long expected";
        if (message.config != null && message.hasOwnProperty("config")) {
            var error = $root.ColorRoomConfig.verify(message.config);
            if (error)
                return "config." + error;
        }
        if (message.user != null && message.hasOwnProperty("user")) {
            var error = $root.ColorUser.verify(message.user);
            if (error)
                return "user." + error;
        }
        if (message.waitStart != null && message.hasOwnProperty("waitStart")) {
            var error = $root.ColorRoomWaitStart.verify(message.waitStart);
            if (error)
                return "waitStart." + error;
        }
        if (message.start != null && message.hasOwnProperty("start")) {
            var error = $root.ColorRoomStart.verify(message.start);
            if (error)
                return "start." + error;
        }
        if (message.betting != null && message.hasOwnProperty("betting")) {
            var error = $root.ColorRoomBetting.verify(message.betting);
            if (error)
                return "betting." + error;
        }
        if (message.endBet != null && message.hasOwnProperty("endBet")) {
            var error = $root.ColorRoomEndBet.verify(message.endBet);
            if (error)
                return "endBet." + error;
        }
        if (message.openThreeDice != null && message.hasOwnProperty("openThreeDice")) {
            var error = $root.ColorRoomOpenThreeDice.verify(message.openThreeDice);
            if (error)
                return "openThreeDice." + error;
        }
        if (message.settle != null && message.hasOwnProperty("settle")) {
            var error = $root.ColorRoomSettle.verify(message.settle);
            if (error)
                return "settle." + error;
        }
        return null;
    };

    /**
     * Creates a NtfColorRoomInfo message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorRoomInfo
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorRoomInfo} NtfColorRoomInfo
     */
    NtfColorRoomInfo.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorRoomInfo)
            return object;
        var message = new $root.NtfColorRoomInfo();
        switch (object.status) {
        default:
            if (typeof object.status === "number") {
                message.status = object.status;
                break;
            }
            break;
        case "CGS_WaitStart":
        case 0:
            message.status = 0;
            break;
        case "CGS_Start":
        case 1:
            message.status = 1;
            break;
        case "CGS_Betting":
        case 2:
            message.status = 2;
            break;
        case "CGS_BetEnd":
        case 3:
            message.status = 3;
            break;
        case "CGS_OpenThreeDice":
        case 4:
            message.status = 4;
            break;
        case "CGS_Settle":
        case 5:
            message.status = 5;
            break;
        }
        if (object.endTime != null)
            if ($util.Long)
                (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;
            else if (typeof object.endTime === "string")
                message.endTime = parseInt(object.endTime, 10);
            else if (typeof object.endTime === "number")
                message.endTime = object.endTime;
            else if (typeof object.endTime === "object")
                message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();
        if (object.config != null) {
            if (typeof object.config !== "object")
                throw TypeError(".NtfColorRoomInfo.config: object expected");
            message.config = $root.ColorRoomConfig.fromObject(object.config);
        }
        if (object.user != null) {
            if (typeof object.user !== "object")
                throw TypeError(".NtfColorRoomInfo.user: object expected");
            message.user = $root.ColorUser.fromObject(object.user);
        }
        if (object.waitStart != null) {
            if (typeof object.waitStart !== "object")
                throw TypeError(".NtfColorRoomInfo.waitStart: object expected");
            message.waitStart = $root.ColorRoomWaitStart.fromObject(object.waitStart);
        }
        if (object.start != null) {
            if (typeof object.start !== "object")
                throw TypeError(".NtfColorRoomInfo.start: object expected");
            message.start = $root.ColorRoomStart.fromObject(object.start);
        }
        if (object.betting != null) {
            if (typeof object.betting !== "object")
                throw TypeError(".NtfColorRoomInfo.betting: object expected");
            message.betting = $root.ColorRoomBetting.fromObject(object.betting);
        }
        if (object.endBet != null) {
            if (typeof object.endBet !== "object")
                throw TypeError(".NtfColorRoomInfo.endBet: object expected");
            message.endBet = $root.ColorRoomEndBet.fromObject(object.endBet);
        }
        if (object.openThreeDice != null) {
            if (typeof object.openThreeDice !== "object")
                throw TypeError(".NtfColorRoomInfo.openThreeDice: object expected");
            message.openThreeDice = $root.ColorRoomOpenThreeDice.fromObject(object.openThreeDice);
        }
        if (object.settle != null) {
            if (typeof object.settle !== "object")
                throw TypeError(".NtfColorRoomInfo.settle: object expected");
            message.settle = $root.ColorRoomSettle.fromObject(object.settle);
        }
        return message;
    };

    /**
     * Creates a plain object from a NtfColorRoomInfo message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorRoomInfo
     * @static
     * @param {NtfColorRoomInfo} message NtfColorRoomInfo
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorRoomInfo.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.status = options.enums === String ? "CGS_WaitStart" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.endTime = options.longs === String ? "0" : 0;
            object.waitStart = null;
            object.start = null;
            object.betting = null;
            object.endBet = null;
            object.openThreeDice = null;
            object.settle = null;
            object.user = null;
            object.config = null;
        }
        if (message.status != null && message.hasOwnProperty("status"))
            object.status = options.enums === String ? $root.ColorGameStatus[message.status] === undefined ? message.status : $root.ColorGameStatus[message.status] : message.status;
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (typeof message.endTime === "number")
                object.endTime = options.longs === String ? String(message.endTime) : message.endTime;
            else
                object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;
        if (message.waitStart != null && message.hasOwnProperty("waitStart"))
            object.waitStart = $root.ColorRoomWaitStart.toObject(message.waitStart, options);
        if (message.start != null && message.hasOwnProperty("start"))
            object.start = $root.ColorRoomStart.toObject(message.start, options);
        if (message.betting != null && message.hasOwnProperty("betting"))
            object.betting = $root.ColorRoomBetting.toObject(message.betting, options);
        if (message.endBet != null && message.hasOwnProperty("endBet"))
            object.endBet = $root.ColorRoomEndBet.toObject(message.endBet, options);
        if (message.openThreeDice != null && message.hasOwnProperty("openThreeDice"))
            object.openThreeDice = $root.ColorRoomOpenThreeDice.toObject(message.openThreeDice, options);
        if (message.settle != null && message.hasOwnProperty("settle"))
            object.settle = $root.ColorRoomSettle.toObject(message.settle, options);
        if (message.user != null && message.hasOwnProperty("user"))
            object.user = $root.ColorUser.toObject(message.user, options);
        if (message.config != null && message.hasOwnProperty("config"))
            object.config = $root.ColorRoomConfig.toObject(message.config, options);
        return object;
    };

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

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

    return NtfColorRoomInfo;
})();

$root.NtfColorGameStart = (function() {

    /**
     * Properties of a NtfColorGameStart.
     * @exports INtfColorGameStart
     * @interface INtfColorGameStart
     * @property {Long|null} [endTime] NtfColorGameStart endTime
     * @property {Long|null} [jackpot] NtfColorGameStart jackpot
     */

    /**
     * Constructs a new NtfColorGameStart.
     * @exports NtfColorGameStart
     * @classdesc Represents a NtfColorGameStart.
     * @implements INtfColorGameStart
     * @constructor
     * @param {INtfColorGameStart=} [properties] Properties to set
     */
    function NtfColorGameStart(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]];
    }

    /**
     * NtfColorGameStart endTime.
     * @member {Long} endTime
     * @memberof NtfColorGameStart
     * @instance
     */
    NtfColorGameStart.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorGameStart jackpot.
     * @member {Long} jackpot
     * @memberof NtfColorGameStart
     * @instance
     */
    NtfColorGameStart.prototype.jackpot = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new NtfColorGameStart instance using the specified properties.
     * @function create
     * @memberof NtfColorGameStart
     * @static
     * @param {INtfColorGameStart=} [properties] Properties to set
     * @returns {NtfColorGameStart} NtfColorGameStart instance
     */
    NtfColorGameStart.create = function create(properties) {
        return new NtfColorGameStart(properties);
    };

    /**
     * Encodes the specified NtfColorGameStart message. Does not implicitly {@link NtfColorGameStart.verify|verify} messages.
     * @function encode
     * @memberof NtfColorGameStart
     * @static
     * @param {INtfColorGameStart} message NtfColorGameStart message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorGameStart.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.endTime);
        if (message.jackpot != null && Object.hasOwnProperty.call(message, "jackpot"))
            writer.uint32(/* id 2, wireType 0 =*/16).int64(message.jackpot);
        return writer;
    };

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

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

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

    /**
     * Verifies a NtfColorGameStart message.
     * @function verify
     * @memberof NtfColorGameStart
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorGameStart.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))
                return "endTime: integer|Long expected";
        if (message.jackpot != null && message.hasOwnProperty("jackpot"))
            if (!$util.isInteger(message.jackpot) && !(message.jackpot && $util.isInteger(message.jackpot.low) && $util.isInteger(message.jackpot.high)))
                return "jackpot: integer|Long expected";
        return null;
    };

    /**
     * Creates a NtfColorGameStart message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorGameStart
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorGameStart} NtfColorGameStart
     */
    NtfColorGameStart.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorGameStart)
            return object;
        var message = new $root.NtfColorGameStart();
        if (object.endTime != null)
            if ($util.Long)
                (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;
            else if (typeof object.endTime === "string")
                message.endTime = parseInt(object.endTime, 10);
            else if (typeof object.endTime === "number")
                message.endTime = object.endTime;
            else if (typeof object.endTime === "object")
                message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();
        if (object.jackpot != null)
            if ($util.Long)
                (message.jackpot = $util.Long.fromValue(object.jackpot)).unsigned = false;
            else if (typeof object.jackpot === "string")
                message.jackpot = parseInt(object.jackpot, 10);
            else if (typeof object.jackpot === "number")
                message.jackpot = object.jackpot;
            else if (typeof object.jackpot === "object")
                message.jackpot = new $util.LongBits(object.jackpot.low >>> 0, object.jackpot.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a NtfColorGameStart message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorGameStart
     * @static
     * @param {NtfColorGameStart} message NtfColorGameStart
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorGameStart.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.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.endTime = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.jackpot = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.jackpot = options.longs === String ? "0" : 0;
        }
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (typeof message.endTime === "number")
                object.endTime = options.longs === String ? String(message.endTime) : message.endTime;
            else
                object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;
        if (message.jackpot != null && message.hasOwnProperty("jackpot"))
            if (typeof message.jackpot === "number")
                object.jackpot = options.longs === String ? String(message.jackpot) : message.jackpot;
            else
                object.jackpot = options.longs === String ? $util.Long.prototype.toString.call(message.jackpot) : options.longs === Number ? new $util.LongBits(message.jackpot.low >>> 0, message.jackpot.high >>> 0).toNumber() : message.jackpot;
        return object;
    };

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

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

    return NtfColorGameStart;
})();

$root.NtfColorBetting = (function() {

    /**
     * Properties of a NtfColorBetting.
     * @exports INtfColorBetting
     * @interface INtfColorBetting
     * @property {Long|null} [endTime] NtfColorBetting endTime
     */

    /**
     * Constructs a new NtfColorBetting.
     * @exports NtfColorBetting
     * @classdesc Represents a NtfColorBetting.
     * @implements INtfColorBetting
     * @constructor
     * @param {INtfColorBetting=} [properties] Properties to set
     */
    function NtfColorBetting(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]];
    }

    /**
     * NtfColorBetting endTime.
     * @member {Long} endTime
     * @memberof NtfColorBetting
     * @instance
     */
    NtfColorBetting.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new NtfColorBetting instance using the specified properties.
     * @function create
     * @memberof NtfColorBetting
     * @static
     * @param {INtfColorBetting=} [properties] Properties to set
     * @returns {NtfColorBetting} NtfColorBetting instance
     */
    NtfColorBetting.create = function create(properties) {
        return new NtfColorBetting(properties);
    };

    /**
     * Encodes the specified NtfColorBetting message. Does not implicitly {@link NtfColorBetting.verify|verify} messages.
     * @function encode
     * @memberof NtfColorBetting
     * @static
     * @param {INtfColorBetting} message NtfColorBetting message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorBetting.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.endTime);
        return writer;
    };

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

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

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

    /**
     * Verifies a NtfColorBetting message.
     * @function verify
     * @memberof NtfColorBetting
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorBetting.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))
                return "endTime: integer|Long expected";
        return null;
    };

    /**
     * Creates a NtfColorBetting message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorBetting
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorBetting} NtfColorBetting
     */
    NtfColorBetting.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorBetting)
            return object;
        var message = new $root.NtfColorBetting();
        if (object.endTime != null)
            if ($util.Long)
                (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;
            else if (typeof object.endTime === "string")
                message.endTime = parseInt(object.endTime, 10);
            else if (typeof object.endTime === "number")
                message.endTime = object.endTime;
            else if (typeof object.endTime === "object")
                message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a NtfColorBetting message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorBetting
     * @static
     * @param {NtfColorBetting} message NtfColorBetting
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorBetting.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.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.endTime = options.longs === String ? "0" : 0;
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (typeof message.endTime === "number")
                object.endTime = options.longs === String ? String(message.endTime) : message.endTime;
            else
                object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;
        return object;
    };

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

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

    return NtfColorBetting;
})();

$root.ReqColorBetting = (function() {

    /**
     * Properties of a ReqColorBetting.
     * @exports IReqColorBetting
     * @interface IReqColorBetting
     * @property {ColorBetArea|null} [area] ReqColorBetting area
     * @property {Long|null} [bet] ReqColorBetting bet
     */

    /**
     * Constructs a new ReqColorBetting.
     * @exports ReqColorBetting
     * @classdesc Represents a ReqColorBetting.
     * @implements IReqColorBetting
     * @constructor
     * @param {IReqColorBetting=} [properties] Properties to set
     */
    function ReqColorBetting(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]];
    }

    /**
     * ReqColorBetting area.
     * @member {ColorBetArea} area
     * @memberof ReqColorBetting
     * @instance
     */
    ReqColorBetting.prototype.area = 0;

    /**
     * ReqColorBetting bet.
     * @member {Long} bet
     * @memberof ReqColorBetting
     * @instance
     */
    ReqColorBetting.prototype.bet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new ReqColorBetting instance using the specified properties.
     * @function create
     * @memberof ReqColorBetting
     * @static
     * @param {IReqColorBetting=} [properties] Properties to set
     * @returns {ReqColorBetting} ReqColorBetting instance
     */
    ReqColorBetting.create = function create(properties) {
        return new ReqColorBetting(properties);
    };

    /**
     * Encodes the specified ReqColorBetting message. Does not implicitly {@link ReqColorBetting.verify|verify} messages.
     * @function encode
     * @memberof ReqColorBetting
     * @static
     * @param {IReqColorBetting} message ReqColorBetting message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ReqColorBetting.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.area != null && Object.hasOwnProperty.call(message, "area"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.area);
        if (message.bet != null && Object.hasOwnProperty.call(message, "bet"))
            writer.uint32(/* id 2, wireType 0 =*/16).int64(message.bet);
        return writer;
    };

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

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

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

    /**
     * Verifies a ReqColorBetting message.
     * @function verify
     * @memberof ReqColorBetting
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ReqColorBetting.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.area != null && message.hasOwnProperty("area"))
            switch (message.area) {
            default:
                return "area: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
            case 15:
            case 16:
            case 17:
                break;
            }
        if (message.bet != null && message.hasOwnProperty("bet"))
            if (!$util.isInteger(message.bet) && !(message.bet && $util.isInteger(message.bet.low) && $util.isInteger(message.bet.high)))
                return "bet: integer|Long expected";
        return null;
    };

    /**
     * Creates a ReqColorBetting message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ReqColorBetting
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ReqColorBetting} ReqColorBetting
     */
    ReqColorBetting.fromObject = function fromObject(object) {
        if (object instanceof $root.ReqColorBetting)
            return object;
        var message = new $root.ReqColorBetting();
        switch (object.area) {
        default:
            if (typeof object.area === "number") {
                message.area = object.area;
                break;
            }
            break;
        case "CBA_Yellow":
        case 0:
            message.area = 0;
            break;
        case "CBA_White":
        case 1:
            message.area = 1;
            break;
        case "CBA_Pink":
        case 2:
            message.area = 2;
            break;
        case "CBA_Blue":
        case 3:
            message.area = 3;
            break;
        case "CBA_Red":
        case 4:
            message.area = 4;
            break;
        case "CBA_Green":
        case 5:
            message.area = 5;
            break;
        case "CBA_Yellow2":
        case 6:
            message.area = 6;
            break;
        case "CBA_White2":
        case 7:
            message.area = 7;
            break;
        case "CBA_Pink2":
        case 8:
            message.area = 8;
            break;
        case "CBA_Blue2":
        case 9:
            message.area = 9;
            break;
        case "CBA_Red2":
        case 10:
            message.area = 10;
            break;
        case "CBA_Green2":
        case 11:
            message.area = 11;
            break;
        case "CBA_Yellow3":
        case 12:
            message.area = 12;
            break;
        case "CBA_White3":
        case 13:
            message.area = 13;
            break;
        case "CBA_Pink3":
        case 14:
            message.area = 14;
            break;
        case "CBA_Blue3":
        case 15:
            message.area = 15;
            break;
        case "CBA_Red3":
        case 16:
            message.area = 16;
            break;
        case "CBA_Green3":
        case 17:
            message.area = 17;
            break;
        }
        if (object.bet != null)
            if ($util.Long)
                (message.bet = $util.Long.fromValue(object.bet)).unsigned = false;
            else if (typeof object.bet === "string")
                message.bet = parseInt(object.bet, 10);
            else if (typeof object.bet === "number")
                message.bet = object.bet;
            else if (typeof object.bet === "object")
                message.bet = new $util.LongBits(object.bet.low >>> 0, object.bet.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a ReqColorBetting message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ReqColorBetting
     * @static
     * @param {ReqColorBetting} message ReqColorBetting
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ReqColorBetting.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.area = options.enums === String ? "CBA_Yellow" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.bet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.bet = options.longs === String ? "0" : 0;
        }
        if (message.area != null && message.hasOwnProperty("area"))
            object.area = options.enums === String ? $root.ColorBetArea[message.area] === undefined ? message.area : $root.ColorBetArea[message.area] : message.area;
        if (message.bet != null && message.hasOwnProperty("bet"))
            if (typeof message.bet === "number")
                object.bet = options.longs === String ? String(message.bet) : message.bet;
            else
                object.bet = options.longs === String ? $util.Long.prototype.toString.call(message.bet) : options.longs === Number ? new $util.LongBits(message.bet.low >>> 0, message.bet.high >>> 0).toNumber() : message.bet;
        return object;
    };

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

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

    return ReqColorBetting;
})();

$root.RspColorBetting = (function() {

    /**
     * Properties of a RspColorBetting.
     * @exports IRspColorBetting
     * @interface IRspColorBetting
     * @property {ErrCode|null} [code] RspColorBetting code
     * @property {IColorBetAreaInfo|null} [areaInfo] RspColorBetting areaInfo
     */

    /**
     * Constructs a new RspColorBetting.
     * @exports RspColorBetting
     * @classdesc Represents a RspColorBetting.
     * @implements IRspColorBetting
     * @constructor
     * @param {IRspColorBetting=} [properties] Properties to set
     */
    function RspColorBetting(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]];
    }

    /**
     * RspColorBetting code.
     * @member {ErrCode} code
     * @memberof RspColorBetting
     * @instance
     */
    RspColorBetting.prototype.code = 0;

    /**
     * RspColorBetting areaInfo.
     * @member {IColorBetAreaInfo|null|undefined} areaInfo
     * @memberof RspColorBetting
     * @instance
     */
    RspColorBetting.prototype.areaInfo = null;

    /**
     * Creates a new RspColorBetting instance using the specified properties.
     * @function create
     * @memberof RspColorBetting
     * @static
     * @param {IRspColorBetting=} [properties] Properties to set
     * @returns {RspColorBetting} RspColorBetting instance
     */
    RspColorBetting.create = function create(properties) {
        return new RspColorBetting(properties);
    };

    /**
     * Encodes the specified RspColorBetting message. Does not implicitly {@link RspColorBetting.verify|verify} messages.
     * @function encode
     * @memberof RspColorBetting
     * @static
     * @param {IRspColorBetting} message RspColorBetting message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    RspColorBetting.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.code != null && Object.hasOwnProperty.call(message, "code"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code);
        if (message.areaInfo != null && Object.hasOwnProperty.call(message, "areaInfo"))
            $root.ColorBetAreaInfo.encode(message.areaInfo, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
        return writer;
    };

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

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

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

    /**
     * Verifies a RspColorBetting message.
     * @function verify
     * @memberof RspColorBetting
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    RspColorBetting.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.code != null && message.hasOwnProperty("code"))
            switch (message.code) {
            default:
                return "code: enum value expected";
            case 0:
            case 1:
            case 2:
            case 100:
            case 102:
            case 103:
            case 104:
            case 110:
            case 115:
            case 120:
            case 125:
            case 126:
            case 127:
            case 500:
            case 505:
                break;
            }
        if (message.areaInfo != null && message.hasOwnProperty("areaInfo")) {
            var error = $root.ColorBetAreaInfo.verify(message.areaInfo);
            if (error)
                return "areaInfo." + error;
        }
        return null;
    };

    /**
     * Creates a RspColorBetting message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof RspColorBetting
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {RspColorBetting} RspColorBetting
     */
    RspColorBetting.fromObject = function fromObject(object) {
        if (object instanceof $root.RspColorBetting)
            return object;
        var message = new $root.RspColorBetting();
        switch (object.code) {
        default:
            if (typeof object.code === "number") {
                message.code = object.code;
                break;
            }
            break;
        case "OK":
        case 0:
            message.code = 0;
            break;
        case "SystemErr":
        case 1:
            message.code = 1;
            break;
        case "ParamErr":
        case 2:
            message.code = 2;
            break;
        case "LoginDiffLoc":
        case 100:
            message.code = 100;
            break;
        case "LoginUserOrPwdErr":
        case 102:
            message.code = 102;
            break;
        case "AccountFrozen":
        case 103:
            message.code = 103;
            break;
        case "AccountBanned":
        case 104:
            message.code = 104;
            break;
        case "RegisterUserExist":
        case 110:
            message.code = 110;
            break;
        case "VersionTooLow":
        case 115:
            message.code = 115;
            break;
        case "Maintain":
        case 120:
            message.code = 120;
            break;
        case "GoldNotEnough":
        case 125:
            message.code = 125;
            break;
        case "NotBetCount":
        case 126:
            message.code = 126;
            break;
        case "NotLeaveRoom":
        case 127:
            message.code = 127;
            break;
        case "TotalBetExceedsLimit":
        case 500:
            message.code = 500;
            break;
        case "AreaBetExceedsLimit":
        case 505:
            message.code = 505;
            break;
        }
        if (object.areaInfo != null) {
            if (typeof object.areaInfo !== "object")
                throw TypeError(".RspColorBetting.areaInfo: object expected");
            message.areaInfo = $root.ColorBetAreaInfo.fromObject(object.areaInfo);
        }
        return message;
    };

    /**
     * Creates a plain object from a RspColorBetting message. Also converts values to other types if specified.
     * @function toObject
     * @memberof RspColorBetting
     * @static
     * @param {RspColorBetting} message RspColorBetting
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    RspColorBetting.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.code = options.enums === String ? "OK" : 0;
            object.areaInfo = null;
        }
        if (message.code != null && message.hasOwnProperty("code"))
            object.code = options.enums === String ? $root.ErrCode[message.code] === undefined ? message.code : $root.ErrCode[message.code] : message.code;
        if (message.areaInfo != null && message.hasOwnProperty("areaInfo"))
            object.areaInfo = $root.ColorBetAreaInfo.toObject(message.areaInfo, options);
        return object;
    };

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

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

    return RspColorBetting;
})();

$root.ColorBetAreaInfo = (function() {

    /**
     * Properties of a ColorBetAreaInfo.
     * @exports IColorBetAreaInfo
     * @interface IColorBetAreaInfo
     * @property {ColorBetArea|null} [area] ColorBetAreaInfo area
     * @property {Long|null} [totalBet] ColorBetAreaInfo totalBet
     * @property {number|null} [playerNum] ColorBetAreaInfo playerNum
     * @property {Long|null} [myBet] ColorBetAreaInfo myBet
     */

    /**
     * Constructs a new ColorBetAreaInfo.
     * @exports ColorBetAreaInfo
     * @classdesc Represents a ColorBetAreaInfo.
     * @implements IColorBetAreaInfo
     * @constructor
     * @param {IColorBetAreaInfo=} [properties] Properties to set
     */
    function ColorBetAreaInfo(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]];
    }

    /**
     * ColorBetAreaInfo area.
     * @member {ColorBetArea} area
     * @memberof ColorBetAreaInfo
     * @instance
     */
    ColorBetAreaInfo.prototype.area = 0;

    /**
     * ColorBetAreaInfo totalBet.
     * @member {Long} totalBet
     * @memberof ColorBetAreaInfo
     * @instance
     */
    ColorBetAreaInfo.prototype.totalBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * ColorBetAreaInfo playerNum.
     * @member {number} playerNum
     * @memberof ColorBetAreaInfo
     * @instance
     */
    ColorBetAreaInfo.prototype.playerNum = 0;

    /**
     * ColorBetAreaInfo myBet.
     * @member {Long} myBet
     * @memberof ColorBetAreaInfo
     * @instance
     */
    ColorBetAreaInfo.prototype.myBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new ColorBetAreaInfo instance using the specified properties.
     * @function create
     * @memberof ColorBetAreaInfo
     * @static
     * @param {IColorBetAreaInfo=} [properties] Properties to set
     * @returns {ColorBetAreaInfo} ColorBetAreaInfo instance
     */
    ColorBetAreaInfo.create = function create(properties) {
        return new ColorBetAreaInfo(properties);
    };

    /**
     * Encodes the specified ColorBetAreaInfo message. Does not implicitly {@link ColorBetAreaInfo.verify|verify} messages.
     * @function encode
     * @memberof ColorBetAreaInfo
     * @static
     * @param {IColorBetAreaInfo} message ColorBetAreaInfo message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorBetAreaInfo.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.area != null && Object.hasOwnProperty.call(message, "area"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.area);
        if (message.totalBet != null && Object.hasOwnProperty.call(message, "totalBet"))
            writer.uint32(/* id 2, wireType 0 =*/16).int64(message.totalBet);
        if (message.playerNum != null && Object.hasOwnProperty.call(message, "playerNum"))
            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.playerNum);
        if (message.myBet != null && Object.hasOwnProperty.call(message, "myBet"))
            writer.uint32(/* id 4, wireType 0 =*/32).int64(message.myBet);
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorBetAreaInfo message.
     * @function verify
     * @memberof ColorBetAreaInfo
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorBetAreaInfo.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.area != null && message.hasOwnProperty("area"))
            switch (message.area) {
            default:
                return "area: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
            case 15:
            case 16:
            case 17:
                break;
            }
        if (message.totalBet != null && message.hasOwnProperty("totalBet"))
            if (!$util.isInteger(message.totalBet) && !(message.totalBet && $util.isInteger(message.totalBet.low) && $util.isInteger(message.totalBet.high)))
                return "totalBet: integer|Long expected";
        if (message.playerNum != null && message.hasOwnProperty("playerNum"))
            if (!$util.isInteger(message.playerNum))
                return "playerNum: integer expected";
        if (message.myBet != null && message.hasOwnProperty("myBet"))
            if (!$util.isInteger(message.myBet) && !(message.myBet && $util.isInteger(message.myBet.low) && $util.isInteger(message.myBet.high)))
                return "myBet: integer|Long expected";
        return null;
    };

    /**
     * Creates a ColorBetAreaInfo message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorBetAreaInfo
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorBetAreaInfo} ColorBetAreaInfo
     */
    ColorBetAreaInfo.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorBetAreaInfo)
            return object;
        var message = new $root.ColorBetAreaInfo();
        switch (object.area) {
        default:
            if (typeof object.area === "number") {
                message.area = object.area;
                break;
            }
            break;
        case "CBA_Yellow":
        case 0:
            message.area = 0;
            break;
        case "CBA_White":
        case 1:
            message.area = 1;
            break;
        case "CBA_Pink":
        case 2:
            message.area = 2;
            break;
        case "CBA_Blue":
        case 3:
            message.area = 3;
            break;
        case "CBA_Red":
        case 4:
            message.area = 4;
            break;
        case "CBA_Green":
        case 5:
            message.area = 5;
            break;
        case "CBA_Yellow2":
        case 6:
            message.area = 6;
            break;
        case "CBA_White2":
        case 7:
            message.area = 7;
            break;
        case "CBA_Pink2":
        case 8:
            message.area = 8;
            break;
        case "CBA_Blue2":
        case 9:
            message.area = 9;
            break;
        case "CBA_Red2":
        case 10:
            message.area = 10;
            break;
        case "CBA_Green2":
        case 11:
            message.area = 11;
            break;
        case "CBA_Yellow3":
        case 12:
            message.area = 12;
            break;
        case "CBA_White3":
        case 13:
            message.area = 13;
            break;
        case "CBA_Pink3":
        case 14:
            message.area = 14;
            break;
        case "CBA_Blue3":
        case 15:
            message.area = 15;
            break;
        case "CBA_Red3":
        case 16:
            message.area = 16;
            break;
        case "CBA_Green3":
        case 17:
            message.area = 17;
            break;
        }
        if (object.totalBet != null)
            if ($util.Long)
                (message.totalBet = $util.Long.fromValue(object.totalBet)).unsigned = false;
            else if (typeof object.totalBet === "string")
                message.totalBet = parseInt(object.totalBet, 10);
            else if (typeof object.totalBet === "number")
                message.totalBet = object.totalBet;
            else if (typeof object.totalBet === "object")
                message.totalBet = new $util.LongBits(object.totalBet.low >>> 0, object.totalBet.high >>> 0).toNumber();
        if (object.playerNum != null)
            message.playerNum = object.playerNum | 0;
        if (object.myBet != null)
            if ($util.Long)
                (message.myBet = $util.Long.fromValue(object.myBet)).unsigned = false;
            else if (typeof object.myBet === "string")
                message.myBet = parseInt(object.myBet, 10);
            else if (typeof object.myBet === "number")
                message.myBet = object.myBet;
            else if (typeof object.myBet === "object")
                message.myBet = new $util.LongBits(object.myBet.low >>> 0, object.myBet.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a ColorBetAreaInfo message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorBetAreaInfo
     * @static
     * @param {ColorBetAreaInfo} message ColorBetAreaInfo
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorBetAreaInfo.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.area = options.enums === String ? "CBA_Yellow" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.totalBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.totalBet = options.longs === String ? "0" : 0;
            object.playerNum = 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.myBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.myBet = options.longs === String ? "0" : 0;
        }
        if (message.area != null && message.hasOwnProperty("area"))
            object.area = options.enums === String ? $root.ColorBetArea[message.area] === undefined ? message.area : $root.ColorBetArea[message.area] : message.area;
        if (message.totalBet != null && message.hasOwnProperty("totalBet"))
            if (typeof message.totalBet === "number")
                object.totalBet = options.longs === String ? String(message.totalBet) : message.totalBet;
            else
                object.totalBet = options.longs === String ? $util.Long.prototype.toString.call(message.totalBet) : options.longs === Number ? new $util.LongBits(message.totalBet.low >>> 0, message.totalBet.high >>> 0).toNumber() : message.totalBet;
        if (message.playerNum != null && message.hasOwnProperty("playerNum"))
            object.playerNum = message.playerNum;
        if (message.myBet != null && message.hasOwnProperty("myBet"))
            if (typeof message.myBet === "number")
                object.myBet = options.longs === String ? String(message.myBet) : message.myBet;
            else
                object.myBet = options.longs === String ? $util.Long.prototype.toString.call(message.myBet) : options.longs === Number ? new $util.LongBits(message.myBet.low >>> 0, message.myBet.high >>> 0).toNumber() : message.myBet;
        return object;
    };

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

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

    return ColorBetAreaInfo;
})();

$root.NtfColorBetAreaInfo = (function() {

    /**
     * Properties of a NtfColorBetAreaInfo.
     * @exports INtfColorBetAreaInfo
     * @interface INtfColorBetAreaInfo
     * @property {Array.<IColorBetAreaInfo>|null} [areaInfos] NtfColorBetAreaInfo areaInfos
     */

    /**
     * Constructs a new NtfColorBetAreaInfo.
     * @exports NtfColorBetAreaInfo
     * @classdesc Represents a NtfColorBetAreaInfo.
     * @implements INtfColorBetAreaInfo
     * @constructor
     * @param {INtfColorBetAreaInfo=} [properties] Properties to set
     */
    function NtfColorBetAreaInfo(properties) {
        this.areaInfos = [];
        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]];
    }

    /**
     * NtfColorBetAreaInfo areaInfos.
     * @member {Array.<IColorBetAreaInfo>} areaInfos
     * @memberof NtfColorBetAreaInfo
     * @instance
     */
    NtfColorBetAreaInfo.prototype.areaInfos = $util.emptyArray;

    /**
     * Creates a new NtfColorBetAreaInfo instance using the specified properties.
     * @function create
     * @memberof NtfColorBetAreaInfo
     * @static
     * @param {INtfColorBetAreaInfo=} [properties] Properties to set
     * @returns {NtfColorBetAreaInfo} NtfColorBetAreaInfo instance
     */
    NtfColorBetAreaInfo.create = function create(properties) {
        return new NtfColorBetAreaInfo(properties);
    };

    /**
     * Encodes the specified NtfColorBetAreaInfo message. Does not implicitly {@link NtfColorBetAreaInfo.verify|verify} messages.
     * @function encode
     * @memberof NtfColorBetAreaInfo
     * @static
     * @param {INtfColorBetAreaInfo} message NtfColorBetAreaInfo message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorBetAreaInfo.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.areaInfos != null && message.areaInfos.length)
            for (var i = 0; i < message.areaInfos.length; ++i)
                $root.ColorBetAreaInfo.encode(message.areaInfos[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

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

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

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

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

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

    return NtfColorBetAreaInfo;
})();

/**
 * ColorPrizeType enum.
 * @exports ColorPrizeType
 * @enum {number}
 * @property {number} CPT_Normal=0 CPT_Normal value
 * @property {number} CPT_Big=1 CPT_Big value
 * @property {number} CPT_Jackpot=2 CPT_Jackpot value
 */
$root.ColorPrizeType = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "CPT_Normal"] = 0;
    values[valuesById[1] = "CPT_Big"] = 1;
    values[valuesById[2] = "CPT_Jackpot"] = 2;
    return values;
})();

$root.ColorBetAreaMul = (function() {

    /**
     * Properties of a ColorBetAreaMul.
     * @exports IColorBetAreaMul
     * @interface IColorBetAreaMul
     * @property {ColorBetArea|null} [area] ColorBetAreaMul area
     * @property {ColorPrizeArea|null} [prizeArea] ColorBetAreaMul prizeArea
     * @property {ColorPrizeType|null} [prizeType] ColorBetAreaMul prizeType
     * @property {Long|null} [mul] ColorBetAreaMul mul
     */

    /**
     * Constructs a new ColorBetAreaMul.
     * @exports ColorBetAreaMul
     * @classdesc Represents a ColorBetAreaMul.
     * @implements IColorBetAreaMul
     * @constructor
     * @param {IColorBetAreaMul=} [properties] Properties to set
     */
    function ColorBetAreaMul(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]];
    }

    /**
     * ColorBetAreaMul area.
     * @member {ColorBetArea} area
     * @memberof ColorBetAreaMul
     * @instance
     */
    ColorBetAreaMul.prototype.area = 0;

    /**
     * ColorBetAreaMul prizeArea.
     * @member {ColorPrizeArea} prizeArea
     * @memberof ColorBetAreaMul
     * @instance
     */
    ColorBetAreaMul.prototype.prizeArea = 0;

    /**
     * ColorBetAreaMul prizeType.
     * @member {ColorPrizeType} prizeType
     * @memberof ColorBetAreaMul
     * @instance
     */
    ColorBetAreaMul.prototype.prizeType = 0;

    /**
     * ColorBetAreaMul mul.
     * @member {Long} mul
     * @memberof ColorBetAreaMul
     * @instance
     */
    ColorBetAreaMul.prototype.mul = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new ColorBetAreaMul instance using the specified properties.
     * @function create
     * @memberof ColorBetAreaMul
     * @static
     * @param {IColorBetAreaMul=} [properties] Properties to set
     * @returns {ColorBetAreaMul} ColorBetAreaMul instance
     */
    ColorBetAreaMul.create = function create(properties) {
        return new ColorBetAreaMul(properties);
    };

    /**
     * Encodes the specified ColorBetAreaMul message. Does not implicitly {@link ColorBetAreaMul.verify|verify} messages.
     * @function encode
     * @memberof ColorBetAreaMul
     * @static
     * @param {IColorBetAreaMul} message ColorBetAreaMul message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorBetAreaMul.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.area != null && Object.hasOwnProperty.call(message, "area"))
            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.area);
        if (message.prizeArea != null && Object.hasOwnProperty.call(message, "prizeArea"))
            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.prizeArea);
        if (message.prizeType != null && Object.hasOwnProperty.call(message, "prizeType"))
            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.prizeType);
        if (message.mul != null && Object.hasOwnProperty.call(message, "mul"))
            writer.uint32(/* id 4, wireType 0 =*/32).int64(message.mul);
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorBetAreaMul message.
     * @function verify
     * @memberof ColorBetAreaMul
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorBetAreaMul.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.area != null && message.hasOwnProperty("area"))
            switch (message.area) {
            default:
                return "area: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
            case 15:
            case 16:
            case 17:
                break;
            }
        if (message.prizeArea != null && message.hasOwnProperty("prizeArea"))
            switch (message.prizeArea) {
            default:
                return "prizeArea: enum value expected";
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
                break;
            }
        if (message.prizeType != null && message.hasOwnProperty("prizeType"))
            switch (message.prizeType) {
            default:
                return "prizeType: enum value expected";
            case 0:
            case 1:
            case 2:
                break;
            }
        if (message.mul != null && message.hasOwnProperty("mul"))
            if (!$util.isInteger(message.mul) && !(message.mul && $util.isInteger(message.mul.low) && $util.isInteger(message.mul.high)))
                return "mul: integer|Long expected";
        return null;
    };

    /**
     * Creates a ColorBetAreaMul message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorBetAreaMul
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorBetAreaMul} ColorBetAreaMul
     */
    ColorBetAreaMul.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorBetAreaMul)
            return object;
        var message = new $root.ColorBetAreaMul();
        switch (object.area) {
        default:
            if (typeof object.area === "number") {
                message.area = object.area;
                break;
            }
            break;
        case "CBA_Yellow":
        case 0:
            message.area = 0;
            break;
        case "CBA_White":
        case 1:
            message.area = 1;
            break;
        case "CBA_Pink":
        case 2:
            message.area = 2;
            break;
        case "CBA_Blue":
        case 3:
            message.area = 3;
            break;
        case "CBA_Red":
        case 4:
            message.area = 4;
            break;
        case "CBA_Green":
        case 5:
            message.area = 5;
            break;
        case "CBA_Yellow2":
        case 6:
            message.area = 6;
            break;
        case "CBA_White2":
        case 7:
            message.area = 7;
            break;
        case "CBA_Pink2":
        case 8:
            message.area = 8;
            break;
        case "CBA_Blue2":
        case 9:
            message.area = 9;
            break;
        case "CBA_Red2":
        case 10:
            message.area = 10;
            break;
        case "CBA_Green2":
        case 11:
            message.area = 11;
            break;
        case "CBA_Yellow3":
        case 12:
            message.area = 12;
            break;
        case "CBA_White3":
        case 13:
            message.area = 13;
            break;
        case "CBA_Pink3":
        case 14:
            message.area = 14;
            break;
        case "CBA_Blue3":
        case 15:
            message.area = 15;
            break;
        case "CBA_Red3":
        case 16:
            message.area = 16;
            break;
        case "CBA_Green3":
        case 17:
            message.area = 17;
            break;
        }
        switch (object.prizeArea) {
        default:
            if (typeof object.prizeArea === "number") {
                message.prizeArea = object.prizeArea;
                break;
            }
            break;
        case "CPA_Single_0":
        case 0:
            message.prizeArea = 0;
            break;
        case "CPA_Single_1":
        case 1:
            message.prizeArea = 1;
            break;
        case "CPA_Single_2":
        case 2:
            message.prizeArea = 2;
            break;
        case "CPA_Double":
        case 3:
            message.prizeArea = 3;
            break;
        case "CPA_Three":
        case 4:
            message.prizeArea = 4;
            break;
        }
        switch (object.prizeType) {
        default:
            if (typeof object.prizeType === "number") {
                message.prizeType = object.prizeType;
                break;
            }
            break;
        case "CPT_Normal":
        case 0:
            message.prizeType = 0;
            break;
        case "CPT_Big":
        case 1:
            message.prizeType = 1;
            break;
        case "CPT_Jackpot":
        case 2:
            message.prizeType = 2;
            break;
        }
        if (object.mul != null)
            if ($util.Long)
                (message.mul = $util.Long.fromValue(object.mul)).unsigned = false;
            else if (typeof object.mul === "string")
                message.mul = parseInt(object.mul, 10);
            else if (typeof object.mul === "number")
                message.mul = object.mul;
            else if (typeof object.mul === "object")
                message.mul = new $util.LongBits(object.mul.low >>> 0, object.mul.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a ColorBetAreaMul message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorBetAreaMul
     * @static
     * @param {ColorBetAreaMul} message ColorBetAreaMul
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorBetAreaMul.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.area = options.enums === String ? "CBA_Yellow" : 0;
            object.prizeArea = options.enums === String ? "CPA_Single_0" : 0;
            object.prizeType = options.enums === String ? "CPT_Normal" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.mul = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.mul = options.longs === String ? "0" : 0;
        }
        if (message.area != null && message.hasOwnProperty("area"))
            object.area = options.enums === String ? $root.ColorBetArea[message.area] === undefined ? message.area : $root.ColorBetArea[message.area] : message.area;
        if (message.prizeArea != null && message.hasOwnProperty("prizeArea"))
            object.prizeArea = options.enums === String ? $root.ColorPrizeArea[message.prizeArea] === undefined ? message.prizeArea : $root.ColorPrizeArea[message.prizeArea] : message.prizeArea;
        if (message.prizeType != null && message.hasOwnProperty("prizeType"))
            object.prizeType = options.enums === String ? $root.ColorPrizeType[message.prizeType] === undefined ? message.prizeType : $root.ColorPrizeType[message.prizeType] : message.prizeType;
        if (message.mul != null && message.hasOwnProperty("mul"))
            if (typeof message.mul === "number")
                object.mul = options.longs === String ? String(message.mul) : message.mul;
            else
                object.mul = options.longs === String ? $util.Long.prototype.toString.call(message.mul) : options.longs === Number ? new $util.LongBits(message.mul.low >>> 0, message.mul.high >>> 0).toNumber() : message.mul;
        return object;
    };

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

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

    return ColorBetAreaMul;
})();

$root.NtfColorEndBetting = (function() {

    /**
     * Properties of a NtfColorEndBetting.
     * @exports INtfColorEndBetting
     * @interface INtfColorEndBetting
     * @property {Long|null} [endTime] NtfColorEndBetting endTime
     * @property {Array.<IColorBetAreaMul>|null} [areaMul] NtfColorEndBetting areaMul
     * @property {Long|null} [jackpot] NtfColorEndBetting jackpot
     */

    /**
     * Constructs a new NtfColorEndBetting.
     * @exports NtfColorEndBetting
     * @classdesc Represents a NtfColorEndBetting.
     * @implements INtfColorEndBetting
     * @constructor
     * @param {INtfColorEndBetting=} [properties] Properties to set
     */
    function NtfColorEndBetting(properties) {
        this.areaMul = [];
        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]];
    }

    /**
     * NtfColorEndBetting endTime.
     * @member {Long} endTime
     * @memberof NtfColorEndBetting
     * @instance
     */
    NtfColorEndBetting.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorEndBetting areaMul.
     * @member {Array.<IColorBetAreaMul>} areaMul
     * @memberof NtfColorEndBetting
     * @instance
     */
    NtfColorEndBetting.prototype.areaMul = $util.emptyArray;

    /**
     * NtfColorEndBetting jackpot.
     * @member {Long} jackpot
     * @memberof NtfColorEndBetting
     * @instance
     */
    NtfColorEndBetting.prototype.jackpot = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new NtfColorEndBetting instance using the specified properties.
     * @function create
     * @memberof NtfColorEndBetting
     * @static
     * @param {INtfColorEndBetting=} [properties] Properties to set
     * @returns {NtfColorEndBetting} NtfColorEndBetting instance
     */
    NtfColorEndBetting.create = function create(properties) {
        return new NtfColorEndBetting(properties);
    };

    /**
     * Encodes the specified NtfColorEndBetting message. Does not implicitly {@link NtfColorEndBetting.verify|verify} messages.
     * @function encode
     * @memberof NtfColorEndBetting
     * @static
     * @param {INtfColorEndBetting} message NtfColorEndBetting message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorEndBetting.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.endTime);
        if (message.areaMul != null && message.areaMul.length)
            for (var i = 0; i < message.areaMul.length; ++i)
                $root.ColorBetAreaMul.encode(message.areaMul[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
        if (message.jackpot != null && Object.hasOwnProperty.call(message, "jackpot"))
            writer.uint32(/* id 3, wireType 0 =*/24).int64(message.jackpot);
        return writer;
    };

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

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

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

    /**
     * Verifies a NtfColorEndBetting message.
     * @function verify
     * @memberof NtfColorEndBetting
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorEndBetting.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))
                return "endTime: integer|Long expected";
        if (message.areaMul != null && message.hasOwnProperty("areaMul")) {
            if (!Array.isArray(message.areaMul))
                return "areaMul: array expected";
            for (var i = 0; i < message.areaMul.length; ++i) {
                var error = $root.ColorBetAreaMul.verify(message.areaMul[i]);
                if (error)
                    return "areaMul." + error;
            }
        }
        if (message.jackpot != null && message.hasOwnProperty("jackpot"))
            if (!$util.isInteger(message.jackpot) && !(message.jackpot && $util.isInteger(message.jackpot.low) && $util.isInteger(message.jackpot.high)))
                return "jackpot: integer|Long expected";
        return null;
    };

    /**
     * Creates a NtfColorEndBetting message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorEndBetting
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorEndBetting} NtfColorEndBetting
     */
    NtfColorEndBetting.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorEndBetting)
            return object;
        var message = new $root.NtfColorEndBetting();
        if (object.endTime != null)
            if ($util.Long)
                (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;
            else if (typeof object.endTime === "string")
                message.endTime = parseInt(object.endTime, 10);
            else if (typeof object.endTime === "number")
                message.endTime = object.endTime;
            else if (typeof object.endTime === "object")
                message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();
        if (object.areaMul) {
            if (!Array.isArray(object.areaMul))
                throw TypeError(".NtfColorEndBetting.areaMul: array expected");
            message.areaMul = [];
            for (var i = 0; i < object.areaMul.length; ++i) {
                if (typeof object.areaMul[i] !== "object")
                    throw TypeError(".NtfColorEndBetting.areaMul: object expected");
                message.areaMul[i] = $root.ColorBetAreaMul.fromObject(object.areaMul[i]);
            }
        }
        if (object.jackpot != null)
            if ($util.Long)
                (message.jackpot = $util.Long.fromValue(object.jackpot)).unsigned = false;
            else if (typeof object.jackpot === "string")
                message.jackpot = parseInt(object.jackpot, 10);
            else if (typeof object.jackpot === "number")
                message.jackpot = object.jackpot;
            else if (typeof object.jackpot === "object")
                message.jackpot = new $util.LongBits(object.jackpot.low >>> 0, object.jackpot.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a NtfColorEndBetting message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorEndBetting
     * @static
     * @param {NtfColorEndBetting} message NtfColorEndBetting
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorEndBetting.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.arrays || options.defaults)
            object.areaMul = [];
        if (options.defaults) {
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.endTime = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.jackpot = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.jackpot = options.longs === String ? "0" : 0;
        }
        if (message.endTime != null && message.hasOwnProperty("endTime"))
            if (typeof message.endTime === "number")
                object.endTime = options.longs === String ? String(message.endTime) : message.endTime;
            else
                object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;
        if (message.areaMul && message.areaMul.length) {
            object.areaMul = [];
            for (var j = 0; j < message.areaMul.length; ++j)
                object.areaMul[j] = $root.ColorBetAreaMul.toObject(message.areaMul[j], options);
        }
        if (message.jackpot != null && message.hasOwnProperty("jackpot"))
            if (typeof message.jackpot === "number")
                object.jackpot = options.longs === String ? String(message.jackpot) : message.jackpot;
            else
                object.jackpot = options.longs === String ? $util.Long.prototype.toString.call(message.jackpot) : options.longs === Number ? new $util.LongBits(message.jackpot.low >>> 0, message.jackpot.high >>> 0).toNumber() : message.jackpot;
        return object;
    };

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

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

    return NtfColorEndBetting;
})();

$root.NtfColorOpenThreeDice = (function() {

    /**
     * Properties of a NtfColorOpenThreeDice.
     * @exports INtfColorOpenThreeDice
     * @interface INtfColorOpenThreeDice
     * @property {Array.<ColorType>|null} [color] NtfColorOpenThreeDice color
     * @property {number|null} [aniRouteIndex] NtfColorOpenThreeDice aniRouteIndex
     * @property {Array.<ColorBetArea>|null} [winArea] NtfColorOpenThreeDice winArea
     */

    /**
     * Constructs a new NtfColorOpenThreeDice.
     * @exports NtfColorOpenThreeDice
     * @classdesc Represents a NtfColorOpenThreeDice.
     * @implements INtfColorOpenThreeDice
     * @constructor
     * @param {INtfColorOpenThreeDice=} [properties] Properties to set
     */
    function NtfColorOpenThreeDice(properties) {
        this.color = [];
        this.winArea = [];
        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]];
    }

    /**
     * NtfColorOpenThreeDice color.
     * @member {Array.<ColorType>} color
     * @memberof NtfColorOpenThreeDice
     * @instance
     */
    NtfColorOpenThreeDice.prototype.color = $util.emptyArray;

    /**
     * NtfColorOpenThreeDice aniRouteIndex.
     * @member {number} aniRouteIndex
     * @memberof NtfColorOpenThreeDice
     * @instance
     */
    NtfColorOpenThreeDice.prototype.aniRouteIndex = 0;

    /**
     * NtfColorOpenThreeDice winArea.
     * @member {Array.<ColorBetArea>} winArea
     * @memberof NtfColorOpenThreeDice
     * @instance
     */
    NtfColorOpenThreeDice.prototype.winArea = $util.emptyArray;

    /**
     * Creates a new NtfColorOpenThreeDice instance using the specified properties.
     * @function create
     * @memberof NtfColorOpenThreeDice
     * @static
     * @param {INtfColorOpenThreeDice=} [properties] Properties to set
     * @returns {NtfColorOpenThreeDice} NtfColorOpenThreeDice instance
     */
    NtfColorOpenThreeDice.create = function create(properties) {
        return new NtfColorOpenThreeDice(properties);
    };

    /**
     * Encodes the specified NtfColorOpenThreeDice message. Does not implicitly {@link NtfColorOpenThreeDice.verify|verify} messages.
     * @function encode
     * @memberof NtfColorOpenThreeDice
     * @static
     * @param {INtfColorOpenThreeDice} message NtfColorOpenThreeDice message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorOpenThreeDice.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.color != null && message.color.length) {
            writer.uint32(/* id 1, wireType 2 =*/10).fork();
            for (var i = 0; i < message.color.length; ++i)
                writer.int32(message.color[i]);
            writer.ldelim();
        }
        if (message.aniRouteIndex != null && Object.hasOwnProperty.call(message, "aniRouteIndex"))
            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.aniRouteIndex);
        if (message.winArea != null && message.winArea.length) {
            writer.uint32(/* id 4, wireType 2 =*/34).fork();
            for (var i = 0; i < message.winArea.length; ++i)
                writer.int32(message.winArea[i]);
            writer.ldelim();
        }
        return writer;
    };

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

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

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

    /**
     * Verifies a NtfColorOpenThreeDice message.
     * @function verify
     * @memberof NtfColorOpenThreeDice
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorOpenThreeDice.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.color != null && message.hasOwnProperty("color")) {
            if (!Array.isArray(message.color))
                return "color: array expected";
            for (var i = 0; i < message.color.length; ++i)
                switch (message.color[i]) {
                default:
                    return "color: enum value[] expected";
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    break;
                }
        }
        if (message.aniRouteIndex != null && message.hasOwnProperty("aniRouteIndex"))
            if (!$util.isInteger(message.aniRouteIndex))
                return "aniRouteIndex: integer expected";
        if (message.winArea != null && message.hasOwnProperty("winArea")) {
            if (!Array.isArray(message.winArea))
                return "winArea: array expected";
            for (var i = 0; i < message.winArea.length; ++i)
                switch (message.winArea[i]) {
                default:
                    return "winArea: enum value[] expected";
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                case 13:
                case 14:
                case 15:
                case 16:
                case 17:
                    break;
                }
        }
        return null;
    };

    /**
     * Creates a NtfColorOpenThreeDice message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorOpenThreeDice
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorOpenThreeDice} NtfColorOpenThreeDice
     */
    NtfColorOpenThreeDice.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorOpenThreeDice)
            return object;
        var message = new $root.NtfColorOpenThreeDice();
        if (object.color) {
            if (!Array.isArray(object.color))
                throw TypeError(".NtfColorOpenThreeDice.color: array expected");
            message.color = [];
            for (var i = 0; i < object.color.length; ++i)
                switch (object.color[i]) {
                default:
                    if (typeof object.color[i] === "number") {
                        message.color[i] = object.color[i];
                        break;
                    }
                case "CT_Yellow":
                case 0:
                    message.color[i] = 0;
                    break;
                case "CT_White":
                case 1:
                    message.color[i] = 1;
                    break;
                case "CT_Pink":
                case 2:
                    message.color[i] = 2;
                    break;
                case "CT_Blue":
                case 3:
                    message.color[i] = 3;
                    break;
                case "CT_Red":
                case 4:
                    message.color[i] = 4;
                    break;
                case "CT_Green":
                case 5:
                    message.color[i] = 5;
                    break;
                }
        }
        if (object.aniRouteIndex != null)
            message.aniRouteIndex = object.aniRouteIndex | 0;
        if (object.winArea) {
            if (!Array.isArray(object.winArea))
                throw TypeError(".NtfColorOpenThreeDice.winArea: array expected");
            message.winArea = [];
            for (var i = 0; i < object.winArea.length; ++i)
                switch (object.winArea[i]) {
                default:
                    if (typeof object.winArea[i] === "number") {
                        message.winArea[i] = object.winArea[i];
                        break;
                    }
                case "CBA_Yellow":
                case 0:
                    message.winArea[i] = 0;
                    break;
                case "CBA_White":
                case 1:
                    message.winArea[i] = 1;
                    break;
                case "CBA_Pink":
                case 2:
                    message.winArea[i] = 2;
                    break;
                case "CBA_Blue":
                case 3:
                    message.winArea[i] = 3;
                    break;
                case "CBA_Red":
                case 4:
                    message.winArea[i] = 4;
                    break;
                case "CBA_Green":
                case 5:
                    message.winArea[i] = 5;
                    break;
                case "CBA_Yellow2":
                case 6:
                    message.winArea[i] = 6;
                    break;
                case "CBA_White2":
                case 7:
                    message.winArea[i] = 7;
                    break;
                case "CBA_Pink2":
                case 8:
                    message.winArea[i] = 8;
                    break;
                case "CBA_Blue2":
                case 9:
                    message.winArea[i] = 9;
                    break;
                case "CBA_Red2":
                case 10:
                    message.winArea[i] = 10;
                    break;
                case "CBA_Green2":
                case 11:
                    message.winArea[i] = 11;
                    break;
                case "CBA_Yellow3":
                case 12:
                    message.winArea[i] = 12;
                    break;
                case "CBA_White3":
                case 13:
                    message.winArea[i] = 13;
                    break;
                case "CBA_Pink3":
                case 14:
                    message.winArea[i] = 14;
                    break;
                case "CBA_Blue3":
                case 15:
                    message.winArea[i] = 15;
                    break;
                case "CBA_Red3":
                case 16:
                    message.winArea[i] = 16;
                    break;
                case "CBA_Green3":
                case 17:
                    message.winArea[i] = 17;
                    break;
                }
        }
        return message;
    };

    /**
     * Creates a plain object from a NtfColorOpenThreeDice message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorOpenThreeDice
     * @static
     * @param {NtfColorOpenThreeDice} message NtfColorOpenThreeDice
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorOpenThreeDice.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.arrays || options.defaults) {
            object.color = [];
            object.winArea = [];
        }
        if (options.defaults)
            object.aniRouteIndex = 0;
        if (message.color && message.color.length) {
            object.color = [];
            for (var j = 0; j < message.color.length; ++j)
                object.color[j] = options.enums === String ? $root.ColorType[message.color[j]] === undefined ? message.color[j] : $root.ColorType[message.color[j]] : message.color[j];
        }
        if (message.aniRouteIndex != null && message.hasOwnProperty("aniRouteIndex"))
            object.aniRouteIndex = message.aniRouteIndex;
        if (message.winArea && message.winArea.length) {
            object.winArea = [];
            for (var j = 0; j < message.winArea.length; ++j)
                object.winArea[j] = options.enums === String ? $root.ColorBetArea[message.winArea[j]] === undefined ? message.winArea[j] : $root.ColorBetArea[message.winArea[j]] : message.winArea[j];
        }
        return object;
    };

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

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

    return NtfColorOpenThreeDice;
})();

$root.NtfColorSettle = (function() {

    /**
     * Properties of a NtfColorSettle.
     * @exports INtfColorSettle
     * @interface INtfColorSettle
     * @property {Array.<NtfColorSettle.IUserBetAreaMul>|null} [userAreaWin] NtfColorSettle userAreaWin
     * @property {Array.<ColorType>|null} [threeDice] NtfColorSettle threeDice
     * @property {Long|null} [totalWin] NtfColorSettle totalWin
     * @property {Long|null} [totalBet] NtfColorSettle totalBet
     * @property {Long|null} [totalWinBaseBet] NtfColorSettle totalWinBaseBet
     * @property {Long|null} [tax] NtfColorSettle tax
     */

    /**
     * Constructs a new NtfColorSettle.
     * @exports NtfColorSettle
     * @classdesc Represents a NtfColorSettle.
     * @implements INtfColorSettle
     * @constructor
     * @param {INtfColorSettle=} [properties] Properties to set
     */
    function NtfColorSettle(properties) {
        this.userAreaWin = [];
        this.threeDice = [];
        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]];
    }

    /**
     * NtfColorSettle userAreaWin.
     * @member {Array.<NtfColorSettle.IUserBetAreaMul>} userAreaWin
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.userAreaWin = $util.emptyArray;

    /**
     * NtfColorSettle threeDice.
     * @member {Array.<ColorType>} threeDice
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.threeDice = $util.emptyArray;

    /**
     * NtfColorSettle totalWin.
     * @member {Long} totalWin
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.totalWin = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorSettle totalBet.
     * @member {Long} totalBet
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.totalBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorSettle totalWinBaseBet.
     * @member {Long} totalWinBaseBet
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.totalWinBaseBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * NtfColorSettle tax.
     * @member {Long} tax
     * @memberof NtfColorSettle
     * @instance
     */
    NtfColorSettle.prototype.tax = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new NtfColorSettle instance using the specified properties.
     * @function create
     * @memberof NtfColorSettle
     * @static
     * @param {INtfColorSettle=} [properties] Properties to set
     * @returns {NtfColorSettle} NtfColorSettle instance
     */
    NtfColorSettle.create = function create(properties) {
        return new NtfColorSettle(properties);
    };

    /**
     * Encodes the specified NtfColorSettle message. Does not implicitly {@link NtfColorSettle.verify|verify} messages.
     * @function encode
     * @memberof NtfColorSettle
     * @static
     * @param {INtfColorSettle} message NtfColorSettle message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorSettle.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.userAreaWin != null && message.userAreaWin.length)
            for (var i = 0; i < message.userAreaWin.length; ++i)
                $root.NtfColorSettle.UserBetAreaMul.encode(message.userAreaWin[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        if (message.threeDice != null && message.threeDice.length) {
            writer.uint32(/* id 2, wireType 2 =*/18).fork();
            for (var i = 0; i < message.threeDice.length; ++i)
                writer.int32(message.threeDice[i]);
            writer.ldelim();
        }
        if (message.totalWin != null && Object.hasOwnProperty.call(message, "totalWin"))
            writer.uint32(/* id 3, wireType 0 =*/24).int64(message.totalWin);
        if (message.totalBet != null && Object.hasOwnProperty.call(message, "totalBet"))
            writer.uint32(/* id 4, wireType 0 =*/32).int64(message.totalBet);
        if (message.tax != null && Object.hasOwnProperty.call(message, "tax"))
            writer.uint32(/* id 5, wireType 0 =*/40).int64(message.tax);
        if (message.totalWinBaseBet != null && Object.hasOwnProperty.call(message, "totalWinBaseBet"))
            writer.uint32(/* id 6, wireType 0 =*/48).int64(message.totalWinBaseBet);
        return writer;
    };

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

    /**
     * Decodes a NtfColorSettle message from the specified reader or buffer.
     * @function decode
     * @memberof NtfColorSettle
     * @static
     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
     * @param {number} [length] Message length if known beforehand
     * @returns {NtfColorSettle} NtfColorSettle
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    NtfColorSettle.decode = function decode(reader, length, error) {
        if (!(reader instanceof $Reader))
            reader = $Reader.create(reader);
        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.NtfColorSettle();
        while (reader.pos < end) {
            var tag = reader.uint32();
            if (tag === error)
                break;
            switch (tag >>> 3) {
            case 1: {
                    if (!(message.userAreaWin && message.userAreaWin.length))
                        message.userAreaWin = [];
                    message.userAreaWin.push($root.NtfColorSettle.UserBetAreaMul.decode(reader, reader.uint32()));
                    break;
                }
            case 2: {
                    if (!(message.threeDice && message.threeDice.length))
                        message.threeDice = [];
                    if ((tag & 7) === 2) {
                        var end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2)
                            message.threeDice.push(reader.int32());
                    } else
                        message.threeDice.push(reader.int32());
                    break;
                }
            case 3: {
                    message.totalWin = reader.int64();
                    break;
                }
            case 4: {
                    message.totalBet = reader.int64();
                    break;
                }
            case 6: {
                    message.totalWinBaseBet = reader.int64();
                    break;
                }
            case 5: {
                    message.tax = reader.int64();
                    break;
                }
            default:
                reader.skipType(tag & 7);
                break;
            }
        }
        return message;
    };

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

    /**
     * Verifies a NtfColorSettle message.
     * @function verify
     * @memberof NtfColorSettle
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorSettle.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.userAreaWin != null && message.hasOwnProperty("userAreaWin")) {
            if (!Array.isArray(message.userAreaWin))
                return "userAreaWin: array expected";
            for (var i = 0; i < message.userAreaWin.length; ++i) {
                var error = $root.NtfColorSettle.UserBetAreaMul.verify(message.userAreaWin[i]);
                if (error)
                    return "userAreaWin." + error;
            }
        }
        if (message.threeDice != null && message.hasOwnProperty("threeDice")) {
            if (!Array.isArray(message.threeDice))
                return "threeDice: array expected";
            for (var i = 0; i < message.threeDice.length; ++i)
                switch (message.threeDice[i]) {
                default:
                    return "threeDice: enum value[] expected";
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    break;
                }
        }
        if (message.totalWin != null && message.hasOwnProperty("totalWin"))
            if (!$util.isInteger(message.totalWin) && !(message.totalWin && $util.isInteger(message.totalWin.low) && $util.isInteger(message.totalWin.high)))
                return "totalWin: integer|Long expected";
        if (message.totalBet != null && message.hasOwnProperty("totalBet"))
            if (!$util.isInteger(message.totalBet) && !(message.totalBet && $util.isInteger(message.totalBet.low) && $util.isInteger(message.totalBet.high)))
                return "totalBet: integer|Long expected";
        if (message.totalWinBaseBet != null && message.hasOwnProperty("totalWinBaseBet"))
            if (!$util.isInteger(message.totalWinBaseBet) && !(message.totalWinBaseBet && $util.isInteger(message.totalWinBaseBet.low) && $util.isInteger(message.totalWinBaseBet.high)))
                return "totalWinBaseBet: integer|Long expected";
        if (message.tax != null && message.hasOwnProperty("tax"))
            if (!$util.isInteger(message.tax) && !(message.tax && $util.isInteger(message.tax.low) && $util.isInteger(message.tax.high)))
                return "tax: integer|Long expected";
        return null;
    };

    /**
     * Creates a NtfColorSettle message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorSettle
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorSettle} NtfColorSettle
     */
    NtfColorSettle.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorSettle)
            return object;
        var message = new $root.NtfColorSettle();
        if (object.userAreaWin) {
            if (!Array.isArray(object.userAreaWin))
                throw TypeError(".NtfColorSettle.userAreaWin: array expected");
            message.userAreaWin = [];
            for (var i = 0; i < object.userAreaWin.length; ++i) {
                if (typeof object.userAreaWin[i] !== "object")
                    throw TypeError(".NtfColorSettle.userAreaWin: object expected");
                message.userAreaWin[i] = $root.NtfColorSettle.UserBetAreaMul.fromObject(object.userAreaWin[i]);
            }
        }
        if (object.threeDice) {
            if (!Array.isArray(object.threeDice))
                throw TypeError(".NtfColorSettle.threeDice: array expected");
            message.threeDice = [];
            for (var i = 0; i < object.threeDice.length; ++i)
                switch (object.threeDice[i]) {
                default:
                    if (typeof object.threeDice[i] === "number") {
                        message.threeDice[i] = object.threeDice[i];
                        break;
                    }
                case "CT_Yellow":
                case 0:
                    message.threeDice[i] = 0;
                    break;
                case "CT_White":
                case 1:
                    message.threeDice[i] = 1;
                    break;
                case "CT_Pink":
                case 2:
                    message.threeDice[i] = 2;
                    break;
                case "CT_Blue":
                case 3:
                    message.threeDice[i] = 3;
                    break;
                case "CT_Red":
                case 4:
                    message.threeDice[i] = 4;
                    break;
                case "CT_Green":
                case 5:
                    message.threeDice[i] = 5;
                    break;
                }
        }
        if (object.totalWin != null)
            if ($util.Long)
                (message.totalWin = $util.Long.fromValue(object.totalWin)).unsigned = false;
            else if (typeof object.totalWin === "string")
                message.totalWin = parseInt(object.totalWin, 10);
            else if (typeof object.totalWin === "number")
                message.totalWin = object.totalWin;
            else if (typeof object.totalWin === "object")
                message.totalWin = new $util.LongBits(object.totalWin.low >>> 0, object.totalWin.high >>> 0).toNumber();
        if (object.totalBet != null)
            if ($util.Long)
                (message.totalBet = $util.Long.fromValue(object.totalBet)).unsigned = false;
            else if (typeof object.totalBet === "string")
                message.totalBet = parseInt(object.totalBet, 10);
            else if (typeof object.totalBet === "number")
                message.totalBet = object.totalBet;
            else if (typeof object.totalBet === "object")
                message.totalBet = new $util.LongBits(object.totalBet.low >>> 0, object.totalBet.high >>> 0).toNumber();
        if (object.totalWinBaseBet != null)
            if ($util.Long)
                (message.totalWinBaseBet = $util.Long.fromValue(object.totalWinBaseBet)).unsigned = false;
            else if (typeof object.totalWinBaseBet === "string")
                message.totalWinBaseBet = parseInt(object.totalWinBaseBet, 10);
            else if (typeof object.totalWinBaseBet === "number")
                message.totalWinBaseBet = object.totalWinBaseBet;
            else if (typeof object.totalWinBaseBet === "object")
                message.totalWinBaseBet = new $util.LongBits(object.totalWinBaseBet.low >>> 0, object.totalWinBaseBet.high >>> 0).toNumber();
        if (object.tax != null)
            if ($util.Long)
                (message.tax = $util.Long.fromValue(object.tax)).unsigned = false;
            else if (typeof object.tax === "string")
                message.tax = parseInt(object.tax, 10);
            else if (typeof object.tax === "number")
                message.tax = object.tax;
            else if (typeof object.tax === "object")
                message.tax = new $util.LongBits(object.tax.low >>> 0, object.tax.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a NtfColorSettle message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorSettle
     * @static
     * @param {NtfColorSettle} message NtfColorSettle
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorSettle.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.arrays || options.defaults) {
            object.userAreaWin = [];
            object.threeDice = [];
        }
        if (options.defaults) {
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.totalWin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.totalWin = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.totalBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.totalBet = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.tax = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.tax = options.longs === String ? "0" : 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.totalWinBaseBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.totalWinBaseBet = options.longs === String ? "0" : 0;
        }
        if (message.userAreaWin && message.userAreaWin.length) {
            object.userAreaWin = [];
            for (var j = 0; j < message.userAreaWin.length; ++j)
                object.userAreaWin[j] = $root.NtfColorSettle.UserBetAreaMul.toObject(message.userAreaWin[j], options);
        }
        if (message.threeDice && message.threeDice.length) {
            object.threeDice = [];
            for (var j = 0; j < message.threeDice.length; ++j)
                object.threeDice[j] = options.enums === String ? $root.ColorType[message.threeDice[j]] === undefined ? message.threeDice[j] : $root.ColorType[message.threeDice[j]] : message.threeDice[j];
        }
        if (message.totalWin != null && message.hasOwnProperty("totalWin"))
            if (typeof message.totalWin === "number")
                object.totalWin = options.longs === String ? String(message.totalWin) : message.totalWin;
            else
                object.totalWin = options.longs === String ? $util.Long.prototype.toString.call(message.totalWin) : options.longs === Number ? new $util.LongBits(message.totalWin.low >>> 0, message.totalWin.high >>> 0).toNumber() : message.totalWin;
        if (message.totalBet != null && message.hasOwnProperty("totalBet"))
            if (typeof message.totalBet === "number")
                object.totalBet = options.longs === String ? String(message.totalBet) : message.totalBet;
            else
                object.totalBet = options.longs === String ? $util.Long.prototype.toString.call(message.totalBet) : options.longs === Number ? new $util.LongBits(message.totalBet.low >>> 0, message.totalBet.high >>> 0).toNumber() : message.totalBet;
        if (message.tax != null && message.hasOwnProperty("tax"))
            if (typeof message.tax === "number")
                object.tax = options.longs === String ? String(message.tax) : message.tax;
            else
                object.tax = options.longs === String ? $util.Long.prototype.toString.call(message.tax) : options.longs === Number ? new $util.LongBits(message.tax.low >>> 0, message.tax.high >>> 0).toNumber() : message.tax;
        if (message.totalWinBaseBet != null && message.hasOwnProperty("totalWinBaseBet"))
            if (typeof message.totalWinBaseBet === "number")
                object.totalWinBaseBet = options.longs === String ? String(message.totalWinBaseBet) : message.totalWinBaseBet;
            else
                object.totalWinBaseBet = options.longs === String ? $util.Long.prototype.toString.call(message.totalWinBaseBet) : options.longs === Number ? new $util.LongBits(message.totalWinBaseBet.low >>> 0, message.totalWinBaseBet.high >>> 0).toNumber() : message.totalWinBaseBet;
        return object;
    };

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

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

    NtfColorSettle.UserBetAreaMul = (function() {

        /**
         * Properties of a UserBetAreaMul.
         * @memberof NtfColorSettle
         * @interface IUserBetAreaMul
         * @property {IColorBetAreaMul|null} [areaMul] UserBetAreaMul areaMul
         * @property {Long|null} [bet] UserBetAreaMul bet
         * @property {Long|null} [win] UserBetAreaMul win
         * @property {Long|null} [realWin] UserBetAreaMul realWin
         */

        /**
         * Constructs a new UserBetAreaMul.
         * @memberof NtfColorSettle
         * @classdesc Represents a UserBetAreaMul.
         * @implements IUserBetAreaMul
         * @constructor
         * @param {NtfColorSettle.IUserBetAreaMul=} [properties] Properties to set
         */
        function UserBetAreaMul(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]];
        }

        /**
         * UserBetAreaMul areaMul.
         * @member {IColorBetAreaMul|null|undefined} areaMul
         * @memberof NtfColorSettle.UserBetAreaMul
         * @instance
         */
        UserBetAreaMul.prototype.areaMul = null;

        /**
         * UserBetAreaMul bet.
         * @member {Long} bet
         * @memberof NtfColorSettle.UserBetAreaMul
         * @instance
         */
        UserBetAreaMul.prototype.bet = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * UserBetAreaMul win.
         * @member {Long} win
         * @memberof NtfColorSettle.UserBetAreaMul
         * @instance
         */
        UserBetAreaMul.prototype.win = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * UserBetAreaMul realWin.
         * @member {Long} realWin
         * @memberof NtfColorSettle.UserBetAreaMul
         * @instance
         */
        UserBetAreaMul.prototype.realWin = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

        /**
         * Creates a new UserBetAreaMul instance using the specified properties.
         * @function create
         * @memberof NtfColorSettle.UserBetAreaMul
         * @static
         * @param {NtfColorSettle.IUserBetAreaMul=} [properties] Properties to set
         * @returns {NtfColorSettle.UserBetAreaMul} UserBetAreaMul instance
         */
        UserBetAreaMul.create = function create(properties) {
            return new UserBetAreaMul(properties);
        };

        /**
         * Encodes the specified UserBetAreaMul message. Does not implicitly {@link NtfColorSettle.UserBetAreaMul.verify|verify} messages.
         * @function encode
         * @memberof NtfColorSettle.UserBetAreaMul
         * @static
         * @param {NtfColorSettle.IUserBetAreaMul} message UserBetAreaMul message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        UserBetAreaMul.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.areaMul != null && Object.hasOwnProperty.call(message, "areaMul"))
                $root.ColorBetAreaMul.encode(message.areaMul, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
            if (message.bet != null && Object.hasOwnProperty.call(message, "bet"))
                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.bet);
            if (message.win != null && Object.hasOwnProperty.call(message, "win"))
                writer.uint32(/* id 3, wireType 0 =*/24).int64(message.win);
            if (message.realWin != null && Object.hasOwnProperty.call(message, "realWin"))
                writer.uint32(/* id 4, wireType 0 =*/32).int64(message.realWin);
            return writer;
        };

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

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

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

        /**
         * Verifies a UserBetAreaMul message.
         * @function verify
         * @memberof NtfColorSettle.UserBetAreaMul
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        UserBetAreaMul.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.areaMul != null && message.hasOwnProperty("areaMul")) {
                var error = $root.ColorBetAreaMul.verify(message.areaMul);
                if (error)
                    return "areaMul." + error;
            }
            if (message.bet != null && message.hasOwnProperty("bet"))
                if (!$util.isInteger(message.bet) && !(message.bet && $util.isInteger(message.bet.low) && $util.isInteger(message.bet.high)))
                    return "bet: integer|Long expected";
            if (message.win != null && message.hasOwnProperty("win"))
                if (!$util.isInteger(message.win) && !(message.win && $util.isInteger(message.win.low) && $util.isInteger(message.win.high)))
                    return "win: integer|Long expected";
            if (message.realWin != null && message.hasOwnProperty("realWin"))
                if (!$util.isInteger(message.realWin) && !(message.realWin && $util.isInteger(message.realWin.low) && $util.isInteger(message.realWin.high)))
                    return "realWin: integer|Long expected";
            return null;
        };

        /**
         * Creates a UserBetAreaMul message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof NtfColorSettle.UserBetAreaMul
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {NtfColorSettle.UserBetAreaMul} UserBetAreaMul
         */
        UserBetAreaMul.fromObject = function fromObject(object) {
            if (object instanceof $root.NtfColorSettle.UserBetAreaMul)
                return object;
            var message = new $root.NtfColorSettle.UserBetAreaMul();
            if (object.areaMul != null) {
                if (typeof object.areaMul !== "object")
                    throw TypeError(".NtfColorSettle.UserBetAreaMul.areaMul: object expected");
                message.areaMul = $root.ColorBetAreaMul.fromObject(object.areaMul);
            }
            if (object.bet != null)
                if ($util.Long)
                    (message.bet = $util.Long.fromValue(object.bet)).unsigned = false;
                else if (typeof object.bet === "string")
                    message.bet = parseInt(object.bet, 10);
                else if (typeof object.bet === "number")
                    message.bet = object.bet;
                else if (typeof object.bet === "object")
                    message.bet = new $util.LongBits(object.bet.low >>> 0, object.bet.high >>> 0).toNumber();
            if (object.win != null)
                if ($util.Long)
                    (message.win = $util.Long.fromValue(object.win)).unsigned = false;
                else if (typeof object.win === "string")
                    message.win = parseInt(object.win, 10);
                else if (typeof object.win === "number")
                    message.win = object.win;
                else if (typeof object.win === "object")
                    message.win = new $util.LongBits(object.win.low >>> 0, object.win.high >>> 0).toNumber();
            if (object.realWin != null)
                if ($util.Long)
                    (message.realWin = $util.Long.fromValue(object.realWin)).unsigned = false;
                else if (typeof object.realWin === "string")
                    message.realWin = parseInt(object.realWin, 10);
                else if (typeof object.realWin === "number")
                    message.realWin = object.realWin;
                else if (typeof object.realWin === "object")
                    message.realWin = new $util.LongBits(object.realWin.low >>> 0, object.realWin.high >>> 0).toNumber();
            return message;
        };

        /**
         * Creates a plain object from a UserBetAreaMul message. Also converts values to other types if specified.
         * @function toObject
         * @memberof NtfColorSettle.UserBetAreaMul
         * @static
         * @param {NtfColorSettle.UserBetAreaMul} message UserBetAreaMul
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        UserBetAreaMul.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.areaMul = null;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.bet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.bet = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.win = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.win = options.longs === String ? "0" : 0;
                if ($util.Long) {
                    var long = new $util.Long(0, 0, false);
                    object.realWin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
                } else
                    object.realWin = options.longs === String ? "0" : 0;
            }
            if (message.areaMul != null && message.hasOwnProperty("areaMul"))
                object.areaMul = $root.ColorBetAreaMul.toObject(message.areaMul, options);
            if (message.bet != null && message.hasOwnProperty("bet"))
                if (typeof message.bet === "number")
                    object.bet = options.longs === String ? String(message.bet) : message.bet;
                else
                    object.bet = options.longs === String ? $util.Long.prototype.toString.call(message.bet) : options.longs === Number ? new $util.LongBits(message.bet.low >>> 0, message.bet.high >>> 0).toNumber() : message.bet;
            if (message.win != null && message.hasOwnProperty("win"))
                if (typeof message.win === "number")
                    object.win = options.longs === String ? String(message.win) : message.win;
                else
                    object.win = options.longs === String ? $util.Long.prototype.toString.call(message.win) : options.longs === Number ? new $util.LongBits(message.win.low >>> 0, message.win.high >>> 0).toNumber() : message.win;
            if (message.realWin != null && message.hasOwnProperty("realWin"))
                if (typeof message.realWin === "number")
                    object.realWin = options.longs === String ? String(message.realWin) : message.realWin;
                else
                    object.realWin = options.longs === String ? $util.Long.prototype.toString.call(message.realWin) : options.longs === Number ? new $util.LongBits(message.realWin.low >>> 0, message.realWin.high >>> 0).toNumber() : message.realWin;
            return object;
        };

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

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

        return UserBetAreaMul;
    })();

    return NtfColorSettle;
})();

$root.ColorUser = (function() {

    /**
     * Properties of a ColorUser.
     * @exports IColorUser
     * @interface IColorUser
     * @property {string|null} [Nick] ColorUser Nick
     * @property {string|null} [Head] ColorUser Head
     * @property {Long|null} [Score] ColorUser Score
     * @property {number|null} [SeatId] ColorUser SeatId
     * @property {Long|null} [UserID] ColorUser UserID
     */

    /**
     * Constructs a new ColorUser.
     * @exports ColorUser
     * @classdesc Represents a ColorUser.
     * @implements IColorUser
     * @constructor
     * @param {IColorUser=} [properties] Properties to set
     */
    function ColorUser(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]];
    }

    /**
     * ColorUser Nick.
     * @member {string} Nick
     * @memberof ColorUser
     * @instance
     */
    ColorUser.prototype.Nick = "";

    /**
     * ColorUser Head.
     * @member {string} Head
     * @memberof ColorUser
     * @instance
     */
    ColorUser.prototype.Head = "";

    /**
     * ColorUser Score.
     * @member {Long} Score
     * @memberof ColorUser
     * @instance
     */
    ColorUser.prototype.Score = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * ColorUser SeatId.
     * @member {number} SeatId
     * @memberof ColorUser
     * @instance
     */
    ColorUser.prototype.SeatId = 0;

    /**
     * ColorUser UserID.
     * @member {Long} UserID
     * @memberof ColorUser
     * @instance
     */
    ColorUser.prototype.UserID = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new ColorUser instance using the specified properties.
     * @function create
     * @memberof ColorUser
     * @static
     * @param {IColorUser=} [properties] Properties to set
     * @returns {ColorUser} ColorUser instance
     */
    ColorUser.create = function create(properties) {
        return new ColorUser(properties);
    };

    /**
     * Encodes the specified ColorUser message. Does not implicitly {@link ColorUser.verify|verify} messages.
     * @function encode
     * @memberof ColorUser
     * @static
     * @param {IColorUser} message ColorUser message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorUser.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.Nick != null && Object.hasOwnProperty.call(message, "Nick"))
            writer.uint32(/* id 1, wireType 2 =*/10).string(message.Nick);
        if (message.Head != null && Object.hasOwnProperty.call(message, "Head"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.Head);
        if (message.Score != null && Object.hasOwnProperty.call(message, "Score"))
            writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Score);
        if (message.SeatId != null && Object.hasOwnProperty.call(message, "SeatId"))
            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.SeatId);
        if (message.UserID != null && Object.hasOwnProperty.call(message, "UserID"))
            writer.uint32(/* id 5, wireType 0 =*/40).int64(message.UserID);
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorUser message.
     * @function verify
     * @memberof ColorUser
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorUser.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.Nick != null && message.hasOwnProperty("Nick"))
            if (!$util.isString(message.Nick))
                return "Nick: string expected";
        if (message.Head != null && message.hasOwnProperty("Head"))
            if (!$util.isString(message.Head))
                return "Head: string expected";
        if (message.Score != null && message.hasOwnProperty("Score"))
            if (!$util.isInteger(message.Score) && !(message.Score && $util.isInteger(message.Score.low) && $util.isInteger(message.Score.high)))
                return "Score: integer|Long expected";
        if (message.SeatId != null && message.hasOwnProperty("SeatId"))
            if (!$util.isInteger(message.SeatId))
                return "SeatId: integer expected";
        if (message.UserID != null && message.hasOwnProperty("UserID"))
            if (!$util.isInteger(message.UserID) && !(message.UserID && $util.isInteger(message.UserID.low) && $util.isInteger(message.UserID.high)))
                return "UserID: integer|Long expected";
        return null;
    };

    /**
     * Creates a ColorUser message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorUser
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorUser} ColorUser
     */
    ColorUser.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorUser)
            return object;
        var message = new $root.ColorUser();
        if (object.Nick != null)
            message.Nick = String(object.Nick);
        if (object.Head != null)
            message.Head = String(object.Head);
        if (object.Score != null)
            if ($util.Long)
                (message.Score = $util.Long.fromValue(object.Score)).unsigned = false;
            else if (typeof object.Score === "string")
                message.Score = parseInt(object.Score, 10);
            else if (typeof object.Score === "number")
                message.Score = object.Score;
            else if (typeof object.Score === "object")
                message.Score = new $util.LongBits(object.Score.low >>> 0, object.Score.high >>> 0).toNumber();
        if (object.SeatId != null)
            message.SeatId = object.SeatId | 0;
        if (object.UserID != null)
            if ($util.Long)
                (message.UserID = $util.Long.fromValue(object.UserID)).unsigned = false;
            else if (typeof object.UserID === "string")
                message.UserID = parseInt(object.UserID, 10);
            else if (typeof object.UserID === "number")
                message.UserID = object.UserID;
            else if (typeof object.UserID === "object")
                message.UserID = new $util.LongBits(object.UserID.low >>> 0, object.UserID.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a ColorUser message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorUser
     * @static
     * @param {ColorUser} message ColorUser
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorUser.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.Nick = "";
            object.Head = "";
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.Score = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.Score = options.longs === String ? "0" : 0;
            object.SeatId = 0;
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.UserID = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.UserID = options.longs === String ? "0" : 0;
        }
        if (message.Nick != null && message.hasOwnProperty("Nick"))
            object.Nick = message.Nick;
        if (message.Head != null && message.hasOwnProperty("Head"))
            object.Head = message.Head;
        if (message.Score != null && message.hasOwnProperty("Score"))
            if (typeof message.Score === "number")
                object.Score = options.longs === String ? String(message.Score) : message.Score;
            else
                object.Score = options.longs === String ? $util.Long.prototype.toString.call(message.Score) : options.longs === Number ? new $util.LongBits(message.Score.low >>> 0, message.Score.high >>> 0).toNumber() : message.Score;
        if (message.SeatId != null && message.hasOwnProperty("SeatId"))
            object.SeatId = message.SeatId;
        if (message.UserID != null && message.hasOwnProperty("UserID"))
            if (typeof message.UserID === "number")
                object.UserID = options.longs === String ? String(message.UserID) : message.UserID;
            else
                object.UserID = options.longs === String ? $util.Long.prototype.toString.call(message.UserID) : options.longs === Number ? new $util.LongBits(message.UserID.low >>> 0, message.UserID.high >>> 0).toNumber() : message.UserID;
        return object;
    };

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

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

    return ColorUser;
})();

$root.NtfColorBigUser = (function() {

    /**
     * Properties of a NtfColorBigUser.
     * @exports INtfColorBigUser
     * @interface INtfColorBigUser
     * @property {Array.<IColorBigUser>|null} [bigUser] NtfColorBigUser bigUser
     */

    /**
     * Constructs a new NtfColorBigUser.
     * @exports NtfColorBigUser
     * @classdesc Represents a NtfColorBigUser.
     * @implements INtfColorBigUser
     * @constructor
     * @param {INtfColorBigUser=} [properties] Properties to set
     */
    function NtfColorBigUser(properties) {
        this.bigUser = [];
        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]];
    }

    /**
     * NtfColorBigUser bigUser.
     * @member {Array.<IColorBigUser>} bigUser
     * @memberof NtfColorBigUser
     * @instance
     */
    NtfColorBigUser.prototype.bigUser = $util.emptyArray;

    /**
     * Creates a new NtfColorBigUser instance using the specified properties.
     * @function create
     * @memberof NtfColorBigUser
     * @static
     * @param {INtfColorBigUser=} [properties] Properties to set
     * @returns {NtfColorBigUser} NtfColorBigUser instance
     */
    NtfColorBigUser.create = function create(properties) {
        return new NtfColorBigUser(properties);
    };

    /**
     * Encodes the specified NtfColorBigUser message. Does not implicitly {@link NtfColorBigUser.verify|verify} messages.
     * @function encode
     * @memberof NtfColorBigUser
     * @static
     * @param {INtfColorBigUser} message NtfColorBigUser message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorBigUser.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.bigUser != null && message.bigUser.length)
            for (var i = 0; i < message.bigUser.length; ++i)
                $root.ColorBigUser.encode(message.bigUser[i], writer.uint32(/* id 34, wireType 2 =*/274).fork()).ldelim();
        return writer;
    };

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

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

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

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

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

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

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

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

    return NtfColorBigUser;
})();

$root.NtfColorTrend = (function() {

    /**
     * Properties of a NtfColorTrend.
     * @exports INtfColorTrend
     * @interface INtfColorTrend
     * @property {Array.<NtfColorTrend.IColorRate>|null} [colorRate] NtfColorTrend colorRate
     */

    /**
     * Constructs a new NtfColorTrend.
     * @exports NtfColorTrend
     * @classdesc Represents a NtfColorTrend.
     * @implements INtfColorTrend
     * @constructor
     * @param {INtfColorTrend=} [properties] Properties to set
     */
    function NtfColorTrend(properties) {
        this.colorRate = [];
        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]];
    }

    /**
     * NtfColorTrend colorRate.
     * @member {Array.<NtfColorTrend.IColorRate>} colorRate
     * @memberof NtfColorTrend
     * @instance
     */
    NtfColorTrend.prototype.colorRate = $util.emptyArray;

    /**
     * Creates a new NtfColorTrend instance using the specified properties.
     * @function create
     * @memberof NtfColorTrend
     * @static
     * @param {INtfColorTrend=} [properties] Properties to set
     * @returns {NtfColorTrend} NtfColorTrend instance
     */
    NtfColorTrend.create = function create(properties) {
        return new NtfColorTrend(properties);
    };

    /**
     * Encodes the specified NtfColorTrend message. Does not implicitly {@link NtfColorTrend.verify|verify} messages.
     * @function encode
     * @memberof NtfColorTrend
     * @static
     * @param {INtfColorTrend} message NtfColorTrend message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorTrend.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.colorRate != null && message.colorRate.length)
            for (var i = 0; i < message.colorRate.length; ++i)
                $root.NtfColorTrend.ColorRate.encode(message.colorRate[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
        return writer;
    };

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

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

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

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

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

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

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

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

    NtfColorTrend.ColorRate = (function() {

        /**
         * Properties of a ColorRate.
         * @memberof NtfColorTrend
         * @interface IColorRate
         * @property {ColorType|null} [color] ColorRate color
         * @property {number|null} [rate] ColorRate rate
         */

        /**
         * Constructs a new ColorRate.
         * @memberof NtfColorTrend
         * @classdesc Represents a ColorRate.
         * @implements IColorRate
         * @constructor
         * @param {NtfColorTrend.IColorRate=} [properties] Properties to set
         */
        function ColorRate(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]];
        }

        /**
         * ColorRate color.
         * @member {ColorType} color
         * @memberof NtfColorTrend.ColorRate
         * @instance
         */
        ColorRate.prototype.color = 0;

        /**
         * ColorRate rate.
         * @member {number} rate
         * @memberof NtfColorTrend.ColorRate
         * @instance
         */
        ColorRate.prototype.rate = 0;

        /**
         * Creates a new ColorRate instance using the specified properties.
         * @function create
         * @memberof NtfColorTrend.ColorRate
         * @static
         * @param {NtfColorTrend.IColorRate=} [properties] Properties to set
         * @returns {NtfColorTrend.ColorRate} ColorRate instance
         */
        ColorRate.create = function create(properties) {
            return new ColorRate(properties);
        };

        /**
         * Encodes the specified ColorRate message. Does not implicitly {@link NtfColorTrend.ColorRate.verify|verify} messages.
         * @function encode
         * @memberof NtfColorTrend.ColorRate
         * @static
         * @param {NtfColorTrend.IColorRate} message ColorRate message or plain object to encode
         * @param {$protobuf.Writer} [writer] Writer to encode to
         * @returns {$protobuf.Writer} Writer
         */
        ColorRate.encode = function encode(message, writer) {
            if (!writer)
                writer = $Writer.create();
            if (message.color != null && Object.hasOwnProperty.call(message, "color"))
                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.color);
            if (message.rate != null && Object.hasOwnProperty.call(message, "rate"))
                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.rate);
            return writer;
        };

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

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

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

        /**
         * Verifies a ColorRate message.
         * @function verify
         * @memberof NtfColorTrend.ColorRate
         * @static
         * @param {Object.<string,*>} message Plain object to verify
         * @returns {string|null} `null` if valid, otherwise the reason why it is not
         */
        ColorRate.verify = function verify(message) {
            if (typeof message !== "object" || message === null)
                return "object expected";
            if (message.color != null && message.hasOwnProperty("color"))
                switch (message.color) {
                default:
                    return "color: enum value expected";
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    break;
                }
            if (message.rate != null && message.hasOwnProperty("rate"))
                if (!$util.isInteger(message.rate))
                    return "rate: integer expected";
            return null;
        };

        /**
         * Creates a ColorRate message from a plain object. Also converts values to their respective internal types.
         * @function fromObject
         * @memberof NtfColorTrend.ColorRate
         * @static
         * @param {Object.<string,*>} object Plain object
         * @returns {NtfColorTrend.ColorRate} ColorRate
         */
        ColorRate.fromObject = function fromObject(object) {
            if (object instanceof $root.NtfColorTrend.ColorRate)
                return object;
            var message = new $root.NtfColorTrend.ColorRate();
            switch (object.color) {
            default:
                if (typeof object.color === "number") {
                    message.color = object.color;
                    break;
                }
                break;
            case "CT_Yellow":
            case 0:
                message.color = 0;
                break;
            case "CT_White":
            case 1:
                message.color = 1;
                break;
            case "CT_Pink":
            case 2:
                message.color = 2;
                break;
            case "CT_Blue":
            case 3:
                message.color = 3;
                break;
            case "CT_Red":
            case 4:
                message.color = 4;
                break;
            case "CT_Green":
            case 5:
                message.color = 5;
                break;
            }
            if (object.rate != null)
                message.rate = object.rate | 0;
            return message;
        };

        /**
         * Creates a plain object from a ColorRate message. Also converts values to other types if specified.
         * @function toObject
         * @memberof NtfColorTrend.ColorRate
         * @static
         * @param {NtfColorTrend.ColorRate} message ColorRate
         * @param {$protobuf.IConversionOptions} [options] Conversion options
         * @returns {Object.<string,*>} Plain object
         */
        ColorRate.toObject = function toObject(message, options) {
            if (!options)
                options = {};
            var object = {};
            if (options.defaults) {
                object.color = options.enums === String ? "CT_Yellow" : 0;
                object.rate = 0;
            }
            if (message.color != null && message.hasOwnProperty("color"))
                object.color = options.enums === String ? $root.ColorType[message.color] === undefined ? message.color : $root.ColorType[message.color] : message.color;
            if (message.rate != null && message.hasOwnProperty("rate"))
                object.rate = message.rate;
            return object;
        };

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

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

        return ColorRate;
    })();

    return NtfColorTrend;
})();

$root.ColorBigUser = (function() {

    /**
     * Properties of a ColorBigUser.
     * @exports IColorBigUser
     * @interface IColorBigUser
     * @property {string|null} [nickName] ColorBigUser nickName
     * @property {string|null} [avatar] ColorBigUser avatar
     * @property {Long|null} [winChips] ColorBigUser winChips
     * @property {Array.<Long>|null} [areaId] ColorBigUser areaId
     */

    /**
     * Constructs a new ColorBigUser.
     * @exports ColorBigUser
     * @classdesc Represents a ColorBigUser.
     * @implements IColorBigUser
     * @constructor
     * @param {IColorBigUser=} [properties] Properties to set
     */
    function ColorBigUser(properties) {
        this.areaId = [];
        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]];
    }

    /**
     * ColorBigUser nickName.
     * @member {string} nickName
     * @memberof ColorBigUser
     * @instance
     */
    ColorBigUser.prototype.nickName = "";

    /**
     * ColorBigUser avatar.
     * @member {string} avatar
     * @memberof ColorBigUser
     * @instance
     */
    ColorBigUser.prototype.avatar = "";

    /**
     * ColorBigUser winChips.
     * @member {Long} winChips
     * @memberof ColorBigUser
     * @instance
     */
    ColorBigUser.prototype.winChips = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * ColorBigUser areaId.
     * @member {Array.<Long>} areaId
     * @memberof ColorBigUser
     * @instance
     */
    ColorBigUser.prototype.areaId = $util.emptyArray;

    /**
     * Creates a new ColorBigUser instance using the specified properties.
     * @function create
     * @memberof ColorBigUser
     * @static
     * @param {IColorBigUser=} [properties] Properties to set
     * @returns {ColorBigUser} ColorBigUser instance
     */
    ColorBigUser.create = function create(properties) {
        return new ColorBigUser(properties);
    };

    /**
     * Encodes the specified ColorBigUser message. Does not implicitly {@link ColorBigUser.verify|verify} messages.
     * @function encode
     * @memberof ColorBigUser
     * @static
     * @param {IColorBigUser} message ColorBigUser message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    ColorBigUser.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.winChips != null && Object.hasOwnProperty.call(message, "winChips"))
            writer.uint32(/* id 1, wireType 0 =*/8).int64(message.winChips);
        if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.avatar);
        if (message.areaId != null && message.areaId.length) {
            writer.uint32(/* id 3, wireType 2 =*/26).fork();
            for (var i = 0; i < message.areaId.length; ++i)
                writer.int64(message.areaId[i]);
            writer.ldelim();
        }
        if (message.nickName != null && Object.hasOwnProperty.call(message, "nickName"))
            writer.uint32(/* id 5, wireType 2 =*/42).string(message.nickName);
        return writer;
    };

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

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

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

    /**
     * Verifies a ColorBigUser message.
     * @function verify
     * @memberof ColorBigUser
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    ColorBigUser.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.nickName != null && message.hasOwnProperty("nickName"))
            if (!$util.isString(message.nickName))
                return "nickName: string expected";
        if (message.avatar != null && message.hasOwnProperty("avatar"))
            if (!$util.isString(message.avatar))
                return "avatar: string expected";
        if (message.winChips != null && message.hasOwnProperty("winChips"))
            if (!$util.isInteger(message.winChips) && !(message.winChips && $util.isInteger(message.winChips.low) && $util.isInteger(message.winChips.high)))
                return "winChips: integer|Long expected";
        if (message.areaId != null && message.hasOwnProperty("areaId")) {
            if (!Array.isArray(message.areaId))
                return "areaId: array expected";
            for (var i = 0; i < message.areaId.length; ++i)
                if (!$util.isInteger(message.areaId[i]) && !(message.areaId[i] && $util.isInteger(message.areaId[i].low) && $util.isInteger(message.areaId[i].high)))
                    return "areaId: integer|Long[] expected";
        }
        return null;
    };

    /**
     * Creates a ColorBigUser message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof ColorBigUser
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {ColorBigUser} ColorBigUser
     */
    ColorBigUser.fromObject = function fromObject(object) {
        if (object instanceof $root.ColorBigUser)
            return object;
        var message = new $root.ColorBigUser();
        if (object.nickName != null)
            message.nickName = String(object.nickName);
        if (object.avatar != null)
            message.avatar = String(object.avatar);
        if (object.winChips != null)
            if ($util.Long)
                (message.winChips = $util.Long.fromValue(object.winChips)).unsigned = false;
            else if (typeof object.winChips === "string")
                message.winChips = parseInt(object.winChips, 10);
            else if (typeof object.winChips === "number")
                message.winChips = object.winChips;
            else if (typeof object.winChips === "object")
                message.winChips = new $util.LongBits(object.winChips.low >>> 0, object.winChips.high >>> 0).toNumber();
        if (object.areaId) {
            if (!Array.isArray(object.areaId))
                throw TypeError(".ColorBigUser.areaId: array expected");
            message.areaId = [];
            for (var i = 0; i < object.areaId.length; ++i)
                if ($util.Long)
                    (message.areaId[i] = $util.Long.fromValue(object.areaId[i])).unsigned = false;
                else if (typeof object.areaId[i] === "string")
                    message.areaId[i] = parseInt(object.areaId[i], 10);
                else if (typeof object.areaId[i] === "number")
                    message.areaId[i] = object.areaId[i];
                else if (typeof object.areaId[i] === "object")
                    message.areaId[i] = new $util.LongBits(object.areaId[i].low >>> 0, object.areaId[i].high >>> 0).toNumber();
        }
        return message;
    };

    /**
     * Creates a plain object from a ColorBigUser message. Also converts values to other types if specified.
     * @function toObject
     * @memberof ColorBigUser
     * @static
     * @param {ColorBigUser} message ColorBigUser
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    ColorBigUser.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.arrays || options.defaults)
            object.areaId = [];
        if (options.defaults) {
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.winChips = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.winChips = options.longs === String ? "0" : 0;
            object.avatar = "";
            object.nickName = "";
        }
        if (message.winChips != null && message.hasOwnProperty("winChips"))
            if (typeof message.winChips === "number")
                object.winChips = options.longs === String ? String(message.winChips) : message.winChips;
            else
                object.winChips = options.longs === String ? $util.Long.prototype.toString.call(message.winChips) : options.longs === Number ? new $util.LongBits(message.winChips.low >>> 0, message.winChips.high >>> 0).toNumber() : message.winChips;
        if (message.avatar != null && message.hasOwnProperty("avatar"))
            object.avatar = message.avatar;
        if (message.areaId && message.areaId.length) {
            object.areaId = [];
            for (var j = 0; j < message.areaId.length; ++j)
                if (typeof message.areaId[j] === "number")
                    object.areaId[j] = options.longs === String ? String(message.areaId[j]) : message.areaId[j];
                else
                    object.areaId[j] = options.longs === String ? $util.Long.prototype.toString.call(message.areaId[j]) : options.longs === Number ? new $util.LongBits(message.areaId[j].low >>> 0, message.areaId[j].high >>> 0).toNumber() : message.areaId[j];
        }
        if (message.nickName != null && message.hasOwnProperty("nickName"))
            object.nickName = message.nickName;
        return object;
    };

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

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

    return ColorBigUser;
})();

$root.NtfColorMaintain = (function() {

    /**
     * Properties of a NtfColorMaintain.
     * @exports INtfColorMaintain
     * @interface INtfColorMaintain
     * @property {string|null} [msg] NtfColorMaintain msg
     * @property {Long|null} [gold] NtfColorMaintain gold
     */

    /**
     * Constructs a new NtfColorMaintain.
     * @exports NtfColorMaintain
     * @classdesc Represents a NtfColorMaintain.
     * @implements INtfColorMaintain
     * @constructor
     * @param {INtfColorMaintain=} [properties] Properties to set
     */
    function NtfColorMaintain(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]];
    }

    /**
     * NtfColorMaintain msg.
     * @member {string} msg
     * @memberof NtfColorMaintain
     * @instance
     */
    NtfColorMaintain.prototype.msg = "";

    /**
     * NtfColorMaintain gold.
     * @member {Long} gold
     * @memberof NtfColorMaintain
     * @instance
     */
    NtfColorMaintain.prototype.gold = $util.Long ? $util.Long.fromBits(0,0,false) : 0;

    /**
     * Creates a new NtfColorMaintain instance using the specified properties.
     * @function create
     * @memberof NtfColorMaintain
     * @static
     * @param {INtfColorMaintain=} [properties] Properties to set
     * @returns {NtfColorMaintain} NtfColorMaintain instance
     */
    NtfColorMaintain.create = function create(properties) {
        return new NtfColorMaintain(properties);
    };

    /**
     * Encodes the specified NtfColorMaintain message. Does not implicitly {@link NtfColorMaintain.verify|verify} messages.
     * @function encode
     * @memberof NtfColorMaintain
     * @static
     * @param {INtfColorMaintain} message NtfColorMaintain message or plain object to encode
     * @param {$protobuf.Writer} [writer] Writer to encode to
     * @returns {$protobuf.Writer} Writer
     */
    NtfColorMaintain.encode = function encode(message, writer) {
        if (!writer)
            writer = $Writer.create();
        if (message.msg != null && Object.hasOwnProperty.call(message, "msg"))
            writer.uint32(/* id 2, wireType 2 =*/18).string(message.msg);
        if (message.gold != null && Object.hasOwnProperty.call(message, "gold"))
            writer.uint32(/* id 3, wireType 0 =*/24).int64(message.gold);
        return writer;
    };

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

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

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

    /**
     * Verifies a NtfColorMaintain message.
     * @function verify
     * @memberof NtfColorMaintain
     * @static
     * @param {Object.<string,*>} message Plain object to verify
     * @returns {string|null} `null` if valid, otherwise the reason why it is not
     */
    NtfColorMaintain.verify = function verify(message) {
        if (typeof message !== "object" || message === null)
            return "object expected";
        if (message.msg != null && message.hasOwnProperty("msg"))
            if (!$util.isString(message.msg))
                return "msg: string expected";
        if (message.gold != null && message.hasOwnProperty("gold"))
            if (!$util.isInteger(message.gold) && !(message.gold && $util.isInteger(message.gold.low) && $util.isInteger(message.gold.high)))
                return "gold: integer|Long expected";
        return null;
    };

    /**
     * Creates a NtfColorMaintain message from a plain object. Also converts values to their respective internal types.
     * @function fromObject
     * @memberof NtfColorMaintain
     * @static
     * @param {Object.<string,*>} object Plain object
     * @returns {NtfColorMaintain} NtfColorMaintain
     */
    NtfColorMaintain.fromObject = function fromObject(object) {
        if (object instanceof $root.NtfColorMaintain)
            return object;
        var message = new $root.NtfColorMaintain();
        if (object.msg != null)
            message.msg = String(object.msg);
        if (object.gold != null)
            if ($util.Long)
                (message.gold = $util.Long.fromValue(object.gold)).unsigned = false;
            else if (typeof object.gold === "string")
                message.gold = parseInt(object.gold, 10);
            else if (typeof object.gold === "number")
                message.gold = object.gold;
            else if (typeof object.gold === "object")
                message.gold = new $util.LongBits(object.gold.low >>> 0, object.gold.high >>> 0).toNumber();
        return message;
    };

    /**
     * Creates a plain object from a NtfColorMaintain message. Also converts values to other types if specified.
     * @function toObject
     * @memberof NtfColorMaintain
     * @static
     * @param {NtfColorMaintain} message NtfColorMaintain
     * @param {$protobuf.IConversionOptions} [options] Conversion options
     * @returns {Object.<string,*>} Plain object
     */
    NtfColorMaintain.toObject = function toObject(message, options) {
        if (!options)
            options = {};
        var object = {};
        if (options.defaults) {
            object.msg = "";
            if ($util.Long) {
                var long = new $util.Long(0, 0, false);
                object.gold = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
            } else
                object.gold = options.longs === String ? "0" : 0;
        }
        if (message.msg != null && message.hasOwnProperty("msg"))
            object.msg = message.msg;
        if (message.gold != null && message.hasOwnProperty("gold"))
            if (typeof message.gold === "number")
                object.gold = options.longs === String ? String(message.gold) : message.gold;
            else
                object.gold = options.longs === String ? $util.Long.prototype.toString.call(message.gold) : options.longs === Number ? new $util.LongBits(message.gold.low >>> 0, message.gold.high >>> 0).toNumber() : message.gold;
        return object;
    };

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

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

    return NtfColorMaintain;
})();

/**
 * ErrCode enum.
 * @exports ErrCode
 * @enum {number}
 * @property {number} OK=0 OK value
 * @property {number} SystemErr=1 SystemErr value
 * @property {number} ParamErr=2 ParamErr value
 * @property {number} LoginDiffLoc=100 LoginDiffLoc value
 * @property {number} LoginUserOrPwdErr=102 LoginUserOrPwdErr value
 * @property {number} AccountFrozen=103 AccountFrozen value
 * @property {number} AccountBanned=104 AccountBanned value
 * @property {number} RegisterUserExist=110 RegisterUserExist value
 * @property {number} VersionTooLow=115 VersionTooLow value
 * @property {number} Maintain=120 Maintain value
 * @property {number} GoldNotEnough=125 GoldNotEnough value
 * @property {number} NotBetCount=126 NotBetCount value
 * @property {number} NotLeaveRoom=127 NotLeaveRoom value
 * @property {number} TotalBetExceedsLimit=500 TotalBetExceedsLimit value
 * @property {number} AreaBetExceedsLimit=505 AreaBetExceedsLimit value
 */
$root.ErrCode = (function() {
    var valuesById = {}, values = Object.create(valuesById);
    values[valuesById[0] = "OK"] = 0;
    values[valuesById[1] = "SystemErr"] = 1;
    values[valuesById[2] = "ParamErr"] = 2;
    values[valuesById[100] = "LoginDiffLoc"] = 100;
    values[valuesById[102] = "LoginUserOrPwdErr"] = 102;
    values[valuesById[103] = "AccountFrozen"] = 103;
    values[valuesById[104] = "AccountBanned"] = 104;
    values[valuesById[110] = "RegisterUserExist"] = 110;
    values[valuesById[115] = "VersionTooLow"] = 115;
    values[valuesById[120] = "Maintain"] = 120;
    values[valuesById[125] = "GoldNotEnough"] = 125;
    values[valuesById[126] = "NotBetCount"] = 126;
    values[valuesById[127] = "NotLeaveRoom"] = 127;
    values[valuesById[500] = "TotalBetExceedsLimit"] = 500;
    values[valuesById[505] = "AreaBetExceedsLimit"] = 505;
    return values;
})();

module.exports = $root;
