// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: gm.proto

package org.zhangqi.proto;

public final class Gm {
  private Gm() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code org.zhangqi.proto.GmRpcNameEnum}
   *
   * <pre>
   * GM客户端与GM服务器通讯协议名
   * </pre>
   */
  public enum GmRpcNameEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>GmRpcLogin = 100101;</code>
     *
     * <pre>
     * GM用户登录
     * </pre>
     */
    GmRpcLogin(0, 100101),
    /**
     * <code>GmRpcGetAllServerState = 100201;</code>
     *
     * <pre>
     * 获取所有服务器状态信息
     * </pre>
     */
    GmRpcGetAllServerState(1, 100201),
    /**
     * <code>GmRpcExecuteCmd = 100202;</code>
     *
     * <pre>
     * 让GM服务器发送GM指令给指定服务器
     * </pre>
     */
    GmRpcExecuteCmd(2, 100202),
    /**
     * <code>GmRpcGetOnlineUserInfo = 100203;</code>
     *
     * <pre>
     * 获取所有在线玩家信息
     * </pre>
     */
    GmRpcGetOnlineUserInfo(3, 100203),
    /**
     * <code>GmRpcForceOfflinePush = 200001;</code>
     *
     * <pre>
     * GM客户端强制下线推送
     * </pre>
     */
    GmRpcForceOfflinePush(4, 200001),
    /**
     * <code>GmRpcTextMsgPush = 200002;</code>
     *
     * <pre>
     * GM服务器向GM客户端推送文本消息
     * </pre>
     */
    GmRpcTextMsgPush(5, 200002),
    ;

    /**
     * <code>GmRpcLogin = 100101;</code>
     *
     * <pre>
     * GM用户登录
     * </pre>
     */
    public static final int GmRpcLogin_VALUE = 100101;
    /**
     * <code>GmRpcGetAllServerState = 100201;</code>
     *
     * <pre>
     * 获取所有服务器状态信息
     * </pre>
     */
    public static final int GmRpcGetAllServerState_VALUE = 100201;
    /**
     * <code>GmRpcExecuteCmd = 100202;</code>
     *
     * <pre>
     * 让GM服务器发送GM指令给指定服务器
     * </pre>
     */
    public static final int GmRpcExecuteCmd_VALUE = 100202;
    /**
     * <code>GmRpcGetOnlineUserInfo = 100203;</code>
     *
     * <pre>
     * 获取所有在线玩家信息
     * </pre>
     */
    public static final int GmRpcGetOnlineUserInfo_VALUE = 100203;
    /**
     * <code>GmRpcForceOfflinePush = 200001;</code>
     *
     * <pre>
     * GM客户端强制下线推送
     * </pre>
     */
    public static final int GmRpcForceOfflinePush_VALUE = 200001;
    /**
     * <code>GmRpcTextMsgPush = 200002;</code>
     *
     * <pre>
     * GM服务器向GM客户端推送文本消息
     * </pre>
     */
    public static final int GmRpcTextMsgPush_VALUE = 200002;


    public final int getNumber() { return value; }

    public static GmRpcNameEnum valueOf(int value) {
      switch (value) {
        case 100101: return GmRpcLogin;
        case 100201: return GmRpcGetAllServerState;
        case 100202: return GmRpcExecuteCmd;
        case 100203: return GmRpcGetOnlineUserInfo;
        case 200001: return GmRpcForceOfflinePush;
        case 200002: return GmRpcTextMsgPush;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<GmRpcNameEnum>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<GmRpcNameEnum>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<GmRpcNameEnum>() {
            public GmRpcNameEnum findValueByNumber(int number) {
              return GmRpcNameEnum.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.getDescriptor().getEnumTypes().get(0);
    }

    private static final GmRpcNameEnum[] VALUES = values();

    public static GmRpcNameEnum valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private GmRpcNameEnum(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:org.zhangqi.proto.GmRpcNameEnum)
  }

  /**
   * Protobuf enum {@code org.zhangqi.proto.GmRpcErrorCodeEnum}
   *
   * <pre>
   * GM客户端与GM服务器通讯协议错误码
   * </pre>
   */
  public enum GmRpcErrorCodeEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>GmRpcOk = 0;</code>
     */
    GmRpcOk(0, 0),
    /**
     * <code>GmRpcServerError = 1;</code>
     *
     * <pre>
     * GM服务器内部错误
     * </pre>
     */
    GmRpcServerError(1, 1),
    /**
     * <code>GmRpcClientError = 2;</code>
     *
     * <pre>
     * GM客户端请求参数非法
     * </pre>
     */
    GmRpcClientError(2, 2),
    /**
     * <code>GmRpcErrorOperatedUserIdNotExist = 11;</code>
     *
     * <pre>
     * 要操作的玩家userId不存在
     * </pre>
     */
    GmRpcErrorOperatedUserIdNotExist(3, 11),
    /**
     * <code>GmRpcErrorOperatedUserIsOnline = 12;</code>
     *
     * <pre>
     * 为了安全，禁止操作在线玩家
     * </pre>
     */
    GmRpcErrorOperatedUserIsOnline(4, 12),
    /**
     * <code>GmRpcLoginErrorUsernameIsNotExist = 1001011;</code>
     *
     * <pre>
     * GM用户登录错误，用户名没注册过
     * </pre>
     */
    GmRpcLoginErrorUsernameIsNotExist(5, 1001011),
    /**
     * <code>GmRpcLoginErrorPasswordWrong = 1001012;</code>
     *
     * <pre>
     * GM用户登录错误，密码错误
     * </pre>
     */
    GmRpcLoginErrorPasswordWrong(6, 1001012),
    ;

    /**
     * <code>GmRpcOk = 0;</code>
     */
    public static final int GmRpcOk_VALUE = 0;
    /**
     * <code>GmRpcServerError = 1;</code>
     *
     * <pre>
     * GM服务器内部错误
     * </pre>
     */
    public static final int GmRpcServerError_VALUE = 1;
    /**
     * <code>GmRpcClientError = 2;</code>
     *
     * <pre>
     * GM客户端请求参数非法
     * </pre>
     */
    public static final int GmRpcClientError_VALUE = 2;
    /**
     * <code>GmRpcErrorOperatedUserIdNotExist = 11;</code>
     *
     * <pre>
     * 要操作的玩家userId不存在
     * </pre>
     */
    public static final int GmRpcErrorOperatedUserIdNotExist_VALUE = 11;
    /**
     * <code>GmRpcErrorOperatedUserIsOnline = 12;</code>
     *
     * <pre>
     * 为了安全，禁止操作在线玩家
     * </pre>
     */
    public static final int GmRpcErrorOperatedUserIsOnline_VALUE = 12;
    /**
     * <code>GmRpcLoginErrorUsernameIsNotExist = 1001011;</code>
     *
     * <pre>
     * GM用户登录错误，用户名没注册过
     * </pre>
     */
    public static final int GmRpcLoginErrorUsernameIsNotExist_VALUE = 1001011;
    /**
     * <code>GmRpcLoginErrorPasswordWrong = 1001012;</code>
     *
     * <pre>
     * GM用户登录错误，密码错误
     * </pre>
     */
    public static final int GmRpcLoginErrorPasswordWrong_VALUE = 1001012;


    public final int getNumber() { return value; }

    public static GmRpcErrorCodeEnum valueOf(int value) {
      switch (value) {
        case 0: return GmRpcOk;
        case 1: return GmRpcServerError;
        case 2: return GmRpcClientError;
        case 11: return GmRpcErrorOperatedUserIdNotExist;
        case 12: return GmRpcErrorOperatedUserIsOnline;
        case 1001011: return GmRpcLoginErrorUsernameIsNotExist;
        case 1001012: return GmRpcLoginErrorPasswordWrong;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<GmRpcErrorCodeEnum>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<GmRpcErrorCodeEnum>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<GmRpcErrorCodeEnum>() {
            public GmRpcErrorCodeEnum findValueByNumber(int number) {
              return GmRpcErrorCodeEnum.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.getDescriptor().getEnumTypes().get(1);
    }

    private static final GmRpcErrorCodeEnum[] VALUES = values();

    public static GmRpcErrorCodeEnum valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private GmRpcErrorCodeEnum(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:org.zhangqi.proto.GmRpcErrorCodeEnum)
  }

  /**
   * Protobuf enum {@code org.zhangqi.proto.GmForceOfflineReasonEnum}
   *
   * <pre>
   * GM客户端被强制下线的原因
   * </pre>
   */
  public enum GmForceOfflineReasonEnum
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>GmForceOfflineServerNotAvailable = 1;</code>
     *
     * <pre>
     * 服务器不可用
     * </pre>
     */
    GmForceOfflineServerNotAvailable(0, 1),
    /**
     * <code>GmForceOfflineSameUserLogin = 2;</code>
     *
     * <pre>
     * 同一账号同时异地登录，踢掉之前登录的
     * </pre>
     */
    GmForceOfflineSameUserLogin(1, 2),
    ;

    /**
     * <code>GmForceOfflineServerNotAvailable = 1;</code>
     *
     * <pre>
     * 服务器不可用
     * </pre>
     */
    public static final int GmForceOfflineServerNotAvailable_VALUE = 1;
    /**
     * <code>GmForceOfflineSameUserLogin = 2;</code>
     *
     * <pre>
     * 同一账号同时异地登录，踢掉之前登录的
     * </pre>
     */
    public static final int GmForceOfflineSameUserLogin_VALUE = 2;


    public final int getNumber() { return value; }

    public static GmForceOfflineReasonEnum valueOf(int value) {
      switch (value) {
        case 1: return GmForceOfflineServerNotAvailable;
        case 2: return GmForceOfflineSameUserLogin;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<GmForceOfflineReasonEnum>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<GmForceOfflineReasonEnum>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<GmForceOfflineReasonEnum>() {
            public GmForceOfflineReasonEnum findValueByNumber(int number) {
              return GmForceOfflineReasonEnum.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.getDescriptor().getEnumTypes().get(2);
    }

    private static final GmForceOfflineReasonEnum[] VALUES = values();

    public static GmForceOfflineReasonEnum valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private GmForceOfflineReasonEnum(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:org.zhangqi.proto.GmForceOfflineReasonEnum)
  }

  public interface GmUserDataOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int32 userId = 1;
    /**
     * <code>optional int32 userId = 1;</code>
     */
    boolean hasUserId();
    /**
     * <code>optional int32 userId = 1;</code>
     */
    int getUserId();

    // optional string username = 2;
    /**
     * <code>optional string username = 2;</code>
     */
    boolean hasUsername();
    /**
     * <code>optional string username = 2;</code>
     */
    java.lang.String getUsername();
    /**
     * <code>optional string username = 2;</code>
     */
    com.google.protobuf.ByteString
        getUsernameBytes();

    // optional string passwordMD5 = 3;
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    boolean hasPasswordMD5();
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    java.lang.String getPasswordMD5();
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    com.google.protobuf.ByteString
        getPasswordMD5Bytes();

    // optional int64 registTimestamp = 4;
    /**
     * <code>optional int64 registTimestamp = 4;</code>
     *
     * <pre>
     * 注册时间戳
     * </pre>
     */
    boolean hasRegistTimestamp();
    /**
     * <code>optional int64 registTimestamp = 4;</code>
     *
     * <pre>
     * 注册时间戳
     * </pre>
     */
    long getRegistTimestamp();

    // optional int64 lastLoginTimestamp = 5;
    /**
     * <code>optional int64 lastLoginTimestamp = 5;</code>
     *
     * <pre>
     * 上次登录的时间戳
     * </pre>
     */
    boolean hasLastLoginTimestamp();
    /**
     * <code>optional int64 lastLoginTimestamp = 5;</code>
     *
     * <pre>
     * 上次登录的时间戳
     * </pre>
     */
    long getLastLoginTimestamp();

    // optional string lastLoginIp = 6;
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    boolean hasLastLoginIp();
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    java.lang.String getLastLoginIp();
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    com.google.protobuf.ByteString
        getLastLoginIpBytes();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmUserData}
   *
   * <pre>
   * GM用户信息存储
   * </pre>
   */
  public static final class GmUserData extends
      com.google.protobuf.GeneratedMessage
      implements GmUserDataOrBuilder {
    // Use GmUserData.newBuilder() to construct.
    private GmUserData(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmUserData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmUserData defaultInstance;
    public static GmUserData getDefaultInstance() {
      return defaultInstance;
    }

    public GmUserData getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmUserData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              userId_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              username_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              passwordMD5_ = input.readBytes();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              registTimestamp_ = input.readInt64();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              lastLoginTimestamp_ = input.readInt64();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000020;
              lastLoginIp_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserData_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmUserData.class, org.zhangqi.proto.Gm.GmUserData.Builder.class);
    }

    public static com.google.protobuf.Parser<GmUserData> PARSER =
        new com.google.protobuf.AbstractParser<GmUserData>() {
      public GmUserData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmUserData(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmUserData> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional int32 userId = 1;
    public static final int USERID_FIELD_NUMBER = 1;
    private int userId_;
    /**
     * <code>optional int32 userId = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 userId = 1;</code>
     */
    public int getUserId() {
      return userId_;
    }

    // optional string username = 2;
    public static final int USERNAME_FIELD_NUMBER = 2;
    private java.lang.Object username_;
    /**
     * <code>optional string username = 2;</code>
     */
    public boolean hasUsername() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string username = 2;</code>
     */
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          username_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string username = 2;</code>
     */
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string passwordMD5 = 3;
    public static final int PASSWORDMD5_FIELD_NUMBER = 3;
    private java.lang.Object passwordMD5_;
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public boolean hasPasswordMD5() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public java.lang.String getPasswordMD5() {
      java.lang.Object ref = passwordMD5_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          passwordMD5_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string passwordMD5 = 3;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public com.google.protobuf.ByteString
        getPasswordMD5Bytes() {
      java.lang.Object ref = passwordMD5_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        passwordMD5_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int64 registTimestamp = 4;
    public static final int REGISTTIMESTAMP_FIELD_NUMBER = 4;
    private long registTimestamp_;
    /**
     * <code>optional int64 registTimestamp = 4;</code>
     *
     * <pre>
     * 注册时间戳
     * </pre>
     */
    public boolean hasRegistTimestamp() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int64 registTimestamp = 4;</code>
     *
     * <pre>
     * 注册时间戳
     * </pre>
     */
    public long getRegistTimestamp() {
      return registTimestamp_;
    }

    // optional int64 lastLoginTimestamp = 5;
    public static final int LASTLOGINTIMESTAMP_FIELD_NUMBER = 5;
    private long lastLoginTimestamp_;
    /**
     * <code>optional int64 lastLoginTimestamp = 5;</code>
     *
     * <pre>
     * 上次登录的时间戳
     * </pre>
     */
    public boolean hasLastLoginTimestamp() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 lastLoginTimestamp = 5;</code>
     *
     * <pre>
     * 上次登录的时间戳
     * </pre>
     */
    public long getLastLoginTimestamp() {
      return lastLoginTimestamp_;
    }

    // optional string lastLoginIp = 6;
    public static final int LASTLOGINIP_FIELD_NUMBER = 6;
    private java.lang.Object lastLoginIp_;
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    public boolean hasLastLoginIp() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    public java.lang.String getLastLoginIp() {
      java.lang.Object ref = lastLoginIp_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          lastLoginIp_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string lastLoginIp = 6;</code>
     *
     * <pre>
     * 上次登录的IP
     * </pre>
     */
    public com.google.protobuf.ByteString
        getLastLoginIpBytes() {
      java.lang.Object ref = lastLoginIp_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lastLoginIp_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      userId_ = 0;
      username_ = "";
      passwordMD5_ = "";
      registTimestamp_ = 0L;
      lastLoginTimestamp_ = 0L;
      lastLoginIp_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getUsernameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getPasswordMD5Bytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(4, registTimestamp_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(5, lastLoginTimestamp_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBytes(6, getLastLoginIpBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getUsernameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getPasswordMD5Bytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, registTimestamp_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, lastLoginTimestamp_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getLastLoginIpBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmUserData prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmUserData}
     *
     * <pre>
     * GM用户信息存储
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmUserDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserData_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmUserData.class, org.zhangqi.proto.Gm.GmUserData.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmUserData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        userId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        username_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        passwordMD5_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        registTimestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        lastLoginTimestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        lastLoginIp_ = "";
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserData_descriptor;
      }

      public org.zhangqi.proto.Gm.GmUserData getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmUserData.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmUserData build() {
        org.zhangqi.proto.Gm.GmUserData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmUserData buildPartial() {
        org.zhangqi.proto.Gm.GmUserData result = new org.zhangqi.proto.Gm.GmUserData(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.userId_ = userId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.username_ = username_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.passwordMD5_ = passwordMD5_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.registTimestamp_ = registTimestamp_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.lastLoginTimestamp_ = lastLoginTimestamp_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.lastLoginIp_ = lastLoginIp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmUserData) {
          return mergeFrom((org.zhangqi.proto.Gm.GmUserData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmUserData other) {
        if (other == org.zhangqi.proto.Gm.GmUserData.getDefaultInstance()) return this;
        if (other.hasUserId()) {
          setUserId(other.getUserId());
        }
        if (other.hasUsername()) {
          bitField0_ |= 0x00000002;
          username_ = other.username_;
          onChanged();
        }
        if (other.hasPasswordMD5()) {
          bitField0_ |= 0x00000004;
          passwordMD5_ = other.passwordMD5_;
          onChanged();
        }
        if (other.hasRegistTimestamp()) {
          setRegistTimestamp(other.getRegistTimestamp());
        }
        if (other.hasLastLoginTimestamp()) {
          setLastLoginTimestamp(other.getLastLoginTimestamp());
        }
        if (other.hasLastLoginIp()) {
          bitField0_ |= 0x00000020;
          lastLoginIp_ = other.lastLoginIp_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmUserData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmUserData) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 userId = 1;
      private int userId_ ;
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public int getUserId() {
        return userId_;
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public Builder setUserId(int value) {
        bitField0_ |= 0x00000001;
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userId_ = 0;
        onChanged();
        return this;
      }

      // optional string username = 2;
      private java.lang.Object username_ = "";
      /**
       * <code>optional string username = 2;</code>
       */
      public boolean hasUsername() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        username_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder clearUsername() {
        bitField0_ = (bitField0_ & ~0x00000002);
        username_ = getDefaultInstance().getUsername();
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        username_ = value;
        onChanged();
        return this;
      }

      // optional string passwordMD5 = 3;
      private java.lang.Object passwordMD5_ = "";
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public boolean hasPasswordMD5() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public java.lang.String getPasswordMD5() {
        java.lang.Object ref = passwordMD5_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          passwordMD5_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public com.google.protobuf.ByteString
          getPasswordMD5Bytes() {
        java.lang.Object ref = passwordMD5_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          passwordMD5_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder setPasswordMD5(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        passwordMD5_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder clearPasswordMD5() {
        bitField0_ = (bitField0_ & ~0x00000004);
        passwordMD5_ = getDefaultInstance().getPasswordMD5();
        onChanged();
        return this;
      }
      /**
       * <code>optional string passwordMD5 = 3;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder setPasswordMD5Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        passwordMD5_ = value;
        onChanged();
        return this;
      }

      // optional int64 registTimestamp = 4;
      private long registTimestamp_ ;
      /**
       * <code>optional int64 registTimestamp = 4;</code>
       *
       * <pre>
       * 注册时间戳
       * </pre>
       */
      public boolean hasRegistTimestamp() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int64 registTimestamp = 4;</code>
       *
       * <pre>
       * 注册时间戳
       * </pre>
       */
      public long getRegistTimestamp() {
        return registTimestamp_;
      }
      /**
       * <code>optional int64 registTimestamp = 4;</code>
       *
       * <pre>
       * 注册时间戳
       * </pre>
       */
      public Builder setRegistTimestamp(long value) {
        bitField0_ |= 0x00000008;
        registTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 registTimestamp = 4;</code>
       *
       * <pre>
       * 注册时间戳
       * </pre>
       */
      public Builder clearRegistTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000008);
        registTimestamp_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 lastLoginTimestamp = 5;
      private long lastLoginTimestamp_ ;
      /**
       * <code>optional int64 lastLoginTimestamp = 5;</code>
       *
       * <pre>
       * 上次登录的时间戳
       * </pre>
       */
      public boolean hasLastLoginTimestamp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 lastLoginTimestamp = 5;</code>
       *
       * <pre>
       * 上次登录的时间戳
       * </pre>
       */
      public long getLastLoginTimestamp() {
        return lastLoginTimestamp_;
      }
      /**
       * <code>optional int64 lastLoginTimestamp = 5;</code>
       *
       * <pre>
       * 上次登录的时间戳
       * </pre>
       */
      public Builder setLastLoginTimestamp(long value) {
        bitField0_ |= 0x00000010;
        lastLoginTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 lastLoginTimestamp = 5;</code>
       *
       * <pre>
       * 上次登录的时间戳
       * </pre>
       */
      public Builder clearLastLoginTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000010);
        lastLoginTimestamp_ = 0L;
        onChanged();
        return this;
      }

      // optional string lastLoginIp = 6;
      private java.lang.Object lastLoginIp_ = "";
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public boolean hasLastLoginIp() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public java.lang.String getLastLoginIp() {
        java.lang.Object ref = lastLoginIp_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          lastLoginIp_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public com.google.protobuf.ByteString
          getLastLoginIpBytes() {
        java.lang.Object ref = lastLoginIp_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lastLoginIp_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public Builder setLastLoginIp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        lastLoginIp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public Builder clearLastLoginIp() {
        bitField0_ = (bitField0_ & ~0x00000020);
        lastLoginIp_ = getDefaultInstance().getLastLoginIp();
        onChanged();
        return this;
      }
      /**
       * <code>optional string lastLoginIp = 6;</code>
       *
       * <pre>
       * 上次登录的IP
       * </pre>
       */
      public Builder setLastLoginIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        lastLoginIp_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmUserData)
    }

    static {
      defaultInstance = new GmUserData(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmUserData)
  }

  public interface GmUserInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int32 userId = 1;
    /**
     * <code>optional int32 userId = 1;</code>
     */
    boolean hasUserId();
    /**
     * <code>optional int32 userId = 1;</code>
     */
    int getUserId();

    // optional string username = 2;
    /**
     * <code>optional string username = 2;</code>
     */
    boolean hasUsername();
    /**
     * <code>optional string username = 2;</code>
     */
    java.lang.String getUsername();
    /**
     * <code>optional string username = 2;</code>
     */
    com.google.protobuf.ByteString
        getUsernameBytes();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmUserInfo}
   *
   * <pre>
   * GM用户信息
   * </pre>
   */
  public static final class GmUserInfo extends
      com.google.protobuf.GeneratedMessage
      implements GmUserInfoOrBuilder {
    // Use GmUserInfo.newBuilder() to construct.
    private GmUserInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmUserInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmUserInfo defaultInstance;
    public static GmUserInfo getDefaultInstance() {
      return defaultInstance;
    }

    public GmUserInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmUserInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              userId_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              username_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmUserInfo.class, org.zhangqi.proto.Gm.GmUserInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<GmUserInfo> PARSER =
        new com.google.protobuf.AbstractParser<GmUserInfo>() {
      public GmUserInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmUserInfo(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmUserInfo> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional int32 userId = 1;
    public static final int USERID_FIELD_NUMBER = 1;
    private int userId_;
    /**
     * <code>optional int32 userId = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 userId = 1;</code>
     */
    public int getUserId() {
      return userId_;
    }

    // optional string username = 2;
    public static final int USERNAME_FIELD_NUMBER = 2;
    private java.lang.Object username_;
    /**
     * <code>optional string username = 2;</code>
     */
    public boolean hasUsername() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string username = 2;</code>
     */
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          username_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string username = 2;</code>
     */
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      userId_ = 0;
      username_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getUsernameBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getUsernameBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmUserInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmUserInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmUserInfo}
     *
     * <pre>
     * GM用户信息
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmUserInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmUserInfo.class, org.zhangqi.proto.Gm.GmUserInfo.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmUserInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        userId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        username_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmUserInfo_descriptor;
      }

      public org.zhangqi.proto.Gm.GmUserInfo getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmUserInfo build() {
        org.zhangqi.proto.Gm.GmUserInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmUserInfo buildPartial() {
        org.zhangqi.proto.Gm.GmUserInfo result = new org.zhangqi.proto.Gm.GmUserInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.userId_ = userId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.username_ = username_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmUserInfo) {
          return mergeFrom((org.zhangqi.proto.Gm.GmUserInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmUserInfo other) {
        if (other == org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance()) return this;
        if (other.hasUserId()) {
          setUserId(other.getUserId());
        }
        if (other.hasUsername()) {
          bitField0_ |= 0x00000002;
          username_ = other.username_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmUserInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmUserInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 userId = 1;
      private int userId_ ;
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public int getUserId() {
        return userId_;
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public Builder setUserId(int value) {
        bitField0_ |= 0x00000001;
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 userId = 1;</code>
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userId_ = 0;
        onChanged();
        return this;
      }

      // optional string username = 2;
      private java.lang.Object username_ = "";
      /**
       * <code>optional string username = 2;</code>
       */
      public boolean hasUsername() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        username_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder clearUsername() {
        bitField0_ = (bitField0_ & ~0x00000002);
        username_ = getDefaultInstance().getUsername();
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 2;</code>
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        username_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmUserInfo)
    }

    static {
      defaultInstance = new GmUserInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmUserInfo)
  }

  public interface ServerLoadBalanceInfoOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int32 id = 1;
    /**
     * <code>optional int32 id = 1;</code>
     */
    boolean hasId();
    /**
     * <code>optional int32 id = 1;</code>
     */
    int getId();

    // optional string ip = 2;
    /**
     * <code>optional string ip = 2;</code>
     */
    boolean hasIp();
    /**
     * <code>optional string ip = 2;</code>
     */
    java.lang.String getIp();
    /**
     * <code>optional string ip = 2;</code>
     */
    com.google.protobuf.ByteString
        getIpBytes();

    // optional int32 loadBalance = 3;
    /**
     * <code>optional int32 loadBalance = 3;</code>
     */
    boolean hasLoadBalance();
    /**
     * <code>optional int32 loadBalance = 3;</code>
     */
    int getLoadBalance();

    // optional bool isMainLogicServer = 4;
    /**
     * <code>optional bool isMainLogicServer = 4;</code>
     *
     * <pre>
     * 如果是逻辑服务器，需发是不是主逻辑服务器
     * </pre>
     */
    boolean hasIsMainLogicServer();
    /**
     * <code>optional bool isMainLogicServer = 4;</code>
     *
     * <pre>
     * 如果是逻辑服务器，需发是不是主逻辑服务器
     * </pre>
     */
    boolean getIsMainLogicServer();

    // optional string gatewayConnectPath = 5;
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    boolean hasGatewayConnectPath();
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    java.lang.String getGatewayConnectPath();
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    com.google.protobuf.ByteString
        getGatewayConnectPathBytes();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.ServerLoadBalanceInfo}
   *
   * <pre>
   * 服务器信息及负载情况
   * </pre>
   */
  public static final class ServerLoadBalanceInfo extends
      com.google.protobuf.GeneratedMessage
      implements ServerLoadBalanceInfoOrBuilder {
    // Use ServerLoadBalanceInfo.newBuilder() to construct.
    private ServerLoadBalanceInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ServerLoadBalanceInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ServerLoadBalanceInfo defaultInstance;
    public static ServerLoadBalanceInfo getDefaultInstance() {
      return defaultInstance;
    }

    public ServerLoadBalanceInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ServerLoadBalanceInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              id_ = input.readInt32();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              ip_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              loadBalance_ = input.readInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              isMainLogicServer_ = input.readBool();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000010;
              gatewayConnectPath_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.ServerLoadBalanceInfo.class, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<ServerLoadBalanceInfo> PARSER =
        new com.google.protobuf.AbstractParser<ServerLoadBalanceInfo>() {
      public ServerLoadBalanceInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ServerLoadBalanceInfo(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<ServerLoadBalanceInfo> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional int32 id = 1;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <code>optional int32 id = 1;</code>
     */
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 id = 1;</code>
     */
    public int getId() {
      return id_;
    }

    // optional string ip = 2;
    public static final int IP_FIELD_NUMBER = 2;
    private java.lang.Object ip_;
    /**
     * <code>optional string ip = 2;</code>
     */
    public boolean hasIp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string ip = 2;</code>
     */
    public java.lang.String getIp() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          ip_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string ip = 2;</code>
     */
    public com.google.protobuf.ByteString
        getIpBytes() {
      java.lang.Object ref = ip_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ip_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional int32 loadBalance = 3;
    public static final int LOADBALANCE_FIELD_NUMBER = 3;
    private int loadBalance_;
    /**
     * <code>optional int32 loadBalance = 3;</code>
     */
    public boolean hasLoadBalance() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 loadBalance = 3;</code>
     */
    public int getLoadBalance() {
      return loadBalance_;
    }

    // optional bool isMainLogicServer = 4;
    public static final int ISMAINLOGICSERVER_FIELD_NUMBER = 4;
    private boolean isMainLogicServer_;
    /**
     * <code>optional bool isMainLogicServer = 4;</code>
     *
     * <pre>
     * 如果是逻辑服务器，需发是不是主逻辑服务器
     * </pre>
     */
    public boolean hasIsMainLogicServer() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional bool isMainLogicServer = 4;</code>
     *
     * <pre>
     * 如果是逻辑服务器，需发是不是主逻辑服务器
     * </pre>
     */
    public boolean getIsMainLogicServer() {
      return isMainLogicServer_;
    }

    // optional string gatewayConnectPath = 5;
    public static final int GATEWAYCONNECTPATH_FIELD_NUMBER = 5;
    private java.lang.Object gatewayConnectPath_;
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    public boolean hasGatewayConnectPath() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    public java.lang.String getGatewayConnectPath() {
      java.lang.Object ref = gatewayConnectPath_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          gatewayConnectPath_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string gatewayConnectPath = 5;</code>
     *
     * <pre>
     * 如果是gateway，需发供客户端连接的地址
     * </pre>
     */
    public com.google.protobuf.ByteString
        getGatewayConnectPathBytes() {
      java.lang.Object ref = gatewayConnectPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gatewayConnectPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      id_ = 0;
      ip_ = "";
      loadBalance_ = 0;
      isMainLogicServer_ = false;
      gatewayConnectPath_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getIpBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, loadBalance_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(4, isMainLogicServer_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getGatewayConnectPathBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getIpBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, loadBalance_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isMainLogicServer_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getGatewayConnectPathBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.ServerLoadBalanceInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.ServerLoadBalanceInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.ServerLoadBalanceInfo}
     *
     * <pre>
     * 服务器信息及负载情况
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.ServerLoadBalanceInfo.class, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.ServerLoadBalanceInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        id_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        ip_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        loadBalance_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        isMainLogicServer_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        gatewayConnectPath_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor;
      }

      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo build() {
        org.zhangqi.proto.Gm.ServerLoadBalanceInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo buildPartial() {
        org.zhangqi.proto.Gm.ServerLoadBalanceInfo result = new org.zhangqi.proto.Gm.ServerLoadBalanceInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.id_ = id_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.ip_ = ip_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.loadBalance_ = loadBalance_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.isMainLogicServer_ = isMainLogicServer_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.gatewayConnectPath_ = gatewayConnectPath_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.ServerLoadBalanceInfo) {
          return mergeFrom((org.zhangqi.proto.Gm.ServerLoadBalanceInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.ServerLoadBalanceInfo other) {
        if (other == org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasIp()) {
          bitField0_ |= 0x00000002;
          ip_ = other.ip_;
          onChanged();
        }
        if (other.hasLoadBalance()) {
          setLoadBalance(other.getLoadBalance());
        }
        if (other.hasIsMainLogicServer()) {
          setIsMainLogicServer(other.getIsMainLogicServer());
        }
        if (other.hasGatewayConnectPath()) {
          bitField0_ |= 0x00000010;
          gatewayConnectPath_ = other.gatewayConnectPath_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.ServerLoadBalanceInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.ServerLoadBalanceInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int32 id = 1;
      private int id_ ;
      /**
       * <code>optional int32 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 id = 1;</code>
       */
      public int getId() {
        return id_;
      }
      /**
       * <code>optional int32 id = 1;</code>
       */
      public Builder setId(int value) {
        bitField0_ |= 0x00000001;
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }

      // optional string ip = 2;
      private java.lang.Object ip_ = "";
      /**
       * <code>optional string ip = 2;</code>
       */
      public boolean hasIp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string ip = 2;</code>
       */
      public java.lang.String getIp() {
        java.lang.Object ref = ip_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          ip_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string ip = 2;</code>
       */
      public com.google.protobuf.ByteString
          getIpBytes() {
        java.lang.Object ref = ip_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ip_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string ip = 2;</code>
       */
      public Builder setIp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        ip_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string ip = 2;</code>
       */
      public Builder clearIp() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ip_ = getDefaultInstance().getIp();
        onChanged();
        return this;
      }
      /**
       * <code>optional string ip = 2;</code>
       */
      public Builder setIpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        ip_ = value;
        onChanged();
        return this;
      }

      // optional int32 loadBalance = 3;
      private int loadBalance_ ;
      /**
       * <code>optional int32 loadBalance = 3;</code>
       */
      public boolean hasLoadBalance() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 loadBalance = 3;</code>
       */
      public int getLoadBalance() {
        return loadBalance_;
      }
      /**
       * <code>optional int32 loadBalance = 3;</code>
       */
      public Builder setLoadBalance(int value) {
        bitField0_ |= 0x00000004;
        loadBalance_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 loadBalance = 3;</code>
       */
      public Builder clearLoadBalance() {
        bitField0_ = (bitField0_ & ~0x00000004);
        loadBalance_ = 0;
        onChanged();
        return this;
      }

      // optional bool isMainLogicServer = 4;
      private boolean isMainLogicServer_ ;
      /**
       * <code>optional bool isMainLogicServer = 4;</code>
       *
       * <pre>
       * 如果是逻辑服务器，需发是不是主逻辑服务器
       * </pre>
       */
      public boolean hasIsMainLogicServer() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool isMainLogicServer = 4;</code>
       *
       * <pre>
       * 如果是逻辑服务器，需发是不是主逻辑服务器
       * </pre>
       */
      public boolean getIsMainLogicServer() {
        return isMainLogicServer_;
      }
      /**
       * <code>optional bool isMainLogicServer = 4;</code>
       *
       * <pre>
       * 如果是逻辑服务器，需发是不是主逻辑服务器
       * </pre>
       */
      public Builder setIsMainLogicServer(boolean value) {
        bitField0_ |= 0x00000008;
        isMainLogicServer_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isMainLogicServer = 4;</code>
       *
       * <pre>
       * 如果是逻辑服务器，需发是不是主逻辑服务器
       * </pre>
       */
      public Builder clearIsMainLogicServer() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isMainLogicServer_ = false;
        onChanged();
        return this;
      }

      // optional string gatewayConnectPath = 5;
      private java.lang.Object gatewayConnectPath_ = "";
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public boolean hasGatewayConnectPath() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public java.lang.String getGatewayConnectPath() {
        java.lang.Object ref = gatewayConnectPath_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          gatewayConnectPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public com.google.protobuf.ByteString
          getGatewayConnectPathBytes() {
        java.lang.Object ref = gatewayConnectPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gatewayConnectPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public Builder setGatewayConnectPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        gatewayConnectPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public Builder clearGatewayConnectPath() {
        bitField0_ = (bitField0_ & ~0x00000010);
        gatewayConnectPath_ = getDefaultInstance().getGatewayConnectPath();
        onChanged();
        return this;
      }
      /**
       * <code>optional string gatewayConnectPath = 5;</code>
       *
       * <pre>
       * 如果是gateway，需发供客户端连接的地址
       * </pre>
       */
      public Builder setGatewayConnectPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        gatewayConnectPath_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.ServerLoadBalanceInfo)
    }

    static {
      defaultInstance = new ServerLoadBalanceInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.ServerLoadBalanceInfo)
  }

  public interface GmLoginRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string username = 1;
    /**
     * <code>optional string username = 1;</code>
     */
    boolean hasUsername();
    /**
     * <code>optional string username = 1;</code>
     */
    java.lang.String getUsername();
    /**
     * <code>optional string username = 1;</code>
     */
    com.google.protobuf.ByteString
        getUsernameBytes();

    // optional string passwordMD5 = 2;
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    boolean hasPasswordMD5();
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    java.lang.String getPasswordMD5();
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    com.google.protobuf.ByteString
        getPasswordMD5Bytes();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmLoginRequest}
   *
   * <pre>
   * GM用户登录（GmRpcLogin = 100101）
   * </pre>
   */
  public static final class GmLoginRequest extends
      com.google.protobuf.GeneratedMessage
      implements GmLoginRequestOrBuilder {
    // Use GmLoginRequest.newBuilder() to construct.
    private GmLoginRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmLoginRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmLoginRequest defaultInstance;
    public static GmLoginRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GmLoginRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmLoginRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              username_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              passwordMD5_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmLoginRequest.class, org.zhangqi.proto.Gm.GmLoginRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GmLoginRequest> PARSER =
        new com.google.protobuf.AbstractParser<GmLoginRequest>() {
      public GmLoginRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmLoginRequest(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmLoginRequest> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional string username = 1;
    public static final int USERNAME_FIELD_NUMBER = 1;
    private java.lang.Object username_;
    /**
     * <code>optional string username = 1;</code>
     */
    public boolean hasUsername() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string username = 1;</code>
     */
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          username_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string username = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string passwordMD5 = 2;
    public static final int PASSWORDMD5_FIELD_NUMBER = 2;
    private java.lang.Object passwordMD5_;
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public boolean hasPasswordMD5() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public java.lang.String getPasswordMD5() {
      java.lang.Object ref = passwordMD5_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          passwordMD5_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string passwordMD5 = 2;</code>
     *
     * <pre>
     * MD5加密后的密码
     * </pre>
     */
    public com.google.protobuf.ByteString
        getPasswordMD5Bytes() {
      java.lang.Object ref = passwordMD5_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        passwordMD5_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      username_ = "";
      passwordMD5_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUsernameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getPasswordMD5Bytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getUsernameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getPasswordMD5Bytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmLoginRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmLoginRequest}
     *
     * <pre>
     * GM用户登录（GmRpcLogin = 100101）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmLoginRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmLoginRequest.class, org.zhangqi.proto.Gm.GmLoginRequest.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmLoginRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        username_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        passwordMD5_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginRequest_descriptor;
      }

      public org.zhangqi.proto.Gm.GmLoginRequest getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmLoginRequest.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmLoginRequest build() {
        org.zhangqi.proto.Gm.GmLoginRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmLoginRequest buildPartial() {
        org.zhangqi.proto.Gm.GmLoginRequest result = new org.zhangqi.proto.Gm.GmLoginRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.username_ = username_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.passwordMD5_ = passwordMD5_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmLoginRequest) {
          return mergeFrom((org.zhangqi.proto.Gm.GmLoginRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmLoginRequest other) {
        if (other == org.zhangqi.proto.Gm.GmLoginRequest.getDefaultInstance()) return this;
        if (other.hasUsername()) {
          bitField0_ |= 0x00000001;
          username_ = other.username_;
          onChanged();
        }
        if (other.hasPasswordMD5()) {
          bitField0_ |= 0x00000002;
          passwordMD5_ = other.passwordMD5_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmLoginRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmLoginRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string username = 1;
      private java.lang.Object username_ = "";
      /**
       * <code>optional string username = 1;</code>
       */
      public boolean hasUsername() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        username_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public Builder clearUsername() {
        bitField0_ = (bitField0_ & ~0x00000001);
        username_ = getDefaultInstance().getUsername();
        onChanged();
        return this;
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        username_ = value;
        onChanged();
        return this;
      }

      // optional string passwordMD5 = 2;
      private java.lang.Object passwordMD5_ = "";
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public boolean hasPasswordMD5() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public java.lang.String getPasswordMD5() {
        java.lang.Object ref = passwordMD5_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          passwordMD5_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public com.google.protobuf.ByteString
          getPasswordMD5Bytes() {
        java.lang.Object ref = passwordMD5_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          passwordMD5_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder setPasswordMD5(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        passwordMD5_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder clearPasswordMD5() {
        bitField0_ = (bitField0_ & ~0x00000002);
        passwordMD5_ = getDefaultInstance().getPasswordMD5();
        onChanged();
        return this;
      }
      /**
       * <code>optional string passwordMD5 = 2;</code>
       *
       * <pre>
       * MD5加密后的密码
       * </pre>
       */
      public Builder setPasswordMD5Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        passwordMD5_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmLoginRequest)
    }

    static {
      defaultInstance = new GmLoginRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmLoginRequest)
  }

  public interface GmLoginResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    boolean hasGmUserInfo();
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    org.zhangqi.proto.Gm.GmUserInfo getGmUserInfo();
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    org.zhangqi.proto.Gm.GmUserInfoOrBuilder getGmUserInfoOrBuilder();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmLoginResponse}
   */
  public static final class GmLoginResponse extends
      com.google.protobuf.GeneratedMessage
      implements GmLoginResponseOrBuilder {
    // Use GmLoginResponse.newBuilder() to construct.
    private GmLoginResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmLoginResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmLoginResponse defaultInstance;
    public static GmLoginResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GmLoginResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmLoginResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              org.zhangqi.proto.Gm.GmUserInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = gmUserInfo_.toBuilder();
              }
              gmUserInfo_ = input.readMessage(org.zhangqi.proto.Gm.GmUserInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(gmUserInfo_);
                gmUserInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmLoginResponse.class, org.zhangqi.proto.Gm.GmLoginResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<GmLoginResponse> PARSER =
        new com.google.protobuf.AbstractParser<GmLoginResponse>() {
      public GmLoginResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmLoginResponse(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmLoginResponse> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;
    public static final int GMUSERINFO_FIELD_NUMBER = 1;
    private org.zhangqi.proto.Gm.GmUserInfo gmUserInfo_;
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    public boolean hasGmUserInfo() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    public org.zhangqi.proto.Gm.GmUserInfo getGmUserInfo() {
      return gmUserInfo_;
    }
    /**
     * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
     */
    public org.zhangqi.proto.Gm.GmUserInfoOrBuilder getGmUserInfoOrBuilder() {
      return gmUserInfo_;
    }

    private void initFields() {
      gmUserInfo_ = org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, gmUserInfo_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, gmUserInfo_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmLoginResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmLoginResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmLoginResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmLoginResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmLoginResponse.class, org.zhangqi.proto.Gm.GmLoginResponse.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmLoginResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getGmUserInfoFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (gmUserInfoBuilder_ == null) {
          gmUserInfo_ = org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance();
        } else {
          gmUserInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmLoginResponse_descriptor;
      }

      public org.zhangqi.proto.Gm.GmLoginResponse getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmLoginResponse.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmLoginResponse build() {
        org.zhangqi.proto.Gm.GmLoginResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmLoginResponse buildPartial() {
        org.zhangqi.proto.Gm.GmLoginResponse result = new org.zhangqi.proto.Gm.GmLoginResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (gmUserInfoBuilder_ == null) {
          result.gmUserInfo_ = gmUserInfo_;
        } else {
          result.gmUserInfo_ = gmUserInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmLoginResponse) {
          return mergeFrom((org.zhangqi.proto.Gm.GmLoginResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmLoginResponse other) {
        if (other == org.zhangqi.proto.Gm.GmLoginResponse.getDefaultInstance()) return this;
        if (other.hasGmUserInfo()) {
          mergeGmUserInfo(other.getGmUserInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmLoginResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmLoginResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;
      private org.zhangqi.proto.Gm.GmUserInfo gmUserInfo_ = org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          org.zhangqi.proto.Gm.GmUserInfo, org.zhangqi.proto.Gm.GmUserInfo.Builder, org.zhangqi.proto.Gm.GmUserInfoOrBuilder> gmUserInfoBuilder_;
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public boolean hasGmUserInfo() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public org.zhangqi.proto.Gm.GmUserInfo getGmUserInfo() {
        if (gmUserInfoBuilder_ == null) {
          return gmUserInfo_;
        } else {
          return gmUserInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public Builder setGmUserInfo(org.zhangqi.proto.Gm.GmUserInfo value) {
        if (gmUserInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gmUserInfo_ = value;
          onChanged();
        } else {
          gmUserInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public Builder setGmUserInfo(
          org.zhangqi.proto.Gm.GmUserInfo.Builder builderForValue) {
        if (gmUserInfoBuilder_ == null) {
          gmUserInfo_ = builderForValue.build();
          onChanged();
        } else {
          gmUserInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public Builder mergeGmUserInfo(org.zhangqi.proto.Gm.GmUserInfo value) {
        if (gmUserInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              gmUserInfo_ != org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance()) {
            gmUserInfo_ =
              org.zhangqi.proto.Gm.GmUserInfo.newBuilder(gmUserInfo_).mergeFrom(value).buildPartial();
          } else {
            gmUserInfo_ = value;
          }
          onChanged();
        } else {
          gmUserInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public Builder clearGmUserInfo() {
        if (gmUserInfoBuilder_ == null) {
          gmUserInfo_ = org.zhangqi.proto.Gm.GmUserInfo.getDefaultInstance();
          onChanged();
        } else {
          gmUserInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public org.zhangqi.proto.Gm.GmUserInfo.Builder getGmUserInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getGmUserInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      public org.zhangqi.proto.Gm.GmUserInfoOrBuilder getGmUserInfoOrBuilder() {
        if (gmUserInfoBuilder_ != null) {
          return gmUserInfoBuilder_.getMessageOrBuilder();
        } else {
          return gmUserInfo_;
        }
      }
      /**
       * <code>optional .org.zhangqi.proto.GmUserInfo gmUserInfo = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          org.zhangqi.proto.Gm.GmUserInfo, org.zhangqi.proto.Gm.GmUserInfo.Builder, org.zhangqi.proto.Gm.GmUserInfoOrBuilder> 
          getGmUserInfoFieldBuilder() {
        if (gmUserInfoBuilder_ == null) {
          gmUserInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              org.zhangqi.proto.Gm.GmUserInfo, org.zhangqi.proto.Gm.GmUserInfo.Builder, org.zhangqi.proto.Gm.GmUserInfoOrBuilder>(
                  gmUserInfo_,
                  getParentForChildren(),
                  isClean());
          gmUserInfo_ = null;
        }
        return gmUserInfoBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmLoginResponse)
    }

    static {
      defaultInstance = new GmLoginResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmLoginResponse)
  }

  public interface GmGetAllServerStateRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmGetAllServerStateRequest}
   *
   * <pre>
   * 获取所有服务器状态信息（GmRpcGetAllServerState = 100201）
   * </pre>
   */
  public static final class GmGetAllServerStateRequest extends
      com.google.protobuf.GeneratedMessage
      implements GmGetAllServerStateRequestOrBuilder {
    // Use GmGetAllServerStateRequest.newBuilder() to construct.
    private GmGetAllServerStateRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmGetAllServerStateRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmGetAllServerStateRequest defaultInstance;
    public static GmGetAllServerStateRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GmGetAllServerStateRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmGetAllServerStateRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmGetAllServerStateRequest.class, org.zhangqi.proto.Gm.GmGetAllServerStateRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GmGetAllServerStateRequest> PARSER =
        new com.google.protobuf.AbstractParser<GmGetAllServerStateRequest>() {
      public GmGetAllServerStateRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmGetAllServerStateRequest(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmGetAllServerStateRequest> getParserForType() {
      return PARSER;
    }

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmGetAllServerStateRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmGetAllServerStateRequest}
     *
     * <pre>
     * 获取所有服务器状态信息（GmRpcGetAllServerState = 100201）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmGetAllServerStateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmGetAllServerStateRequest.class, org.zhangqi.proto.Gm.GmGetAllServerStateRequest.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmGetAllServerStateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor;
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateRequest getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmGetAllServerStateRequest.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateRequest build() {
        org.zhangqi.proto.Gm.GmGetAllServerStateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateRequest buildPartial() {
        org.zhangqi.proto.Gm.GmGetAllServerStateRequest result = new org.zhangqi.proto.Gm.GmGetAllServerStateRequest(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmGetAllServerStateRequest) {
          return mergeFrom((org.zhangqi.proto.Gm.GmGetAllServerStateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmGetAllServerStateRequest other) {
        if (other == org.zhangqi.proto.Gm.GmGetAllServerStateRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmGetAllServerStateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmGetAllServerStateRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmGetAllServerStateRequest)
    }

    static {
      defaultInstance = new GmGetAllServerStateRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmGetAllServerStateRequest)
  }

  public interface GmGetAllServerStateResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> 
        getLogicServerInfosList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfo getLogicServerInfos(int index);
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    int getLogicServerInfosCount();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getLogicServerInfosOrBuilderList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getLogicServerInfosOrBuilder(
        int index);

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> 
        getBattleServerInfosList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfo getBattleServerInfos(int index);
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    int getBattleServerInfosCount();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getBattleServerInfosOrBuilderList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getBattleServerInfosOrBuilder(
        int index);

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> 
        getGatewayInfosList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfo getGatewayInfos(int index);
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    int getGatewayInfosCount();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getGatewayInfosOrBuilderList();
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getGatewayInfosOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmGetAllServerStateResponse}
   */
  public static final class GmGetAllServerStateResponse extends
      com.google.protobuf.GeneratedMessage
      implements GmGetAllServerStateResponseOrBuilder {
    // Use GmGetAllServerStateResponse.newBuilder() to construct.
    private GmGetAllServerStateResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmGetAllServerStateResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmGetAllServerStateResponse defaultInstance;
    public static GmGetAllServerStateResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GmGetAllServerStateResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmGetAllServerStateResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                logicServerInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              logicServerInfos_.add(input.readMessage(org.zhangqi.proto.Gm.ServerLoadBalanceInfo.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                battleServerInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>();
                mutable_bitField0_ |= 0x00000002;
              }
              battleServerInfos_.add(input.readMessage(org.zhangqi.proto.Gm.ServerLoadBalanceInfo.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                gatewayInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>();
                mutable_bitField0_ |= 0x00000004;
              }
              gatewayInfos_.add(input.readMessage(org.zhangqi.proto.Gm.ServerLoadBalanceInfo.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          logicServerInfos_ = java.util.Collections.unmodifiableList(logicServerInfos_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          battleServerInfos_ = java.util.Collections.unmodifiableList(battleServerInfos_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          gatewayInfos_ = java.util.Collections.unmodifiableList(gatewayInfos_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmGetAllServerStateResponse.class, org.zhangqi.proto.Gm.GmGetAllServerStateResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<GmGetAllServerStateResponse> PARSER =
        new com.google.protobuf.AbstractParser<GmGetAllServerStateResponse>() {
      public GmGetAllServerStateResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmGetAllServerStateResponse(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmGetAllServerStateResponse> getParserForType() {
      return PARSER;
    }

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;
    public static final int LOGICSERVERINFOS_FIELD_NUMBER = 1;
    private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> logicServerInfos_;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getLogicServerInfosList() {
      return logicServerInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getLogicServerInfosOrBuilderList() {
      return logicServerInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    public int getLogicServerInfosCount() {
      return logicServerInfos_.size();
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getLogicServerInfos(int index) {
      return logicServerInfos_.get(index);
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getLogicServerInfosOrBuilder(
        int index) {
      return logicServerInfos_.get(index);
    }

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;
    public static final int BATTLESERVERINFOS_FIELD_NUMBER = 2;
    private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> battleServerInfos_;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getBattleServerInfosList() {
      return battleServerInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getBattleServerInfosOrBuilderList() {
      return battleServerInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    public int getBattleServerInfosCount() {
      return battleServerInfos_.size();
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getBattleServerInfos(int index) {
      return battleServerInfos_.get(index);
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getBattleServerInfosOrBuilder(
        int index) {
      return battleServerInfos_.get(index);
    }

    // repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;
    public static final int GATEWAYINFOS_FIELD_NUMBER = 3;
    private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> gatewayInfos_;
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getGatewayInfosList() {
      return gatewayInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
        getGatewayInfosOrBuilderList() {
      return gatewayInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    public int getGatewayInfosCount() {
      return gatewayInfos_.size();
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getGatewayInfos(int index) {
      return gatewayInfos_.get(index);
    }
    /**
     * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
     */
    public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getGatewayInfosOrBuilder(
        int index) {
      return gatewayInfos_.get(index);
    }

    private void initFields() {
      logicServerInfos_ = java.util.Collections.emptyList();
      battleServerInfos_ = java.util.Collections.emptyList();
      gatewayInfos_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < logicServerInfos_.size(); i++) {
        output.writeMessage(1, logicServerInfos_.get(i));
      }
      for (int i = 0; i < battleServerInfos_.size(); i++) {
        output.writeMessage(2, battleServerInfos_.get(i));
      }
      for (int i = 0; i < gatewayInfos_.size(); i++) {
        output.writeMessage(3, gatewayInfos_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < logicServerInfos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, logicServerInfos_.get(i));
      }
      for (int i = 0; i < battleServerInfos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, battleServerInfos_.get(i));
      }
      for (int i = 0; i < gatewayInfos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, gatewayInfos_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetAllServerStateResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmGetAllServerStateResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmGetAllServerStateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmGetAllServerStateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmGetAllServerStateResponse.class, org.zhangqi.proto.Gm.GmGetAllServerStateResponse.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmGetAllServerStateResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getLogicServerInfosFieldBuilder();
          getBattleServerInfosFieldBuilder();
          getGatewayInfosFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (logicServerInfosBuilder_ == null) {
          logicServerInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          logicServerInfosBuilder_.clear();
        }
        if (battleServerInfosBuilder_ == null) {
          battleServerInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          battleServerInfosBuilder_.clear();
        }
        if (gatewayInfosBuilder_ == null) {
          gatewayInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          gatewayInfosBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor;
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateResponse getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmGetAllServerStateResponse.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateResponse build() {
        org.zhangqi.proto.Gm.GmGetAllServerStateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmGetAllServerStateResponse buildPartial() {
        org.zhangqi.proto.Gm.GmGetAllServerStateResponse result = new org.zhangqi.proto.Gm.GmGetAllServerStateResponse(this);
        int from_bitField0_ = bitField0_;
        if (logicServerInfosBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            logicServerInfos_ = java.util.Collections.unmodifiableList(logicServerInfos_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.logicServerInfos_ = logicServerInfos_;
        } else {
          result.logicServerInfos_ = logicServerInfosBuilder_.build();
        }
        if (battleServerInfosBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            battleServerInfos_ = java.util.Collections.unmodifiableList(battleServerInfos_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.battleServerInfos_ = battleServerInfos_;
        } else {
          result.battleServerInfos_ = battleServerInfosBuilder_.build();
        }
        if (gatewayInfosBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            gatewayInfos_ = java.util.Collections.unmodifiableList(gatewayInfos_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.gatewayInfos_ = gatewayInfos_;
        } else {
          result.gatewayInfos_ = gatewayInfosBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmGetAllServerStateResponse) {
          return mergeFrom((org.zhangqi.proto.Gm.GmGetAllServerStateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmGetAllServerStateResponse other) {
        if (other == org.zhangqi.proto.Gm.GmGetAllServerStateResponse.getDefaultInstance()) return this;
        if (logicServerInfosBuilder_ == null) {
          if (!other.logicServerInfos_.isEmpty()) {
            if (logicServerInfos_.isEmpty()) {
              logicServerInfos_ = other.logicServerInfos_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLogicServerInfosIsMutable();
              logicServerInfos_.addAll(other.logicServerInfos_);
            }
            onChanged();
          }
        } else {
          if (!other.logicServerInfos_.isEmpty()) {
            if (logicServerInfosBuilder_.isEmpty()) {
              logicServerInfosBuilder_.dispose();
              logicServerInfosBuilder_ = null;
              logicServerInfos_ = other.logicServerInfos_;
              bitField0_ = (bitField0_ & ~0x00000001);
              logicServerInfosBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLogicServerInfosFieldBuilder() : null;
            } else {
              logicServerInfosBuilder_.addAllMessages(other.logicServerInfos_);
            }
          }
        }
        if (battleServerInfosBuilder_ == null) {
          if (!other.battleServerInfos_.isEmpty()) {
            if (battleServerInfos_.isEmpty()) {
              battleServerInfos_ = other.battleServerInfos_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureBattleServerInfosIsMutable();
              battleServerInfos_.addAll(other.battleServerInfos_);
            }
            onChanged();
          }
        } else {
          if (!other.battleServerInfos_.isEmpty()) {
            if (battleServerInfosBuilder_.isEmpty()) {
              battleServerInfosBuilder_.dispose();
              battleServerInfosBuilder_ = null;
              battleServerInfos_ = other.battleServerInfos_;
              bitField0_ = (bitField0_ & ~0x00000002);
              battleServerInfosBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBattleServerInfosFieldBuilder() : null;
            } else {
              battleServerInfosBuilder_.addAllMessages(other.battleServerInfos_);
            }
          }
        }
        if (gatewayInfosBuilder_ == null) {
          if (!other.gatewayInfos_.isEmpty()) {
            if (gatewayInfos_.isEmpty()) {
              gatewayInfos_ = other.gatewayInfos_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureGatewayInfosIsMutable();
              gatewayInfos_.addAll(other.gatewayInfos_);
            }
            onChanged();
          }
        } else {
          if (!other.gatewayInfos_.isEmpty()) {
            if (gatewayInfosBuilder_.isEmpty()) {
              gatewayInfosBuilder_.dispose();
              gatewayInfosBuilder_ = null;
              gatewayInfos_ = other.gatewayInfos_;
              bitField0_ = (bitField0_ & ~0x00000004);
              gatewayInfosBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getGatewayInfosFieldBuilder() : null;
            } else {
              gatewayInfosBuilder_.addAllMessages(other.gatewayInfos_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmGetAllServerStateResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmGetAllServerStateResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;
      private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> logicServerInfos_ =
        java.util.Collections.emptyList();
      private void ensureLogicServerInfosIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          logicServerInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>(logicServerInfos_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> logicServerInfosBuilder_;

      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getLogicServerInfosList() {
        if (logicServerInfosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(logicServerInfos_);
        } else {
          return logicServerInfosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public int getLogicServerInfosCount() {
        if (logicServerInfosBuilder_ == null) {
          return logicServerInfos_.size();
        } else {
          return logicServerInfosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getLogicServerInfos(int index) {
        if (logicServerInfosBuilder_ == null) {
          return logicServerInfos_.get(index);
        } else {
          return logicServerInfosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder setLogicServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (logicServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.set(index, value);
          onChanged();
        } else {
          logicServerInfosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder setLogicServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (logicServerInfosBuilder_ == null) {
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.set(index, builderForValue.build());
          onChanged();
        } else {
          logicServerInfosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder addLogicServerInfos(org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (logicServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.add(value);
          onChanged();
        } else {
          logicServerInfosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder addLogicServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (logicServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.add(index, value);
          onChanged();
        } else {
          logicServerInfosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder addLogicServerInfos(
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (logicServerInfosBuilder_ == null) {
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.add(builderForValue.build());
          onChanged();
        } else {
          logicServerInfosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder addLogicServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (logicServerInfosBuilder_ == null) {
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.add(index, builderForValue.build());
          onChanged();
        } else {
          logicServerInfosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder addAllLogicServerInfos(
          java.lang.Iterable<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfo> values) {
        if (logicServerInfosBuilder_ == null) {
          ensureLogicServerInfosIsMutable();
          super.addAll(values, logicServerInfos_);
          onChanged();
        } else {
          logicServerInfosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder clearLogicServerInfos() {
        if (logicServerInfosBuilder_ == null) {
          logicServerInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          logicServerInfosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public Builder removeLogicServerInfos(int index) {
        if (logicServerInfosBuilder_ == null) {
          ensureLogicServerInfosIsMutable();
          logicServerInfos_.remove(index);
          onChanged();
        } else {
          logicServerInfosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder getLogicServerInfosBuilder(
          int index) {
        return getLogicServerInfosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getLogicServerInfosOrBuilder(
          int index) {
        if (logicServerInfosBuilder_ == null) {
          return logicServerInfos_.get(index);  } else {
          return logicServerInfosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
           getLogicServerInfosOrBuilderList() {
        if (logicServerInfosBuilder_ != null) {
          return logicServerInfosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(logicServerInfos_);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addLogicServerInfosBuilder() {
        return getLogicServerInfosFieldBuilder().addBuilder(
            org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addLogicServerInfosBuilder(
          int index) {
        return getLogicServerInfosFieldBuilder().addBuilder(
            index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo logicServerInfos = 1;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder> 
           getLogicServerInfosBuilderList() {
        return getLogicServerInfosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
          getLogicServerInfosFieldBuilder() {
        if (logicServerInfosBuilder_ == null) {
          logicServerInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder>(
                  logicServerInfos_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          logicServerInfos_ = null;
        }
        return logicServerInfosBuilder_;
      }

      // repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;
      private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> battleServerInfos_ =
        java.util.Collections.emptyList();
      private void ensureBattleServerInfosIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          battleServerInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>(battleServerInfos_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> battleServerInfosBuilder_;

      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getBattleServerInfosList() {
        if (battleServerInfosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(battleServerInfos_);
        } else {
          return battleServerInfosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public int getBattleServerInfosCount() {
        if (battleServerInfosBuilder_ == null) {
          return battleServerInfos_.size();
        } else {
          return battleServerInfosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getBattleServerInfos(int index) {
        if (battleServerInfosBuilder_ == null) {
          return battleServerInfos_.get(index);
        } else {
          return battleServerInfosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder setBattleServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (battleServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.set(index, value);
          onChanged();
        } else {
          battleServerInfosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder setBattleServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (battleServerInfosBuilder_ == null) {
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.set(index, builderForValue.build());
          onChanged();
        } else {
          battleServerInfosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder addBattleServerInfos(org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (battleServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.add(value);
          onChanged();
        } else {
          battleServerInfosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder addBattleServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (battleServerInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.add(index, value);
          onChanged();
        } else {
          battleServerInfosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder addBattleServerInfos(
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (battleServerInfosBuilder_ == null) {
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.add(builderForValue.build());
          onChanged();
        } else {
          battleServerInfosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder addBattleServerInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (battleServerInfosBuilder_ == null) {
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.add(index, builderForValue.build());
          onChanged();
        } else {
          battleServerInfosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder addAllBattleServerInfos(
          java.lang.Iterable<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfo> values) {
        if (battleServerInfosBuilder_ == null) {
          ensureBattleServerInfosIsMutable();
          super.addAll(values, battleServerInfos_);
          onChanged();
        } else {
          battleServerInfosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder clearBattleServerInfos() {
        if (battleServerInfosBuilder_ == null) {
          battleServerInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          battleServerInfosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public Builder removeBattleServerInfos(int index) {
        if (battleServerInfosBuilder_ == null) {
          ensureBattleServerInfosIsMutable();
          battleServerInfos_.remove(index);
          onChanged();
        } else {
          battleServerInfosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder getBattleServerInfosBuilder(
          int index) {
        return getBattleServerInfosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getBattleServerInfosOrBuilder(
          int index) {
        if (battleServerInfosBuilder_ == null) {
          return battleServerInfos_.get(index);  } else {
          return battleServerInfosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
           getBattleServerInfosOrBuilderList() {
        if (battleServerInfosBuilder_ != null) {
          return battleServerInfosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(battleServerInfos_);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addBattleServerInfosBuilder() {
        return getBattleServerInfosFieldBuilder().addBuilder(
            org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addBattleServerInfosBuilder(
          int index) {
        return getBattleServerInfosFieldBuilder().addBuilder(
            index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo battleServerInfos = 2;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder> 
           getBattleServerInfosBuilderList() {
        return getBattleServerInfosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
          getBattleServerInfosFieldBuilder() {
        if (battleServerInfosBuilder_ == null) {
          battleServerInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder>(
                  battleServerInfos_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          battleServerInfos_ = null;
        }
        return battleServerInfosBuilder_;
      }

      // repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;
      private java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> gatewayInfos_ =
        java.util.Collections.emptyList();
      private void ensureGatewayInfosIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          gatewayInfos_ = new java.util.ArrayList<org.zhangqi.proto.Gm.ServerLoadBalanceInfo>(gatewayInfos_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> gatewayInfosBuilder_;

      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo> getGatewayInfosList() {
        if (gatewayInfosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(gatewayInfos_);
        } else {
          return gatewayInfosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public int getGatewayInfosCount() {
        if (gatewayInfosBuilder_ == null) {
          return gatewayInfos_.size();
        } else {
          return gatewayInfosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo getGatewayInfos(int index) {
        if (gatewayInfosBuilder_ == null) {
          return gatewayInfos_.get(index);
        } else {
          return gatewayInfosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder setGatewayInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (gatewayInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGatewayInfosIsMutable();
          gatewayInfos_.set(index, value);
          onChanged();
        } else {
          gatewayInfosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder setGatewayInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (gatewayInfosBuilder_ == null) {
          ensureGatewayInfosIsMutable();
          gatewayInfos_.set(index, builderForValue.build());
          onChanged();
        } else {
          gatewayInfosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder addGatewayInfos(org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (gatewayInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGatewayInfosIsMutable();
          gatewayInfos_.add(value);
          onChanged();
        } else {
          gatewayInfosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder addGatewayInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo value) {
        if (gatewayInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGatewayInfosIsMutable();
          gatewayInfos_.add(index, value);
          onChanged();
        } else {
          gatewayInfosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder addGatewayInfos(
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (gatewayInfosBuilder_ == null) {
          ensureGatewayInfosIsMutable();
          gatewayInfos_.add(builderForValue.build());
          onChanged();
        } else {
          gatewayInfosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder addGatewayInfos(
          int index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder builderForValue) {
        if (gatewayInfosBuilder_ == null) {
          ensureGatewayInfosIsMutable();
          gatewayInfos_.add(index, builderForValue.build());
          onChanged();
        } else {
          gatewayInfosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder addAllGatewayInfos(
          java.lang.Iterable<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfo> values) {
        if (gatewayInfosBuilder_ == null) {
          ensureGatewayInfosIsMutable();
          super.addAll(values, gatewayInfos_);
          onChanged();
        } else {
          gatewayInfosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder clearGatewayInfos() {
        if (gatewayInfosBuilder_ == null) {
          gatewayInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          gatewayInfosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public Builder removeGatewayInfos(int index) {
        if (gatewayInfosBuilder_ == null) {
          ensureGatewayInfosIsMutable();
          gatewayInfos_.remove(index);
          onChanged();
        } else {
          gatewayInfosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder getGatewayInfosBuilder(
          int index) {
        return getGatewayInfosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder getGatewayInfosOrBuilder(
          int index) {
        if (gatewayInfosBuilder_ == null) {
          return gatewayInfos_.get(index);  } else {
          return gatewayInfosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public java.util.List<? extends org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
           getGatewayInfosOrBuilderList() {
        if (gatewayInfosBuilder_ != null) {
          return gatewayInfosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(gatewayInfos_);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addGatewayInfosBuilder() {
        return getGatewayInfosFieldBuilder().addBuilder(
            org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder addGatewayInfosBuilder(
          int index) {
        return getGatewayInfosFieldBuilder().addBuilder(
            index, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.ServerLoadBalanceInfo gatewayInfos = 3;</code>
       */
      public java.util.List<org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder> 
           getGatewayInfosBuilderList() {
        return getGatewayInfosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder> 
          getGatewayInfosFieldBuilder() {
        if (gatewayInfosBuilder_ == null) {
          gatewayInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.zhangqi.proto.Gm.ServerLoadBalanceInfo, org.zhangqi.proto.Gm.ServerLoadBalanceInfo.Builder, org.zhangqi.proto.Gm.ServerLoadBalanceInfoOrBuilder>(
                  gatewayInfos_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          gatewayInfos_ = null;
        }
        return gatewayInfosBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmGetAllServerStateResponse)
    }

    static {
      defaultInstance = new GmGetAllServerStateResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmGetAllServerStateResponse)
  }

  public interface GmExecuteCmdRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;
    /**
     * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
     */
    boolean hasCmdType();
    /**
     * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
     */
    org.zhangqi.proto.Common.GmCmdTypeEnum getCmdType();

    // optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;
    /**
     * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
     */
    boolean hasServerType();
    /**
     * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
     */
    org.zhangqi.proto.Common.RemoteServerTypeEnum getServerType();

    // repeated int32 serverIds = 3;
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    java.util.List<java.lang.Integer> getServerIdsList();
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    int getServerIdsCount();
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    int getServerIds(int index);

    // repeated string params = 4;
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    java.util.List<java.lang.String>
    getParamsList();
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    int getParamsCount();
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    java.lang.String getParams(int index);
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    com.google.protobuf.ByteString
        getParamsBytes(int index);
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmExecuteCmdRequest}
   *
   * <pre>
   * 让GM服务器发送GM指令给指定服务器（GmRpcExecuteCmd = 100202）
   * </pre>
   */
  public static final class GmExecuteCmdRequest extends
      com.google.protobuf.GeneratedMessage
      implements GmExecuteCmdRequestOrBuilder {
    // Use GmExecuteCmdRequest.newBuilder() to construct.
    private GmExecuteCmdRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmExecuteCmdRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmExecuteCmdRequest defaultInstance;
    public static GmExecuteCmdRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GmExecuteCmdRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmExecuteCmdRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.zhangqi.proto.Common.GmCmdTypeEnum value = org.zhangqi.proto.Common.GmCmdTypeEnum.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                cmdType_ = value;
              }
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.zhangqi.proto.Common.RemoteServerTypeEnum value = org.zhangqi.proto.Common.RemoteServerTypeEnum.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                serverType_ = value;
              }
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                serverIds_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              serverIds_.add(input.readInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                serverIds_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                serverIds_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                params_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              params_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          serverIds_ = java.util.Collections.unmodifiableList(serverIds_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          params_ = new com.google.protobuf.UnmodifiableLazyStringList(params_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmExecuteCmdRequest.class, org.zhangqi.proto.Gm.GmExecuteCmdRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GmExecuteCmdRequest> PARSER =
        new com.google.protobuf.AbstractParser<GmExecuteCmdRequest>() {
      public GmExecuteCmdRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmExecuteCmdRequest(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmExecuteCmdRequest> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;
    public static final int CMDTYPE_FIELD_NUMBER = 1;
    private org.zhangqi.proto.Common.GmCmdTypeEnum cmdType_;
    /**
     * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
     */
    public boolean hasCmdType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
     */
    public org.zhangqi.proto.Common.GmCmdTypeEnum getCmdType() {
      return cmdType_;
    }

    // optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;
    public static final int SERVERTYPE_FIELD_NUMBER = 2;
    private org.zhangqi.proto.Common.RemoteServerTypeEnum serverType_;
    /**
     * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
     */
    public boolean hasServerType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
     */
    public org.zhangqi.proto.Common.RemoteServerTypeEnum getServerType() {
      return serverType_;
    }

    // repeated int32 serverIds = 3;
    public static final int SERVERIDS_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> serverIds_;
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getServerIdsList() {
      return serverIds_;
    }
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    public int getServerIdsCount() {
      return serverIds_.size();
    }
    /**
     * <code>repeated int32 serverIds = 3;</code>
     *
     * <pre>
     * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
     * </pre>
     */
    public int getServerIds(int index) {
      return serverIds_.get(index);
    }

    // repeated string params = 4;
    public static final int PARAMS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList params_;
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    public java.util.List<java.lang.String>
        getParamsList() {
      return params_;
    }
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    public int getParamsCount() {
      return params_.size();
    }
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    public java.lang.String getParams(int index) {
      return params_.get(index);
    }
    /**
     * <code>repeated string params = 4;</code>
     *
     * <pre>
     * 不同指令所需的操作参数
     * </pre>
     */
    public com.google.protobuf.ByteString
        getParamsBytes(int index) {
      return params_.getByteString(index);
    }

    private void initFields() {
      cmdType_ = org.zhangqi.proto.Common.GmCmdTypeEnum.GmCmdReloadTableConfig;
      serverType_ = org.zhangqi.proto.Common.RemoteServerTypeEnum.ServerTypeLogic;
      serverIds_ = java.util.Collections.emptyList();
      params_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, cmdType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, serverType_.getNumber());
      }
      for (int i = 0; i < serverIds_.size(); i++) {
        output.writeInt32(3, serverIds_.get(i));
      }
      for (int i = 0; i < params_.size(); i++) {
        output.writeBytes(4, params_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, cmdType_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, serverType_.getNumber());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < serverIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(serverIds_.get(i));
        }
        size += dataSize;
        size += 1 * getServerIdsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < params_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(params_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getParamsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmExecuteCmdRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmExecuteCmdRequest}
     *
     * <pre>
     * 让GM服务器发送GM指令给指定服务器（GmRpcExecuteCmd = 100202）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmExecuteCmdRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmExecuteCmdRequest.class, org.zhangqi.proto.Gm.GmExecuteCmdRequest.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmExecuteCmdRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        cmdType_ = org.zhangqi.proto.Common.GmCmdTypeEnum.GmCmdReloadTableConfig;
        bitField0_ = (bitField0_ & ~0x00000001);
        serverType_ = org.zhangqi.proto.Common.RemoteServerTypeEnum.ServerTypeLogic;
        bitField0_ = (bitField0_ & ~0x00000002);
        serverIds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        params_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor;
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdRequest getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmExecuteCmdRequest.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdRequest build() {
        org.zhangqi.proto.Gm.GmExecuteCmdRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdRequest buildPartial() {
        org.zhangqi.proto.Gm.GmExecuteCmdRequest result = new org.zhangqi.proto.Gm.GmExecuteCmdRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.cmdType_ = cmdType_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.serverType_ = serverType_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          serverIds_ = java.util.Collections.unmodifiableList(serverIds_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.serverIds_ = serverIds_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          params_ = new com.google.protobuf.UnmodifiableLazyStringList(
              params_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.params_ = params_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmExecuteCmdRequest) {
          return mergeFrom((org.zhangqi.proto.Gm.GmExecuteCmdRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmExecuteCmdRequest other) {
        if (other == org.zhangqi.proto.Gm.GmExecuteCmdRequest.getDefaultInstance()) return this;
        if (other.hasCmdType()) {
          setCmdType(other.getCmdType());
        }
        if (other.hasServerType()) {
          setServerType(other.getServerType());
        }
        if (!other.serverIds_.isEmpty()) {
          if (serverIds_.isEmpty()) {
            serverIds_ = other.serverIds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureServerIdsIsMutable();
            serverIds_.addAll(other.serverIds_);
          }
          onChanged();
        }
        if (!other.params_.isEmpty()) {
          if (params_.isEmpty()) {
            params_ = other.params_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureParamsIsMutable();
            params_.addAll(other.params_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmExecuteCmdRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmExecuteCmdRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;
      private org.zhangqi.proto.Common.GmCmdTypeEnum cmdType_ = org.zhangqi.proto.Common.GmCmdTypeEnum.GmCmdReloadTableConfig;
      /**
       * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
       */
      public boolean hasCmdType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
       */
      public org.zhangqi.proto.Common.GmCmdTypeEnum getCmdType() {
        return cmdType_;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
       */
      public Builder setCmdType(org.zhangqi.proto.Common.GmCmdTypeEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        cmdType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmCmdTypeEnum cmdType = 1;</code>
       */
      public Builder clearCmdType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        cmdType_ = org.zhangqi.proto.Common.GmCmdTypeEnum.GmCmdReloadTableConfig;
        onChanged();
        return this;
      }

      // optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;
      private org.zhangqi.proto.Common.RemoteServerTypeEnum serverType_ = org.zhangqi.proto.Common.RemoteServerTypeEnum.ServerTypeLogic;
      /**
       * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
       */
      public boolean hasServerType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
       */
      public org.zhangqi.proto.Common.RemoteServerTypeEnum getServerType() {
        return serverType_;
      }
      /**
       * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
       */
      public Builder setServerType(org.zhangqi.proto.Common.RemoteServerTypeEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        serverType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.RemoteServerTypeEnum serverType = 2;</code>
       */
      public Builder clearServerType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        serverType_ = org.zhangqi.proto.Common.RemoteServerTypeEnum.ServerTypeLogic;
        onChanged();
        return this;
      }

      // repeated int32 serverIds = 3;
      private java.util.List<java.lang.Integer> serverIds_ = java.util.Collections.emptyList();
      private void ensureServerIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          serverIds_ = new java.util.ArrayList<java.lang.Integer>(serverIds_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getServerIdsList() {
        return java.util.Collections.unmodifiableList(serverIds_);
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public int getServerIdsCount() {
        return serverIds_.size();
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public int getServerIds(int index) {
        return serverIds_.get(index);
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public Builder setServerIds(
          int index, int value) {
        ensureServerIdsIsMutable();
        serverIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public Builder addServerIds(int value) {
        ensureServerIdsIsMutable();
        serverIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public Builder addAllServerIds(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureServerIdsIsMutable();
        super.addAll(values, serverIds_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 serverIds = 3;</code>
       *
       * <pre>
       * 操作个别服务器传对应id，留空表示操作该类型所有在线服务器
       * </pre>
       */
      public Builder clearServerIds() {
        serverIds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // repeated string params = 4;
      private com.google.protobuf.LazyStringList params_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureParamsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          params_ = new com.google.protobuf.LazyStringArrayList(params_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public java.util.List<java.lang.String>
          getParamsList() {
        return java.util.Collections.unmodifiableList(params_);
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public int getParamsCount() {
        return params_.size();
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public java.lang.String getParams(int index) {
        return params_.get(index);
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public com.google.protobuf.ByteString
          getParamsBytes(int index) {
        return params_.getByteString(index);
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public Builder setParams(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureParamsIsMutable();
        params_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public Builder addParams(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureParamsIsMutable();
        params_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public Builder addAllParams(
          java.lang.Iterable<java.lang.String> values) {
        ensureParamsIsMutable();
        super.addAll(values, params_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public Builder clearParams() {
        params_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string params = 4;</code>
       *
       * <pre>
       * 不同指令所需的操作参数
       * </pre>
       */
      public Builder addParamsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureParamsIsMutable();
        params_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmExecuteCmdRequest)
    }

    static {
      defaultInstance = new GmExecuteCmdRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmExecuteCmdRequest)
  }

  public interface GmExecuteCmdResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmExecuteCmdResponse}
   */
  public static final class GmExecuteCmdResponse extends
      com.google.protobuf.GeneratedMessage
      implements GmExecuteCmdResponseOrBuilder {
    // Use GmExecuteCmdResponse.newBuilder() to construct.
    private GmExecuteCmdResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmExecuteCmdResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmExecuteCmdResponse defaultInstance;
    public static GmExecuteCmdResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GmExecuteCmdResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmExecuteCmdResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmExecuteCmdResponse.class, org.zhangqi.proto.Gm.GmExecuteCmdResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<GmExecuteCmdResponse> PARSER =
        new com.google.protobuf.AbstractParser<GmExecuteCmdResponse>() {
      public GmExecuteCmdResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmExecuteCmdResponse(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmExecuteCmdResponse> getParserForType() {
      return PARSER;
    }

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmExecuteCmdResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmExecuteCmdResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmExecuteCmdResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmExecuteCmdResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmExecuteCmdResponse.class, org.zhangqi.proto.Gm.GmExecuteCmdResponse.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmExecuteCmdResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor;
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdResponse getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmExecuteCmdResponse.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdResponse build() {
        org.zhangqi.proto.Gm.GmExecuteCmdResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmExecuteCmdResponse buildPartial() {
        org.zhangqi.proto.Gm.GmExecuteCmdResponse result = new org.zhangqi.proto.Gm.GmExecuteCmdResponse(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmExecuteCmdResponse) {
          return mergeFrom((org.zhangqi.proto.Gm.GmExecuteCmdResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmExecuteCmdResponse other) {
        if (other == org.zhangqi.proto.Gm.GmExecuteCmdResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmExecuteCmdResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmExecuteCmdResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmExecuteCmdResponse)
    }

    static {
      defaultInstance = new GmExecuteCmdResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmExecuteCmdResponse)
  }

  public interface GmGetOnlineUserInfoRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmGetOnlineUserInfoRequest}
   *
   * <pre>
   * 获取所有在线玩家信息（GmRpcGetOnlineUserInfo = 100203）
   * </pre>
   */
  public static final class GmGetOnlineUserInfoRequest extends
      com.google.protobuf.GeneratedMessage
      implements GmGetOnlineUserInfoRequestOrBuilder {
    // Use GmGetOnlineUserInfoRequest.newBuilder() to construct.
    private GmGetOnlineUserInfoRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmGetOnlineUserInfoRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmGetOnlineUserInfoRequest defaultInstance;
    public static GmGetOnlineUserInfoRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GmGetOnlineUserInfoRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmGetOnlineUserInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.class, org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GmGetOnlineUserInfoRequest> PARSER =
        new com.google.protobuf.AbstractParser<GmGetOnlineUserInfoRequest>() {
      public GmGetOnlineUserInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmGetOnlineUserInfoRequest(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmGetOnlineUserInfoRequest> getParserForType() {
      return PARSER;
    }

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmGetOnlineUserInfoRequest}
     *
     * <pre>
     * 获取所有在线玩家信息（GmRpcGetOnlineUserInfo = 100203）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.class, org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor;
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest build() {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest buildPartial() {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest result = new org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest) {
          return mergeFrom((org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest other) {
        if (other == org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmGetOnlineUserInfoRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmGetOnlineUserInfoRequest)
    }

    static {
      defaultInstance = new GmGetOnlineUserInfoRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmGetOnlineUserInfoRequest)
  }

  public interface GmGetOnlineUserInfoResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    java.util.List<org.zhangqi.proto.Common.OnlineUserInfo> 
        getOnlineUserInfosList();
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    org.zhangqi.proto.Common.OnlineUserInfo getOnlineUserInfos(int index);
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    int getOnlineUserInfosCount();
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    java.util.List<? extends org.zhangqi.proto.Common.OnlineUserInfoOrBuilder> 
        getOnlineUserInfosOrBuilderList();
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    org.zhangqi.proto.Common.OnlineUserInfoOrBuilder getOnlineUserInfosOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmGetOnlineUserInfoResponse}
   */
  public static final class GmGetOnlineUserInfoResponse extends
      com.google.protobuf.GeneratedMessage
      implements GmGetOnlineUserInfoResponseOrBuilder {
    // Use GmGetOnlineUserInfoResponse.newBuilder() to construct.
    private GmGetOnlineUserInfoResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmGetOnlineUserInfoResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmGetOnlineUserInfoResponse defaultInstance;
    public static GmGetOnlineUserInfoResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GmGetOnlineUserInfoResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmGetOnlineUserInfoResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                onlineUserInfos_ = new java.util.ArrayList<org.zhangqi.proto.Common.OnlineUserInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              onlineUserInfos_.add(input.readMessage(org.zhangqi.proto.Common.OnlineUserInfo.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          onlineUserInfos_ = java.util.Collections.unmodifiableList(onlineUserInfos_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.class, org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<GmGetOnlineUserInfoResponse> PARSER =
        new com.google.protobuf.AbstractParser<GmGetOnlineUserInfoResponse>() {
      public GmGetOnlineUserInfoResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmGetOnlineUserInfoResponse(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmGetOnlineUserInfoResponse> getParserForType() {
      return PARSER;
    }

    // repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;
    public static final int ONLINEUSERINFOS_FIELD_NUMBER = 1;
    private java.util.List<org.zhangqi.proto.Common.OnlineUserInfo> onlineUserInfos_;
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    public java.util.List<org.zhangqi.proto.Common.OnlineUserInfo> getOnlineUserInfosList() {
      return onlineUserInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    public java.util.List<? extends org.zhangqi.proto.Common.OnlineUserInfoOrBuilder> 
        getOnlineUserInfosOrBuilderList() {
      return onlineUserInfos_;
    }
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    public int getOnlineUserInfosCount() {
      return onlineUserInfos_.size();
    }
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    public org.zhangqi.proto.Common.OnlineUserInfo getOnlineUserInfos(int index) {
      return onlineUserInfos_.get(index);
    }
    /**
     * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
     */
    public org.zhangqi.proto.Common.OnlineUserInfoOrBuilder getOnlineUserInfosOrBuilder(
        int index) {
      return onlineUserInfos_.get(index);
    }

    private void initFields() {
      onlineUserInfos_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < onlineUserInfos_.size(); i++) {
        output.writeMessage(1, onlineUserInfos_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < onlineUserInfos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, onlineUserInfos_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmGetOnlineUserInfoResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.class, org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getOnlineUserInfosFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (onlineUserInfosBuilder_ == null) {
          onlineUserInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          onlineUserInfosBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor;
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse build() {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse buildPartial() {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse result = new org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse(this);
        int from_bitField0_ = bitField0_;
        if (onlineUserInfosBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            onlineUserInfos_ = java.util.Collections.unmodifiableList(onlineUserInfos_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.onlineUserInfos_ = onlineUserInfos_;
        } else {
          result.onlineUserInfos_ = onlineUserInfosBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse) {
          return mergeFrom((org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse other) {
        if (other == org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse.getDefaultInstance()) return this;
        if (onlineUserInfosBuilder_ == null) {
          if (!other.onlineUserInfos_.isEmpty()) {
            if (onlineUserInfos_.isEmpty()) {
              onlineUserInfos_ = other.onlineUserInfos_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureOnlineUserInfosIsMutable();
              onlineUserInfos_.addAll(other.onlineUserInfos_);
            }
            onChanged();
          }
        } else {
          if (!other.onlineUserInfos_.isEmpty()) {
            if (onlineUserInfosBuilder_.isEmpty()) {
              onlineUserInfosBuilder_.dispose();
              onlineUserInfosBuilder_ = null;
              onlineUserInfos_ = other.onlineUserInfos_;
              bitField0_ = (bitField0_ & ~0x00000001);
              onlineUserInfosBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getOnlineUserInfosFieldBuilder() : null;
            } else {
              onlineUserInfosBuilder_.addAllMessages(other.onlineUserInfos_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmGetOnlineUserInfoResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;
      private java.util.List<org.zhangqi.proto.Common.OnlineUserInfo> onlineUserInfos_ =
        java.util.Collections.emptyList();
      private void ensureOnlineUserInfosIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          onlineUserInfos_ = new java.util.ArrayList<org.zhangqi.proto.Common.OnlineUserInfo>(onlineUserInfos_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Common.OnlineUserInfo, org.zhangqi.proto.Common.OnlineUserInfo.Builder, org.zhangqi.proto.Common.OnlineUserInfoOrBuilder> onlineUserInfosBuilder_;

      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public java.util.List<org.zhangqi.proto.Common.OnlineUserInfo> getOnlineUserInfosList() {
        if (onlineUserInfosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(onlineUserInfos_);
        } else {
          return onlineUserInfosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public int getOnlineUserInfosCount() {
        if (onlineUserInfosBuilder_ == null) {
          return onlineUserInfos_.size();
        } else {
          return onlineUserInfosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public org.zhangqi.proto.Common.OnlineUserInfo getOnlineUserInfos(int index) {
        if (onlineUserInfosBuilder_ == null) {
          return onlineUserInfos_.get(index);
        } else {
          return onlineUserInfosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder setOnlineUserInfos(
          int index, org.zhangqi.proto.Common.OnlineUserInfo value) {
        if (onlineUserInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.set(index, value);
          onChanged();
        } else {
          onlineUserInfosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder setOnlineUserInfos(
          int index, org.zhangqi.proto.Common.OnlineUserInfo.Builder builderForValue) {
        if (onlineUserInfosBuilder_ == null) {
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.set(index, builderForValue.build());
          onChanged();
        } else {
          onlineUserInfosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder addOnlineUserInfos(org.zhangqi.proto.Common.OnlineUserInfo value) {
        if (onlineUserInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.add(value);
          onChanged();
        } else {
          onlineUserInfosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder addOnlineUserInfos(
          int index, org.zhangqi.proto.Common.OnlineUserInfo value) {
        if (onlineUserInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.add(index, value);
          onChanged();
        } else {
          onlineUserInfosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder addOnlineUserInfos(
          org.zhangqi.proto.Common.OnlineUserInfo.Builder builderForValue) {
        if (onlineUserInfosBuilder_ == null) {
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.add(builderForValue.build());
          onChanged();
        } else {
          onlineUserInfosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder addOnlineUserInfos(
          int index, org.zhangqi.proto.Common.OnlineUserInfo.Builder builderForValue) {
        if (onlineUserInfosBuilder_ == null) {
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.add(index, builderForValue.build());
          onChanged();
        } else {
          onlineUserInfosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder addAllOnlineUserInfos(
          java.lang.Iterable<? extends org.zhangqi.proto.Common.OnlineUserInfo> values) {
        if (onlineUserInfosBuilder_ == null) {
          ensureOnlineUserInfosIsMutable();
          super.addAll(values, onlineUserInfos_);
          onChanged();
        } else {
          onlineUserInfosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder clearOnlineUserInfos() {
        if (onlineUserInfosBuilder_ == null) {
          onlineUserInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          onlineUserInfosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public Builder removeOnlineUserInfos(int index) {
        if (onlineUserInfosBuilder_ == null) {
          ensureOnlineUserInfosIsMutable();
          onlineUserInfos_.remove(index);
          onChanged();
        } else {
          onlineUserInfosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public org.zhangqi.proto.Common.OnlineUserInfo.Builder getOnlineUserInfosBuilder(
          int index) {
        return getOnlineUserInfosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public org.zhangqi.proto.Common.OnlineUserInfoOrBuilder getOnlineUserInfosOrBuilder(
          int index) {
        if (onlineUserInfosBuilder_ == null) {
          return onlineUserInfos_.get(index);  } else {
          return onlineUserInfosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public java.util.List<? extends org.zhangqi.proto.Common.OnlineUserInfoOrBuilder> 
           getOnlineUserInfosOrBuilderList() {
        if (onlineUserInfosBuilder_ != null) {
          return onlineUserInfosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(onlineUserInfos_);
        }
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public org.zhangqi.proto.Common.OnlineUserInfo.Builder addOnlineUserInfosBuilder() {
        return getOnlineUserInfosFieldBuilder().addBuilder(
            org.zhangqi.proto.Common.OnlineUserInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public org.zhangqi.proto.Common.OnlineUserInfo.Builder addOnlineUserInfosBuilder(
          int index) {
        return getOnlineUserInfosFieldBuilder().addBuilder(
            index, org.zhangqi.proto.Common.OnlineUserInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .org.zhangqi.proto.OnlineUserInfo onlineUserInfos = 1;</code>
       */
      public java.util.List<org.zhangqi.proto.Common.OnlineUserInfo.Builder> 
           getOnlineUserInfosBuilderList() {
        return getOnlineUserInfosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          org.zhangqi.proto.Common.OnlineUserInfo, org.zhangqi.proto.Common.OnlineUserInfo.Builder, org.zhangqi.proto.Common.OnlineUserInfoOrBuilder> 
          getOnlineUserInfosFieldBuilder() {
        if (onlineUserInfosBuilder_ == null) {
          onlineUserInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              org.zhangqi.proto.Common.OnlineUserInfo, org.zhangqi.proto.Common.OnlineUserInfo.Builder, org.zhangqi.proto.Common.OnlineUserInfoOrBuilder>(
                  onlineUserInfos_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          onlineUserInfos_ = null;
        }
        return onlineUserInfosBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmGetOnlineUserInfoResponse)
    }

    static {
      defaultInstance = new GmGetOnlineUserInfoResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmGetOnlineUserInfoResponse)
  }

  public interface GmForceOfflinePushOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;
    /**
     * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
     */
    boolean hasForceOfflineReason();
    /**
     * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
     */
    org.zhangqi.proto.Gm.GmForceOfflineReasonEnum getForceOfflineReason();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmForceOfflinePush}
   *
   * <pre>
   * GM客户端强制下线推送（GmRpcForceOfflinePush = 200001）
   * </pre>
   */
  public static final class GmForceOfflinePush extends
      com.google.protobuf.GeneratedMessage
      implements GmForceOfflinePushOrBuilder {
    // Use GmForceOfflinePush.newBuilder() to construct.
    private GmForceOfflinePush(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmForceOfflinePush(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmForceOfflinePush defaultInstance;
    public static GmForceOfflinePush getDefaultInstance() {
      return defaultInstance;
    }

    public GmForceOfflinePush getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmForceOfflinePush(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              org.zhangqi.proto.Gm.GmForceOfflineReasonEnum value = org.zhangqi.proto.Gm.GmForceOfflineReasonEnum.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                forceOfflineReason_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmForceOfflinePush_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmForceOfflinePush.class, org.zhangqi.proto.Gm.GmForceOfflinePush.Builder.class);
    }

    public static com.google.protobuf.Parser<GmForceOfflinePush> PARSER =
        new com.google.protobuf.AbstractParser<GmForceOfflinePush>() {
      public GmForceOfflinePush parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmForceOfflinePush(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmForceOfflinePush> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;
    public static final int FORCEOFFLINEREASON_FIELD_NUMBER = 1;
    private org.zhangqi.proto.Gm.GmForceOfflineReasonEnum forceOfflineReason_;
    /**
     * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
     */
    public boolean hasForceOfflineReason() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
     */
    public org.zhangqi.proto.Gm.GmForceOfflineReasonEnum getForceOfflineReason() {
      return forceOfflineReason_;
    }

    private void initFields() {
      forceOfflineReason_ = org.zhangqi.proto.Gm.GmForceOfflineReasonEnum.GmForceOfflineServerNotAvailable;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, forceOfflineReason_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, forceOfflineReason_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmForceOfflinePush parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmForceOfflinePush prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmForceOfflinePush}
     *
     * <pre>
     * GM客户端强制下线推送（GmRpcForceOfflinePush = 200001）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmForceOfflinePushOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmForceOfflinePush_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmForceOfflinePush.class, org.zhangqi.proto.Gm.GmForceOfflinePush.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmForceOfflinePush.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        forceOfflineReason_ = org.zhangqi.proto.Gm.GmForceOfflineReasonEnum.GmForceOfflineServerNotAvailable;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor;
      }

      public org.zhangqi.proto.Gm.GmForceOfflinePush getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmForceOfflinePush.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmForceOfflinePush build() {
        org.zhangqi.proto.Gm.GmForceOfflinePush result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmForceOfflinePush buildPartial() {
        org.zhangqi.proto.Gm.GmForceOfflinePush result = new org.zhangqi.proto.Gm.GmForceOfflinePush(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.forceOfflineReason_ = forceOfflineReason_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmForceOfflinePush) {
          return mergeFrom((org.zhangqi.proto.Gm.GmForceOfflinePush)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmForceOfflinePush other) {
        if (other == org.zhangqi.proto.Gm.GmForceOfflinePush.getDefaultInstance()) return this;
        if (other.hasForceOfflineReason()) {
          setForceOfflineReason(other.getForceOfflineReason());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmForceOfflinePush parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmForceOfflinePush) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;
      private org.zhangqi.proto.Gm.GmForceOfflineReasonEnum forceOfflineReason_ = org.zhangqi.proto.Gm.GmForceOfflineReasonEnum.GmForceOfflineServerNotAvailable;
      /**
       * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
       */
      public boolean hasForceOfflineReason() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
       */
      public org.zhangqi.proto.Gm.GmForceOfflineReasonEnum getForceOfflineReason() {
        return forceOfflineReason_;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
       */
      public Builder setForceOfflineReason(org.zhangqi.proto.Gm.GmForceOfflineReasonEnum value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        forceOfflineReason_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional .org.zhangqi.proto.GmForceOfflineReasonEnum forceOfflineReason = 1;</code>
       */
      public Builder clearForceOfflineReason() {
        bitField0_ = (bitField0_ & ~0x00000001);
        forceOfflineReason_ = org.zhangqi.proto.Gm.GmForceOfflineReasonEnum.GmForceOfflineServerNotAvailable;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmForceOfflinePush)
    }

    static {
      defaultInstance = new GmForceOfflinePush(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmForceOfflinePush)
  }

  public interface GmTextMsgPushOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string text = 1;
    /**
     * <code>optional string text = 1;</code>
     */
    boolean hasText();
    /**
     * <code>optional string text = 1;</code>
     */
    java.lang.String getText();
    /**
     * <code>optional string text = 1;</code>
     */
    com.google.protobuf.ByteString
        getTextBytes();
  }
  /**
   * Protobuf type {@code org.zhangqi.proto.GmTextMsgPush}
   *
   * <pre>
   * GM服务器向GM客户端推送文本消息（GmRpcTextMsgPush = 200002）
   * </pre>
   */
  public static final class GmTextMsgPush extends
      com.google.protobuf.GeneratedMessage
      implements GmTextMsgPushOrBuilder {
    // Use GmTextMsgPush.newBuilder() to construct.
    private GmTextMsgPush(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GmTextMsgPush(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GmTextMsgPush defaultInstance;
    public static GmTextMsgPush getDefaultInstance() {
      return defaultInstance;
    }

    public GmTextMsgPush getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GmTextMsgPush(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              text_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmTextMsgPush_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.zhangqi.proto.Gm.GmTextMsgPush.class, org.zhangqi.proto.Gm.GmTextMsgPush.Builder.class);
    }

    public static com.google.protobuf.Parser<GmTextMsgPush> PARSER =
        new com.google.protobuf.AbstractParser<GmTextMsgPush>() {
      public GmTextMsgPush parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GmTextMsgPush(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GmTextMsgPush> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // optional string text = 1;
    public static final int TEXT_FIELD_NUMBER = 1;
    private java.lang.Object text_;
    /**
     * <code>optional string text = 1;</code>
     */
    public boolean hasText() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string text = 1;</code>
     */
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          text_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string text = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      text_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getTextBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getTextBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.zhangqi.proto.Gm.GmTextMsgPush parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.zhangqi.proto.Gm.GmTextMsgPush prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code org.zhangqi.proto.GmTextMsgPush}
     *
     * <pre>
     * GM服务器向GM客户端推送文本消息（GmRpcTextMsgPush = 200002）
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.zhangqi.proto.Gm.GmTextMsgPushOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmTextMsgPush_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.zhangqi.proto.Gm.GmTextMsgPush.class, org.zhangqi.proto.Gm.GmTextMsgPush.Builder.class);
      }

      // Construct using org.zhangqi.proto.Gm.GmTextMsgPush.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        text_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.zhangqi.proto.Gm.internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor;
      }

      public org.zhangqi.proto.Gm.GmTextMsgPush getDefaultInstanceForType() {
        return org.zhangqi.proto.Gm.GmTextMsgPush.getDefaultInstance();
      }

      public org.zhangqi.proto.Gm.GmTextMsgPush build() {
        org.zhangqi.proto.Gm.GmTextMsgPush result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.zhangqi.proto.Gm.GmTextMsgPush buildPartial() {
        org.zhangqi.proto.Gm.GmTextMsgPush result = new org.zhangqi.proto.Gm.GmTextMsgPush(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.text_ = text_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.zhangqi.proto.Gm.GmTextMsgPush) {
          return mergeFrom((org.zhangqi.proto.Gm.GmTextMsgPush)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.zhangqi.proto.Gm.GmTextMsgPush other) {
        if (other == org.zhangqi.proto.Gm.GmTextMsgPush.getDefaultInstance()) return this;
        if (other.hasText()) {
          bitField0_ |= 0x00000001;
          text_ = other.text_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.zhangqi.proto.Gm.GmTextMsgPush parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.zhangqi.proto.Gm.GmTextMsgPush) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string text = 1;
      private java.lang.Object text_ = "";
      /**
       * <code>optional string text = 1;</code>
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string text = 1;</code>
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          text_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string text = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string text = 1;</code>
       */
      public Builder setText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 1;</code>
       */
      public Builder clearText() {
        bitField0_ = (bitField0_ & ~0x00000001);
        text_ = getDefaultInstance().getText();
        onChanged();
        return this;
      }
      /**
       * <code>optional string text = 1;</code>
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        text_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:org.zhangqi.proto.GmTextMsgPush)
    }

    static {
      defaultInstance = new GmTextMsgPush(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:org.zhangqi.proto.GmTextMsgPush)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmUserData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmUserData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmUserInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmUserInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmLoginRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmLoginRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmLoginResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmLoginResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmExecuteCmdRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmExecuteCmdResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmForceOfflinePush_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_org_zhangqi_proto_GmTextMsgPush_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\010gm.proto\022\021org.zhangqi.proto\032\014common.pr" +
      "oto\"\215\001\n\nGmUserData\022\016\n\006userId\030\001 \001(\005\022\020\n\010us" +
      "ername\030\002 \001(\t\022\023\n\013passwordMD5\030\003 \001(\t\022\027\n\017reg" +
      "istTimestamp\030\004 \001(\003\022\032\n\022lastLoginTimestamp" +
      "\030\005 \001(\003\022\023\n\013lastLoginIp\030\006 \001(\t\".\n\nGmUserInf" +
      "o\022\016\n\006userId\030\001 \001(\005\022\020\n\010username\030\002 \001(\t\"{\n\025S" +
      "erverLoadBalanceInfo\022\n\n\002id\030\001 \001(\005\022\n\n\002ip\030\002" +
      " \001(\t\022\023\n\013loadBalance\030\003 \001(\005\022\031\n\021isMainLogic" +
      "Server\030\004 \001(\010\022\032\n\022gatewayConnectPath\030\005 \001(\t" +
      "\"7\n\016GmLoginRequest\022\020\n\010username\030\001 \001(\t\022\023\n\013",
      "passwordMD5\030\002 \001(\t\"D\n\017GmLoginResponse\0221\n\n" +
      "gmUserInfo\030\001 \001(\0132\035.org.zhangqi.proto.GmU" +
      "serInfo\"\034\n\032GmGetAllServerStateRequest\"\346\001" +
      "\n\033GmGetAllServerStateResponse\022B\n\020logicSe" +
      "rverInfos\030\001 \003(\0132(.org.zhangqi.proto.Serv" +
      "erLoadBalanceInfo\022C\n\021battleServerInfos\030\002" +
      " \003(\0132(.org.zhangqi.proto.ServerLoadBalan" +
      "ceInfo\022>\n\014gatewayInfos\030\003 \003(\0132(.org.zhang" +
      "qi.proto.ServerLoadBalanceInfo\"\250\001\n\023GmExe" +
      "cuteCmdRequest\0221\n\007cmdType\030\001 \001(\0162 .org.zh",
      "angqi.proto.GmCmdTypeEnum\022;\n\nserverType\030" +
      "\002 \001(\0162\'.org.zhangqi.proto.RemoteServerTy" +
      "peEnum\022\021\n\tserverIds\030\003 \003(\005\022\016\n\006params\030\004 \003(" +
      "\t\"\026\n\024GmExecuteCmdResponse\"\034\n\032GmGetOnline" +
      "UserInfoRequest\"Y\n\033GmGetOnlineUserInfoRe" +
      "sponse\022:\n\017onlineUserInfos\030\001 \003(\0132!.org.zh" +
      "angqi.proto.OnlineUserInfo\"]\n\022GmForceOff" +
      "linePush\022G\n\022forceOfflineReason\030\001 \001(\0162+.o" +
      "rg.zhangqi.proto.GmForceOfflineReasonEnu" +
      "m\"\035\n\rGmTextMsgPush\022\014\n\004text\030\001 \001(\t*\251\001\n\rGmR",
      "pcNameEnum\022\020\n\nGmRpcLogin\020\205\216\006\022\034\n\026GmRpcGet" +
      "AllServerState\020\351\216\006\022\025\n\017GmRpcExecuteCmd\020\352\216" +
      "\006\022\034\n\026GmRpcGetOnlineUserInfo\020\353\216\006\022\033\n\025GmRpc" +
      "ForceOfflinePush\020\301\232\014\022\026\n\020GmRpcTextMsgPush" +
      "\020\302\232\014*\344\001\n\022GmRpcErrorCodeEnum\022\013\n\007GmRpcOk\020\000" +
      "\022\024\n\020GmRpcServerError\020\001\022\024\n\020GmRpcClientErr" +
      "or\020\002\022$\n GmRpcErrorOperatedUserIdNotExist" +
      "\020\013\022\"\n\036GmRpcErrorOperatedUserIsOnline\020\014\022\'" +
      "\n!GmRpcLoginErrorUsernameIsNotExist\020\263\214=\022" +
      "\"\n\034GmRpcLoginErrorPasswordWrong\020\264\214=*a\n\030G",
      "mForceOfflineReasonEnum\022$\n GmForceOfflin" +
      "eServerNotAvailable\020\001\022\037\n\033GmForceOfflineS" +
      "ameUserLogin\020\002B\002H\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_org_zhangqi_proto_GmUserData_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_org_zhangqi_proto_GmUserData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmUserData_descriptor,
              new java.lang.String[] { "UserId", "Username", "PasswordMD5", "RegistTimestamp", "LastLoginTimestamp", "LastLoginIp", });
          internal_static_org_zhangqi_proto_GmUserInfo_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_org_zhangqi_proto_GmUserInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmUserInfo_descriptor,
              new java.lang.String[] { "UserId", "Username", });
          internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_ServerLoadBalanceInfo_descriptor,
              new java.lang.String[] { "Id", "Ip", "LoadBalance", "IsMainLogicServer", "GatewayConnectPath", });
          internal_static_org_zhangqi_proto_GmLoginRequest_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_org_zhangqi_proto_GmLoginRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmLoginRequest_descriptor,
              new java.lang.String[] { "Username", "PasswordMD5", });
          internal_static_org_zhangqi_proto_GmLoginResponse_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_org_zhangqi_proto_GmLoginResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmLoginResponse_descriptor,
              new java.lang.String[] { "GmUserInfo", });
          internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmGetAllServerStateRequest_descriptor,
              new java.lang.String[] { });
          internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmGetAllServerStateResponse_descriptor,
              new java.lang.String[] { "LogicServerInfos", "BattleServerInfos", "GatewayInfos", });
          internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_org_zhangqi_proto_GmExecuteCmdRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmExecuteCmdRequest_descriptor,
              new java.lang.String[] { "CmdType", "ServerType", "ServerIds", "Params", });
          internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_org_zhangqi_proto_GmExecuteCmdResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmExecuteCmdResponse_descriptor,
              new java.lang.String[] { });
          internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmGetOnlineUserInfoRequest_descriptor,
              new java.lang.String[] { });
          internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmGetOnlineUserInfoResponse_descriptor,
              new java.lang.String[] { "OnlineUserInfos", });
          internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_org_zhangqi_proto_GmForceOfflinePush_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmForceOfflinePush_descriptor,
              new java.lang.String[] { "ForceOfflineReason", });
          internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_org_zhangqi_proto_GmTextMsgPush_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_org_zhangqi_proto_GmTextMsgPush_descriptor,
              new java.lang.String[] { "Text", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          org.zhangqi.proto.Common.getDescriptor(),
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
