All Downloads are FREE. Search and download functionalities are using the official Maven repository.

skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon Maven / Gradle / Ivy

Go to download

Clarity is an open source replay parser for Dota 2 and CSGO 1 and 2 written in Java. This JAR contains the protobuf classes for clarity.

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: dota_gcmessages_common.proto

package skadistats.clarity.wire.dota.s2.proto;

public final class DOTAS2GcMessagesCommon {
  private DOTAS2GcMessagesCommon() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface CMatchPlayerAbilityUpgradeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMatchPlayerAbilityUpgrade)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 ability = 1;
     */
    boolean hasAbility();
    /**
     * optional uint32 ability = 1;
     */
    int getAbility();

    /**
     * optional uint32 time = 2;
     */
    boolean hasTime();
    /**
     * optional uint32 time = 2;
     */
    int getTime();
  }
  /**
   * Protobuf type {@code CMatchPlayerAbilityUpgrade}
   */
  public static final class CMatchPlayerAbilityUpgrade extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMatchPlayerAbilityUpgrade)
      CMatchPlayerAbilityUpgradeOrBuilder {
    // Use CMatchPlayerAbilityUpgrade.newBuilder() to construct.
    private CMatchPlayerAbilityUpgrade(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMatchPlayerAbilityUpgrade(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMatchPlayerAbilityUpgrade getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMatchPlayerAbilityUpgrade(
        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;
              ability_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              time_ = input.readUInt32();
              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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerAbilityUpgrade_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerAbilityUpgrade_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int ABILITY_FIELD_NUMBER = 1;
    private int ability_;
    /**
     * optional uint32 ability = 1;
     */
    public boolean hasAbility() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 ability = 1;
     */
    public int getAbility() {
      return ability_;
    }

    public static final int TIME_FIELD_NUMBER = 2;
    private int time_;
    /**
     * optional uint32 time = 2;
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 time = 2;
     */
    public int getTime() {
      return time_;
    }

    private void initFields() {
      ability_ = 0;
      time_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, ability_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, time_);
      }
      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
          .computeUInt32Size(1, ability_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, time_);
      }
      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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade 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 CMatchPlayerAbilityUpgrade}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMatchPlayerAbilityUpgrade)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerAbilityUpgrade_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerAbilityUpgrade_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.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();
        ability_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        time_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerAbilityUpgrade_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.ability_ = ability_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.time_ = time_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.getDefaultInstance()) return this;
        if (other.hasAbility()) {
          setAbility(other.getAbility());
        }
        if (other.hasTime()) {
          setTime(other.getTime());
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int ability_ ;
      /**
       * optional uint32 ability = 1;
       */
      public boolean hasAbility() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 ability = 1;
       */
      public int getAbility() {
        return ability_;
      }
      /**
       * optional uint32 ability = 1;
       */
      public Builder setAbility(int value) {
        bitField0_ |= 0x00000001;
        ability_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 ability = 1;
       */
      public Builder clearAbility() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ability_ = 0;
        onChanged();
        return this;
      }

      private int time_ ;
      /**
       * optional uint32 time = 2;
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 time = 2;
       */
      public int getTime() {
        return time_;
      }
      /**
       * optional uint32 time = 2;
       */
      public Builder setTime(int value) {
        bitField0_ |= 0x00000002;
        time_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 time = 2;
       */
      public Builder clearTime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        time_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMatchPlayerAbilityUpgrade)
    }

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

    // @@protoc_insertion_point(class_scope:CMatchPlayerAbilityUpgrade)
  }

  public interface CMatchAdditionalUnitInventoryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMatchAdditionalUnitInventory)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional string unit_name = 1;
     */
    boolean hasUnitName();
    /**
     * optional string unit_name = 1;
     */
    java.lang.String getUnitName();
    /**
     * optional string unit_name = 1;
     */
    com.google.protobuf.ByteString
        getUnitNameBytes();

    /**
     * repeated int32 items = 2;
     */
    java.util.List getItemsList();
    /**
     * repeated int32 items = 2;
     */
    int getItemsCount();
    /**
     * repeated int32 items = 2;
     */
    int getItems(int index);
  }
  /**
   * Protobuf type {@code CMatchAdditionalUnitInventory}
   */
  public static final class CMatchAdditionalUnitInventory extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMatchAdditionalUnitInventory)
      CMatchAdditionalUnitInventoryOrBuilder {
    // Use CMatchAdditionalUnitInventory.newBuilder() to construct.
    private CMatchAdditionalUnitInventory(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMatchAdditionalUnitInventory(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMatchAdditionalUnitInventory getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMatchAdditionalUnitInventory(
        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: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              unitName_ = bs;
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                items_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              items_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                items_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                items_.add(input.readInt32());
              }
              input.popLimit(limit);
              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_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchAdditionalUnitInventory_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchAdditionalUnitInventory_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int UNIT_NAME_FIELD_NUMBER = 1;
    private java.lang.Object unitName_;
    /**
     * optional string unit_name = 1;
     */
    public boolean hasUnitName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional string unit_name = 1;
     */
    public java.lang.String getUnitName() {
      java.lang.Object ref = unitName_;
      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()) {
          unitName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string unit_name = 1;
     */
    public com.google.protobuf.ByteString
        getUnitNameBytes() {
      java.lang.Object ref = unitName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        unitName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List items_;
    /**
     * repeated int32 items = 2;
     */
    public java.util.List
        getItemsList() {
      return items_;
    }
    /**
     * repeated int32 items = 2;
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * repeated int32 items = 2;
     */
    public int getItems(int index) {
      return items_.get(index);
    }

    private void initFields() {
      unitName_ = "";
      items_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getUnitNameBytes());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeInt32(2, items_.get(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
          .computeBytesSize(1, getUnitNameBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < items_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(items_.get(i));
        }
        size += dataSize;
        size += 1 * getItemsList().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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory 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 CMatchAdditionalUnitInventory}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMatchAdditionalUnitInventory)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchAdditionalUnitInventory_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchAdditionalUnitInventory_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.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();
        unitName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        items_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchAdditionalUnitInventory_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.unitName_ = unitName_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.items_ = items_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.getDefaultInstance()) return this;
        if (other.hasUnitName()) {
          bitField0_ |= 0x00000001;
          unitName_ = other.unitName_;
          onChanged();
        }
        if (!other.items_.isEmpty()) {
          if (items_.isEmpty()) {
            items_ = other.items_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureItemsIsMutable();
            items_.addAll(other.items_);
          }
          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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object unitName_ = "";
      /**
       * optional string unit_name = 1;
       */
      public boolean hasUnitName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional string unit_name = 1;
       */
      public java.lang.String getUnitName() {
        java.lang.Object ref = unitName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            unitName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string unit_name = 1;
       */
      public com.google.protobuf.ByteString
          getUnitNameBytes() {
        java.lang.Object ref = unitName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          unitName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string unit_name = 1;
       */
      public Builder setUnitName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        unitName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string unit_name = 1;
       */
      public Builder clearUnitName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        unitName_ = getDefaultInstance().getUnitName();
        onChanged();
        return this;
      }
      /**
       * optional string unit_name = 1;
       */
      public Builder setUnitNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        unitName_ = value;
        onChanged();
        return this;
      }

      private java.util.List items_ = java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = new java.util.ArrayList(items_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated int32 items = 2;
       */
      public java.util.List
          getItemsList() {
        return java.util.Collections.unmodifiableList(items_);
      }
      /**
       * repeated int32 items = 2;
       */
      public int getItemsCount() {
        return items_.size();
      }
      /**
       * repeated int32 items = 2;
       */
      public int getItems(int index) {
        return items_.get(index);
      }
      /**
       * repeated int32 items = 2;
       */
      public Builder setItems(
          int index, int value) {
        ensureItemsIsMutable();
        items_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 items = 2;
       */
      public Builder addItems(int value) {
        ensureItemsIsMutable();
        items_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated int32 items = 2;
       */
      public Builder addAllItems(
          java.lang.Iterable values) {
        ensureItemsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, items_);
        onChanged();
        return this;
      }
      /**
       * repeated int32 items = 2;
       */
      public Builder clearItems() {
        items_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMatchAdditionalUnitInventory)
    }

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

    // @@protoc_insertion_point(class_scope:CMatchAdditionalUnitInventory)
  }

  public interface CMatchPlayerPermanentBuffOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMatchPlayerPermanentBuff)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 permanent_buff = 1;
     */
    boolean hasPermanentBuff();
    /**
     * optional uint32 permanent_buff = 1;
     */
    int getPermanentBuff();

    /**
     * optional uint32 stack_count = 2;
     */
    boolean hasStackCount();
    /**
     * optional uint32 stack_count = 2;
     */
    int getStackCount();
  }
  /**
   * Protobuf type {@code CMatchPlayerPermanentBuff}
   */
  public static final class CMatchPlayerPermanentBuff extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMatchPlayerPermanentBuff)
      CMatchPlayerPermanentBuffOrBuilder {
    // Use CMatchPlayerPermanentBuff.newBuilder() to construct.
    private CMatchPlayerPermanentBuff(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMatchPlayerPermanentBuff(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMatchPlayerPermanentBuff getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMatchPlayerPermanentBuff(
        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;
              permanentBuff_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              stackCount_ = input.readUInt32();
              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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerPermanentBuff_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerPermanentBuff_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int PERMANENT_BUFF_FIELD_NUMBER = 1;
    private int permanentBuff_;
    /**
     * optional uint32 permanent_buff = 1;
     */
    public boolean hasPermanentBuff() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 permanent_buff = 1;
     */
    public int getPermanentBuff() {
      return permanentBuff_;
    }

    public static final int STACK_COUNT_FIELD_NUMBER = 2;
    private int stackCount_;
    /**
     * optional uint32 stack_count = 2;
     */
    public boolean hasStackCount() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 stack_count = 2;
     */
    public int getStackCount() {
      return stackCount_;
    }

    private void initFields() {
      permanentBuff_ = 0;
      stackCount_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, permanentBuff_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, stackCount_);
      }
      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
          .computeUInt32Size(1, permanentBuff_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, stackCount_);
      }
      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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff 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 CMatchPlayerPermanentBuff}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMatchPlayerPermanentBuff)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerPermanentBuff_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerPermanentBuff_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.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();
        permanentBuff_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        stackCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchPlayerPermanentBuff_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.permanentBuff_ = permanentBuff_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.stackCount_ = stackCount_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.getDefaultInstance()) return this;
        if (other.hasPermanentBuff()) {
          setPermanentBuff(other.getPermanentBuff());
        }
        if (other.hasStackCount()) {
          setStackCount(other.getStackCount());
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int permanentBuff_ ;
      /**
       * optional uint32 permanent_buff = 1;
       */
      public boolean hasPermanentBuff() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 permanent_buff = 1;
       */
      public int getPermanentBuff() {
        return permanentBuff_;
      }
      /**
       * optional uint32 permanent_buff = 1;
       */
      public Builder setPermanentBuff(int value) {
        bitField0_ |= 0x00000001;
        permanentBuff_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 permanent_buff = 1;
       */
      public Builder clearPermanentBuff() {
        bitField0_ = (bitField0_ & ~0x00000001);
        permanentBuff_ = 0;
        onChanged();
        return this;
      }

      private int stackCount_ ;
      /**
       * optional uint32 stack_count = 2;
       */
      public boolean hasStackCount() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 stack_count = 2;
       */
      public int getStackCount() {
        return stackCount_;
      }
      /**
       * optional uint32 stack_count = 2;
       */
      public Builder setStackCount(int value) {
        bitField0_ |= 0x00000002;
        stackCount_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 stack_count = 2;
       */
      public Builder clearStackCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        stackCount_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMatchPlayerPermanentBuff)
    }

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

    // @@protoc_insertion_point(class_scope:CMatchPlayerPermanentBuff)
  }

  public interface CMatchHeroSelectEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMatchHeroSelectEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional bool is_pick = 1;
     */
    boolean hasIsPick();
    /**
     * optional bool is_pick = 1;
     */
    boolean getIsPick();

    /**
     * optional uint32 team = 2;
     */
    boolean hasTeam();
    /**
     * optional uint32 team = 2;
     */
    int getTeam();

    /**
     * optional int32 hero_id = 3;
     */
    boolean hasHeroId();
    /**
     * optional int32 hero_id = 3;
     */
    int getHeroId();
  }
  /**
   * Protobuf type {@code CMatchHeroSelectEvent}
   */
  public static final class CMatchHeroSelectEvent extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMatchHeroSelectEvent)
      CMatchHeroSelectEventOrBuilder {
    // Use CMatchHeroSelectEvent.newBuilder() to construct.
    private CMatchHeroSelectEvent(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMatchHeroSelectEvent(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMatchHeroSelectEvent getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMatchHeroSelectEvent(
        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;
              isPick_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              team_ = input.readUInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              heroId_ = input.readInt32();
              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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchHeroSelectEvent_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchHeroSelectEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int IS_PICK_FIELD_NUMBER = 1;
    private boolean isPick_;
    /**
     * optional bool is_pick = 1;
     */
    public boolean hasIsPick() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional bool is_pick = 1;
     */
    public boolean getIsPick() {
      return isPick_;
    }

    public static final int TEAM_FIELD_NUMBER = 2;
    private int team_;
    /**
     * optional uint32 team = 2;
     */
    public boolean hasTeam() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 team = 2;
     */
    public int getTeam() {
      return team_;
    }

    public static final int HERO_ID_FIELD_NUMBER = 3;
    private int heroId_;
    /**
     * optional int32 hero_id = 3;
     */
    public boolean hasHeroId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional int32 hero_id = 3;
     */
    public int getHeroId() {
      return heroId_;
    }

    private void initFields() {
      isPick_ = false;
      team_ = 0;
      heroId_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(1, isPick_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, team_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, heroId_);
      }
      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
          .computeBoolSize(1, isPick_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, team_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, heroId_);
      }
      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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent 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 CMatchHeroSelectEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMatchHeroSelectEvent)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchHeroSelectEvent_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchHeroSelectEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.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();
        isPick_ = false;
        bitField0_ = (bitField0_ & ~0x00000001);
        team_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        heroId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMatchHeroSelectEvent_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.isPick_ = isPick_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.team_ = team_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.heroId_ = heroId_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.getDefaultInstance()) return this;
        if (other.hasIsPick()) {
          setIsPick(other.getIsPick());
        }
        if (other.hasTeam()) {
          setTeam(other.getTeam());
        }
        if (other.hasHeroId()) {
          setHeroId(other.getHeroId());
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean isPick_ ;
      /**
       * optional bool is_pick = 1;
       */
      public boolean hasIsPick() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional bool is_pick = 1;
       */
      public boolean getIsPick() {
        return isPick_;
      }
      /**
       * optional bool is_pick = 1;
       */
      public Builder setIsPick(boolean value) {
        bitField0_ |= 0x00000001;
        isPick_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool is_pick = 1;
       */
      public Builder clearIsPick() {
        bitField0_ = (bitField0_ & ~0x00000001);
        isPick_ = false;
        onChanged();
        return this;
      }

      private int team_ ;
      /**
       * optional uint32 team = 2;
       */
      public boolean hasTeam() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 team = 2;
       */
      public int getTeam() {
        return team_;
      }
      /**
       * optional uint32 team = 2;
       */
      public Builder setTeam(int value) {
        bitField0_ |= 0x00000002;
        team_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 team = 2;
       */
      public Builder clearTeam() {
        bitField0_ = (bitField0_ & ~0x00000002);
        team_ = 0;
        onChanged();
        return this;
      }

      private int heroId_ ;
      /**
       * optional int32 hero_id = 3;
       */
      public boolean hasHeroId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional int32 hero_id = 3;
       */
      public int getHeroId() {
        return heroId_;
      }
      /**
       * optional int32 hero_id = 3;
       */
      public Builder setHeroId(int value) {
        bitField0_ |= 0x00000004;
        heroId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int32 hero_id = 3;
       */
      public Builder clearHeroId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        heroId_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMatchHeroSelectEvent)
    }

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

    // @@protoc_insertion_point(class_scope:CMatchHeroSelectEvent)
  }

  public interface CMsgDOTAMatchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 duration = 3;
     */
    boolean hasDuration();
    /**
     * optional uint32 duration = 3;
     */
    int getDuration();

    /**
     * optional fixed32 starttime = 4;
     */
    boolean hasStarttime();
    /**
     * optional fixed32 starttime = 4;
     */
    int getStarttime();

    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    java.util.List 
        getPlayersList();
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player getPlayers(int index);
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    int getPlayersCount();
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    java.util.List 
        getPlayersOrBuilderList();
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder getPlayersOrBuilder(
        int index);

    /**
     * optional uint64 match_id = 6;
     */
    boolean hasMatchId();
    /**
     * optional uint64 match_id = 6;
     */
    long getMatchId();

    /**
     * repeated uint32 tower_status = 8;
     */
    java.util.List getTowerStatusList();
    /**
     * repeated uint32 tower_status = 8;
     */
    int getTowerStatusCount();
    /**
     * repeated uint32 tower_status = 8;
     */
    int getTowerStatus(int index);

    /**
     * repeated uint32 barracks_status = 9;
     */
    java.util.List getBarracksStatusList();
    /**
     * repeated uint32 barracks_status = 9;
     */
    int getBarracksStatusCount();
    /**
     * repeated uint32 barracks_status = 9;
     */
    int getBarracksStatus(int index);

    /**
     * optional uint32 cluster = 10;
     */
    boolean hasCluster();
    /**
     * optional uint32 cluster = 10;
     */
    int getCluster();

    /**
     * optional uint32 first_blood_time = 12;
     */
    boolean hasFirstBloodTime();
    /**
     * optional uint32 first_blood_time = 12;
     */
    int getFirstBloodTime();

    /**
     * optional fixed32 replay_salt = 13;
     */
    boolean hasReplaySalt();
    /**
     * optional fixed32 replay_salt = 13;
     */
    int getReplaySalt();

    /**
     * optional fixed32 server_ip = 14;
     */
    boolean hasServerIp();
    /**
     * optional fixed32 server_ip = 14;
     */
    int getServerIp();

    /**
     * optional uint32 server_port = 15;
     */
    boolean hasServerPort();
    /**
     * optional uint32 server_port = 15;
     */
    int getServerPort();

    /**
     * optional uint32 lobby_type = 16;
     */
    boolean hasLobbyType();
    /**
     * optional uint32 lobby_type = 16;
     */
    int getLobbyType();

    /**
     * optional uint32 human_players = 17;
     */
    boolean hasHumanPlayers();
    /**
     * optional uint32 human_players = 17;
     */
    int getHumanPlayers();

    /**
     * optional uint32 average_skill = 18;
     */
    boolean hasAverageSkill();
    /**
     * optional uint32 average_skill = 18;
     */
    int getAverageSkill();

    /**
     * optional float game_balance = 19;
     */
    boolean hasGameBalance();
    /**
     * optional float game_balance = 19;
     */
    float getGameBalance();

    /**
     * optional uint32 radiant_team_id = 20;
     */
    boolean hasRadiantTeamId();
    /**
     * optional uint32 radiant_team_id = 20;
     */
    int getRadiantTeamId();

    /**
     * optional uint32 dire_team_id = 21;
     */
    boolean hasDireTeamId();
    /**
     * optional uint32 dire_team_id = 21;
     */
    int getDireTeamId();

    /**
     * optional uint32 leagueid = 22;
     */
    boolean hasLeagueid();
    /**
     * optional uint32 leagueid = 22;
     */
    int getLeagueid();

    /**
     * optional string radiant_team_name = 23;
     */
    boolean hasRadiantTeamName();
    /**
     * optional string radiant_team_name = 23;
     */
    java.lang.String getRadiantTeamName();
    /**
     * optional string radiant_team_name = 23;
     */
    com.google.protobuf.ByteString
        getRadiantTeamNameBytes();

    /**
     * optional string dire_team_name = 24;
     */
    boolean hasDireTeamName();
    /**
     * optional string dire_team_name = 24;
     */
    java.lang.String getDireTeamName();
    /**
     * optional string dire_team_name = 24;
     */
    com.google.protobuf.ByteString
        getDireTeamNameBytes();

    /**
     * optional uint64 radiant_team_logo = 25;
     */
    boolean hasRadiantTeamLogo();
    /**
     * optional uint64 radiant_team_logo = 25;
     */
    long getRadiantTeamLogo();

    /**
     * optional uint64 dire_team_logo = 26;
     */
    boolean hasDireTeamLogo();
    /**
     * optional uint64 dire_team_logo = 26;
     */
    long getDireTeamLogo();

    /**
     * optional string radiant_team_logo_url = 54;
     */
    boolean hasRadiantTeamLogoUrl();
    /**
     * optional string radiant_team_logo_url = 54;
     */
    java.lang.String getRadiantTeamLogoUrl();
    /**
     * optional string radiant_team_logo_url = 54;
     */
    com.google.protobuf.ByteString
        getRadiantTeamLogoUrlBytes();

    /**
     * optional string dire_team_logo_url = 55;
     */
    boolean hasDireTeamLogoUrl();
    /**
     * optional string dire_team_logo_url = 55;
     */
    java.lang.String getDireTeamLogoUrl();
    /**
     * optional string dire_team_logo_url = 55;
     */
    com.google.protobuf.ByteString
        getDireTeamLogoUrlBytes();

    /**
     * optional uint32 radiant_team_complete = 27;
     */
    boolean hasRadiantTeamComplete();
    /**
     * optional uint32 radiant_team_complete = 27;
     */
    int getRadiantTeamComplete();

    /**
     * optional uint32 dire_team_complete = 28;
     */
    boolean hasDireTeamComplete();
    /**
     * optional uint32 dire_team_complete = 28;
     */
    int getDireTeamComplete();

    /**
     * optional uint32 positive_votes = 29;
     */
    boolean hasPositiveVotes();
    /**
     * optional uint32 positive_votes = 29;
     */
    int getPositiveVotes();

    /**
     * optional uint32 negative_votes = 30;
     */
    boolean hasNegativeVotes();
    /**
     * optional uint32 negative_votes = 30;
     */
    int getNegativeVotes();

    /**
     * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
     */
    boolean hasGameMode();
    /**
     * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode getGameMode();

    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    java.util.List 
        getPicksBansList();
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent getPicksBans(int index);
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    int getPicksBansCount();
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    java.util.List 
        getPicksBansOrBuilderList();
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder getPicksBansOrBuilder(
        int index);

    /**
     * optional uint64 match_seq_num = 33;
     */
    boolean hasMatchSeqNum();
    /**
     * optional uint64 match_seq_num = 33;
     */
    long getMatchSeqNum();

    /**
     * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
     */
    boolean hasReplayState();
    /**
     * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState getReplayState();

    /**
     * optional uint32 radiant_guild_id = 35;
     */
    boolean hasRadiantGuildId();
    /**
     * optional uint32 radiant_guild_id = 35;
     */
    int getRadiantGuildId();

    /**
     * optional uint32 dire_guild_id = 36;
     */
    boolean hasDireGuildId();
    /**
     * optional uint32 dire_guild_id = 36;
     */
    int getDireGuildId();

    /**
     * optional string radiant_team_tag = 37;
     */
    boolean hasRadiantTeamTag();
    /**
     * optional string radiant_team_tag = 37;
     */
    java.lang.String getRadiantTeamTag();
    /**
     * optional string radiant_team_tag = 37;
     */
    com.google.protobuf.ByteString
        getRadiantTeamTagBytes();

    /**
     * optional string dire_team_tag = 38;
     */
    boolean hasDireTeamTag();
    /**
     * optional string dire_team_tag = 38;
     */
    java.lang.String getDireTeamTag();
    /**
     * optional string dire_team_tag = 38;
     */
    com.google.protobuf.ByteString
        getDireTeamTagBytes();

    /**
     * optional uint32 series_id = 39;
     */
    boolean hasSeriesId();
    /**
     * optional uint32 series_id = 39;
     */
    int getSeriesId();

    /**
     * optional uint32 series_type = 40;
     */
    boolean hasSeriesType();
    /**
     * optional uint32 series_type = 40;
     */
    int getSeriesType();

    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    java.util.List 
        getBroadcasterChannelsList();
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel getBroadcasterChannels(int index);
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    int getBroadcasterChannelsCount();
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    java.util.List 
        getBroadcasterChannelsOrBuilderList();
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder getBroadcasterChannelsOrBuilder(
        int index);

    /**
     * optional uint32 engine = 44;
     */
    boolean hasEngine();
    /**
     * optional uint32 engine = 44;
     */
    int getEngine();

    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    boolean hasCustomGameData();
    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData getCustomGameData();
    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder getCustomGameDataOrBuilder();

    /**
     * optional uint32 match_flags = 46;
     */
    boolean hasMatchFlags();
    /**
     * optional uint32 match_flags = 46;
     */
    int getMatchFlags();

    /**
     * optional fixed32 private_metadata_key = 47;
     */
    boolean hasPrivateMetadataKey();
    /**
     * optional fixed32 private_metadata_key = 47;
     */
    int getPrivateMetadataKey();

    /**
     * optional uint32 radiant_team_score = 48;
     */
    boolean hasRadiantTeamScore();
    /**
     * optional uint32 radiant_team_score = 48;
     */
    int getRadiantTeamScore();

    /**
     * optional uint32 dire_team_score = 49;
     */
    boolean hasDireTeamScore();
    /**
     * optional uint32 dire_team_score = 49;
     */
    int getDireTeamScore();

    /**
     * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
     */
    boolean hasMatchOutcome();
    /**
     * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome getMatchOutcome();

    /**
     * optional uint32 tournament_id = 51;
     */
    boolean hasTournamentId();
    /**
     * optional uint32 tournament_id = 51;
     */
    int getTournamentId();

    /**
     * optional uint32 tournament_round = 52;
     */
    boolean hasTournamentRound();
    /**
     * optional uint32 tournament_round = 52;
     */
    int getTournamentRound();

    /**
     * optional uint32 pre_game_duration = 53;
     */
    boolean hasPreGameDuration();
    /**
     * optional uint32 pre_game_duration = 53;
     */
    int getPreGameDuration();

    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    java.util.List 
        getCoachesList();
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach getCoaches(int index);
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    int getCoachesCount();
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    java.util.List 
        getCoachesOrBuilderList();
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder getCoachesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code CMsgDOTAMatch}
   */
  public static final class CMsgDOTAMatch extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMsgDOTAMatch)
      CMsgDOTAMatchOrBuilder {
    // Use CMsgDOTAMatch.newBuilder() to construct.
    private CMsgDOTAMatch(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMsgDOTAMatch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMsgDOTAMatch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMsgDOTAMatch(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      int mutable_bitField1_ = 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 24: {
              bitField0_ |= 0x00000001;
              duration_ = input.readUInt32();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000002;
              starttime_ = input.readFixed32();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                players_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              players_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.PARSER, extensionRegistry));
              break;
            }
            case 48: {
              bitField0_ |= 0x00000004;
              matchId_ = input.readUInt64();
              break;
            }
            case 64: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                towerStatus_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              towerStatus_.add(input.readUInt32());
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                towerStatus_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              while (input.getBytesUntilLimit() > 0) {
                towerStatus_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 72: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                barracksStatus_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              barracksStatus_.add(input.readUInt32());
              break;
            }
            case 74: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                barracksStatus_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                barracksStatus_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 80: {
              bitField0_ |= 0x00000008;
              cluster_ = input.readUInt32();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000010;
              firstBloodTime_ = input.readUInt32();
              break;
            }
            case 109: {
              bitField0_ |= 0x00000020;
              replaySalt_ = input.readFixed32();
              break;
            }
            case 117: {
              bitField0_ |= 0x00000040;
              serverIp_ = input.readFixed32();
              break;
            }
            case 120: {
              bitField0_ |= 0x00000080;
              serverPort_ = input.readUInt32();
              break;
            }
            case 128: {
              bitField0_ |= 0x00000100;
              lobbyType_ = input.readUInt32();
              break;
            }
            case 136: {
              bitField0_ |= 0x00000200;
              humanPlayers_ = input.readUInt32();
              break;
            }
            case 144: {
              bitField0_ |= 0x00000400;
              averageSkill_ = input.readUInt32();
              break;
            }
            case 157: {
              bitField0_ |= 0x00000800;
              gameBalance_ = input.readFloat();
              break;
            }
            case 160: {
              bitField0_ |= 0x00001000;
              radiantTeamId_ = input.readUInt32();
              break;
            }
            case 168: {
              bitField0_ |= 0x00002000;
              direTeamId_ = input.readUInt32();
              break;
            }
            case 176: {
              bitField0_ |= 0x00004000;
              leagueid_ = input.readUInt32();
              break;
            }
            case 186: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00008000;
              radiantTeamName_ = bs;
              break;
            }
            case 194: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00010000;
              direTeamName_ = bs;
              break;
            }
            case 200: {
              bitField0_ |= 0x00020000;
              radiantTeamLogo_ = input.readUInt64();
              break;
            }
            case 208: {
              bitField0_ |= 0x00040000;
              direTeamLogo_ = input.readUInt64();
              break;
            }
            case 216: {
              bitField0_ |= 0x00200000;
              radiantTeamComplete_ = input.readUInt32();
              break;
            }
            case 224: {
              bitField0_ |= 0x00400000;
              direTeamComplete_ = input.readUInt32();
              break;
            }
            case 232: {
              bitField0_ |= 0x00800000;
              positiveVotes_ = input.readUInt32();
              break;
            }
            case 240: {
              bitField0_ |= 0x01000000;
              negativeVotes_ = input.readUInt32();
              break;
            }
            case 248: {
              int rawValue = input.readEnum();
              skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode value = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(31, rawValue);
              } else {
                bitField0_ |= 0x02000000;
                gameMode_ = value;
              }
              break;
            }
            case 258: {
              if (!((mutable_bitField0_ & 0x20000000) == 0x20000000)) {
                picksBans_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x20000000;
              }
              picksBans_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.PARSER, extensionRegistry));
              break;
            }
            case 264: {
              bitField0_ |= 0x04000000;
              matchSeqNum_ = input.readUInt64();
              break;
            }
            case 272: {
              int rawValue = input.readEnum();
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState value = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(34, rawValue);
              } else {
                bitField0_ |= 0x08000000;
                replayState_ = value;
              }
              break;
            }
            case 280: {
              bitField0_ |= 0x10000000;
              radiantGuildId_ = input.readUInt32();
              break;
            }
            case 288: {
              bitField0_ |= 0x20000000;
              direGuildId_ = input.readUInt32();
              break;
            }
            case 298: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x40000000;
              radiantTeamTag_ = bs;
              break;
            }
            case 306: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x80000000;
              direTeamTag_ = bs;
              break;
            }
            case 312: {
              bitField1_ |= 0x00000001;
              seriesId_ = input.readUInt32();
              break;
            }
            case 320: {
              bitField1_ |= 0x00000002;
              seriesType_ = input.readUInt32();
              break;
            }
            case 346: {
              if (!((mutable_bitField1_ & 0x00000040) == 0x00000040)) {
                broadcasterChannels_ = new java.util.ArrayList();
                mutable_bitField1_ |= 0x00000040;
              }
              broadcasterChannels_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.PARSER, extensionRegistry));
              break;
            }
            case 352: {
              bitField1_ |= 0x00000004;
              engine_ = input.readUInt32();
              break;
            }
            case 362: {
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder subBuilder = null;
              if (((bitField1_ & 0x00000008) == 0x00000008)) {
                subBuilder = customGameData_.toBuilder();
              }
              customGameData_ = input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(customGameData_);
                customGameData_ = subBuilder.buildPartial();
              }
              bitField1_ |= 0x00000008;
              break;
            }
            case 368: {
              bitField1_ |= 0x00000010;
              matchFlags_ = input.readUInt32();
              break;
            }
            case 381: {
              bitField1_ |= 0x00000020;
              privateMetadataKey_ = input.readFixed32();
              break;
            }
            case 384: {
              bitField1_ |= 0x00000040;
              radiantTeamScore_ = input.readUInt32();
              break;
            }
            case 392: {
              bitField1_ |= 0x00000080;
              direTeamScore_ = input.readUInt32();
              break;
            }
            case 400: {
              int rawValue = input.readEnum();
              skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome value = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(50, rawValue);
              } else {
                bitField1_ |= 0x00000100;
                matchOutcome_ = value;
              }
              break;
            }
            case 408: {
              bitField1_ |= 0x00000200;
              tournamentId_ = input.readUInt32();
              break;
            }
            case 416: {
              bitField1_ |= 0x00000400;
              tournamentRound_ = input.readUInt32();
              break;
            }
            case 424: {
              bitField1_ |= 0x00000800;
              preGameDuration_ = input.readUInt32();
              break;
            }
            case 434: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00080000;
              radiantTeamLogoUrl_ = bs;
              break;
            }
            case 442: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00100000;
              direTeamLogoUrl_ = bs;
              break;
            }
            case 458: {
              if (!((mutable_bitField1_ & 0x00020000) == 0x00020000)) {
                coaches_ = new java.util.ArrayList();
                mutable_bitField1_ |= 0x00020000;
              }
              coaches_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.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_ & 0x00000004) == 0x00000004)) {
          players_ = java.util.Collections.unmodifiableList(players_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          towerStatus_ = java.util.Collections.unmodifiableList(towerStatus_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          barracksStatus_ = java.util.Collections.unmodifiableList(barracksStatus_);
        }
        if (((mutable_bitField0_ & 0x20000000) == 0x20000000)) {
          picksBans_ = java.util.Collections.unmodifiableList(picksBans_);
        }
        if (((mutable_bitField1_ & 0x00000040) == 0x00000040)) {
          broadcasterChannels_ = java.util.Collections.unmodifiableList(broadcasterChannels_);
        }
        if (((mutable_bitField1_ & 0x00020000) == 0x00020000)) {
          coaches_ = java.util.Collections.unmodifiableList(coaches_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Builder.class);
    }

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

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

    /**
     * Protobuf enum {@code CMsgDOTAMatch.ReplayState}
     */
    public enum ReplayState
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * REPLAY_AVAILABLE = 0;
       */
      REPLAY_AVAILABLE(0, 0),
      /**
       * REPLAY_NOT_RECORDED = 1;
       */
      REPLAY_NOT_RECORDED(1, 1),
      /**
       * REPLAY_EXPIRED = 2;
       */
      REPLAY_EXPIRED(2, 2),
      ;

      /**
       * REPLAY_AVAILABLE = 0;
       */
      public static final int REPLAY_AVAILABLE_VALUE = 0;
      /**
       * REPLAY_NOT_RECORDED = 1;
       */
      public static final int REPLAY_NOT_RECORDED_VALUE = 1;
      /**
       * REPLAY_EXPIRED = 2;
       */
      public static final int REPLAY_EXPIRED_VALUE = 2;


      public final int getNumber() { return value; }

      public static ReplayState valueOf(int value) {
        switch (value) {
          case 0: return REPLAY_AVAILABLE;
          case 1: return REPLAY_NOT_RECORDED;
          case 2: return REPLAY_EXPIRED;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public ReplayState findValueByNumber(int number) {
                return ReplayState.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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.getDescriptor().getEnumTypes().get(0);
      }

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

      public static ReplayState 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 ReplayState(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:CMsgDOTAMatch.ReplayState)
    }

    public interface PlayerOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.Player)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 account_id = 1;
       */
      boolean hasAccountId();
      /**
       * optional uint32 account_id = 1;
       */
      int getAccountId();

      /**
       * optional uint32 player_slot = 2;
       */
      boolean hasPlayerSlot();
      /**
       * optional uint32 player_slot = 2;
       */
      int getPlayerSlot();

      /**
       * optional int32 hero_id = 3;
       */
      boolean hasHeroId();
      /**
       * optional int32 hero_id = 3;
       */
      int getHeroId();

      /**
       * optional int32 item_0 = 4 [default = -1];
       */
      boolean hasItem0();
      /**
       * optional int32 item_0 = 4 [default = -1];
       */
      int getItem0();

      /**
       * optional int32 item_1 = 5 [default = -1];
       */
      boolean hasItem1();
      /**
       * optional int32 item_1 = 5 [default = -1];
       */
      int getItem1();

      /**
       * optional int32 item_2 = 6 [default = -1];
       */
      boolean hasItem2();
      /**
       * optional int32 item_2 = 6 [default = -1];
       */
      int getItem2();

      /**
       * optional int32 item_3 = 7 [default = -1];
       */
      boolean hasItem3();
      /**
       * optional int32 item_3 = 7 [default = -1];
       */
      int getItem3();

      /**
       * optional int32 item_4 = 8 [default = -1];
       */
      boolean hasItem4();
      /**
       * optional int32 item_4 = 8 [default = -1];
       */
      int getItem4();

      /**
       * optional int32 item_5 = 9 [default = -1];
       */
      boolean hasItem5();
      /**
       * optional int32 item_5 = 9 [default = -1];
       */
      int getItem5();

      /**
       * optional int32 item_6 = 59 [default = -1];
       */
      boolean hasItem6();
      /**
       * optional int32 item_6 = 59 [default = -1];
       */
      int getItem6();

      /**
       * optional int32 item_7 = 60 [default = -1];
       */
      boolean hasItem7();
      /**
       * optional int32 item_7 = 60 [default = -1];
       */
      int getItem7();

      /**
       * optional int32 item_8 = 61 [default = -1];
       */
      boolean hasItem8();
      /**
       * optional int32 item_8 = 61 [default = -1];
       */
      int getItem8();

      /**
       * optional int32 item_9 = 76 [default = -1];
       */
      boolean hasItem9();
      /**
       * optional int32 item_9 = 76 [default = -1];
       */
      int getItem9();

      /**
       * optional float expected_team_contribution = 10;
       */
      boolean hasExpectedTeamContribution();
      /**
       * optional float expected_team_contribution = 10;
       */
      float getExpectedTeamContribution();

      /**
       * optional float scaled_metric = 11;
       */
      boolean hasScaledMetric();
      /**
       * optional float scaled_metric = 11;
       */
      float getScaledMetric();

      /**
       * optional uint32 previous_rank = 12;
       */
      boolean hasPreviousRank();
      /**
       * optional uint32 previous_rank = 12;
       */
      int getPreviousRank();

      /**
       * optional sint32 rank_change = 13;
       */
      boolean hasRankChange();
      /**
       * optional sint32 rank_change = 13;
       */
      int getRankChange();

      /**
       * optional uint32 mmr_type = 74;
       */
      boolean hasMmrType();
      /**
       * optional uint32 mmr_type = 74;
       */
      int getMmrType();

      /**
       * optional uint32 kills = 14;
       */
      boolean hasKills();
      /**
       * optional uint32 kills = 14;
       */
      int getKills();

      /**
       * optional uint32 deaths = 15;
       */
      boolean hasDeaths();
      /**
       * optional uint32 deaths = 15;
       */
      int getDeaths();

      /**
       * optional uint32 assists = 16;
       */
      boolean hasAssists();
      /**
       * optional uint32 assists = 16;
       */
      int getAssists();

      /**
       * optional uint32 leaver_status = 17;
       */
      boolean hasLeaverStatus();
      /**
       * optional uint32 leaver_status = 17;
       */
      int getLeaverStatus();

      /**
       * optional uint32 gold = 18;
       */
      boolean hasGold();
      /**
       * optional uint32 gold = 18;
       */
      int getGold();

      /**
       * optional uint32 last_hits = 19;
       */
      boolean hasLastHits();
      /**
       * optional uint32 last_hits = 19;
       */
      int getLastHits();

      /**
       * optional uint32 denies = 20;
       */
      boolean hasDenies();
      /**
       * optional uint32 denies = 20;
       */
      int getDenies();

      /**
       * optional uint32 gold_per_min = 21;
       */
      boolean hasGoldPerMin();
      /**
       * optional uint32 gold_per_min = 21;
       */
      int getGoldPerMin();

      /**
       * optional uint32 xp_per_min = 22;
       */
      boolean hasXpPerMin();
      /**
       * optional uint32 xp_per_min = 22;
       */
      int getXpPerMin();

      /**
       * optional uint32 gold_spent = 23;
       */
      boolean hasGoldSpent();
      /**
       * optional uint32 gold_spent = 23;
       */
      int getGoldSpent();

      /**
       * optional uint32 hero_damage = 24;
       */
      boolean hasHeroDamage();
      /**
       * optional uint32 hero_damage = 24;
       */
      int getHeroDamage();

      /**
       * optional uint32 tower_damage = 25;
       */
      boolean hasTowerDamage();
      /**
       * optional uint32 tower_damage = 25;
       */
      int getTowerDamage();

      /**
       * optional uint32 hero_healing = 26;
       */
      boolean hasHeroHealing();
      /**
       * optional uint32 hero_healing = 26;
       */
      int getHeroHealing();

      /**
       * optional uint32 level = 27;
       */
      boolean hasLevel();
      /**
       * optional uint32 level = 27;
       */
      int getLevel();

      /**
       * optional uint32 time_last_seen = 28;
       */
      boolean hasTimeLastSeen();
      /**
       * optional uint32 time_last_seen = 28;
       */
      int getTimeLastSeen();

      /**
       * optional string player_name = 29;
       */
      boolean hasPlayerName();
      /**
       * optional string player_name = 29;
       */
      java.lang.String getPlayerName();
      /**
       * optional string player_name = 29;
       */
      com.google.protobuf.ByteString
          getPlayerNameBytes();

      /**
       * optional uint32 support_ability_value = 30;
       */
      boolean hasSupportAbilityValue();
      /**
       * optional uint32 support_ability_value = 30;
       */
      int getSupportAbilityValue();

      /**
       * optional bool feeding_detected = 32;
       */
      boolean hasFeedingDetected();
      /**
       * optional bool feeding_detected = 32;
       */
      boolean getFeedingDetected();

      /**
       * optional uint32 search_rank = 34;
       */
      boolean hasSearchRank();
      /**
       * optional uint32 search_rank = 34;
       */
      int getSearchRank();

      /**
       * optional uint32 search_rank_uncertainty = 35;
       */
      boolean hasSearchRankUncertainty();
      /**
       * optional uint32 search_rank_uncertainty = 35;
       */
      int getSearchRankUncertainty();

      /**
       * optional int32 rank_uncertainty_change = 36;
       */
      boolean hasRankUncertaintyChange();
      /**
       * optional int32 rank_uncertainty_change = 36;
       */
      int getRankUncertaintyChange();

      /**
       * optional uint32 hero_play_count = 37;
       */
      boolean hasHeroPlayCount();
      /**
       * optional uint32 hero_play_count = 37;
       */
      int getHeroPlayCount();

      /**
       * optional fixed64 party_id = 38;
       */
      boolean hasPartyId();
      /**
       * optional fixed64 party_id = 38;
       */
      long getPartyId();

      /**
       * optional uint32 scaled_hero_damage = 54;
       */
      boolean hasScaledHeroDamage();
      /**
       * optional uint32 scaled_hero_damage = 54;
       */
      int getScaledHeroDamage();

      /**
       * optional uint32 scaled_tower_damage = 55;
       */
      boolean hasScaledTowerDamage();
      /**
       * optional uint32 scaled_tower_damage = 55;
       */
      int getScaledTowerDamage();

      /**
       * optional uint32 scaled_hero_healing = 56;
       */
      boolean hasScaledHeroHealing();
      /**
       * optional uint32 scaled_hero_healing = 56;
       */
      int getScaledHeroHealing();

      /**
       * optional float scaled_kills = 39;
       */
      boolean hasScaledKills();
      /**
       * optional float scaled_kills = 39;
       */
      float getScaledKills();

      /**
       * optional float scaled_deaths = 40;
       */
      boolean hasScaledDeaths();
      /**
       * optional float scaled_deaths = 40;
       */
      float getScaledDeaths();

      /**
       * optional float scaled_assists = 41;
       */
      boolean hasScaledAssists();
      /**
       * optional float scaled_assists = 41;
       */
      float getScaledAssists();

      /**
       * optional uint32 claimed_farm_gold = 42;
       */
      boolean hasClaimedFarmGold();
      /**
       * optional uint32 claimed_farm_gold = 42;
       */
      int getClaimedFarmGold();

      /**
       * optional uint32 support_gold = 43;
       */
      boolean hasSupportGold();
      /**
       * optional uint32 support_gold = 43;
       */
      int getSupportGold();

      /**
       * optional uint32 claimed_denies = 44;
       */
      boolean hasClaimedDenies();
      /**
       * optional uint32 claimed_denies = 44;
       */
      int getClaimedDenies();

      /**
       * optional uint32 claimed_misses = 45;
       */
      boolean hasClaimedMisses();
      /**
       * optional uint32 claimed_misses = 45;
       */
      int getClaimedMisses();

      /**
       * optional uint32 misses = 46;
       */
      boolean hasMisses();
      /**
       * optional uint32 misses = 46;
       */
      int getMisses();

      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      java.util.List 
          getAbilityUpgradesList();
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade getAbilityUpgrades(int index);
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      int getAbilityUpgradesCount();
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      java.util.List 
          getAbilityUpgradesOrBuilderList();
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder getAbilityUpgradesOrBuilder(
          int index);

      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      java.util.List 
          getAdditionalUnitsInventoryList();
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory getAdditionalUnitsInventory(int index);
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      int getAdditionalUnitsInventoryCount();
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      java.util.List 
          getAdditionalUnitsInventoryOrBuilderList();
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder getAdditionalUnitsInventoryOrBuilder(
          int index);

      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      java.util.List 
          getPermanentBuffsList();
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff getPermanentBuffs(int index);
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      int getPermanentBuffsCount();
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      java.util.List 
          getPermanentBuffsOrBuilderList();
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder getPermanentBuffsOrBuilder(
          int index);

      /**
       * optional string pro_name = 72;
       */
      boolean hasProName();
      /**
       * optional string pro_name = 72;
       */
      java.lang.String getProName();
      /**
       * optional string pro_name = 72;
       */
      com.google.protobuf.ByteString
          getProNameBytes();

      /**
       * optional string real_name = 73;
       */
      boolean hasRealName();
      /**
       * optional string real_name = 73;
       */
      java.lang.String getRealName();
      /**
       * optional string real_name = 73;
       */
      com.google.protobuf.ByteString
          getRealNameBytes();

      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      boolean hasCustomGameData();
      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData getCustomGameData();
      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder getCustomGameDataOrBuilder();

      /**
       * optional bool active_plus_subscription = 51;
       */
      boolean hasActivePlusSubscription();
      /**
       * optional bool active_plus_subscription = 51;
       */
      boolean getActivePlusSubscription();

      /**
       * optional uint32 net_worth = 52;
       */
      boolean hasNetWorth();
      /**
       * optional uint32 net_worth = 52;
       */
      int getNetWorth();

      /**
       * optional uint32 bot_difficulty = 58;
       */
      boolean hasBotDifficulty();
      /**
       * optional uint32 bot_difficulty = 58;
       */
      int getBotDifficulty();

      /**
       * optional uint32 hero_pick_order = 63;
       */
      boolean hasHeroPickOrder();
      /**
       * optional uint32 hero_pick_order = 63;
       */
      int getHeroPickOrder();

      /**
       * optional bool hero_was_randomed = 64;
       */
      boolean hasHeroWasRandomed();
      /**
       * optional bool hero_was_randomed = 64;
       */
      boolean getHeroWasRandomed();

      /**
       * optional bool hero_was_dota_plus_suggestion = 69;
       */
      boolean hasHeroWasDotaPlusSuggestion();
      /**
       * optional bool hero_was_dota_plus_suggestion = 69;
       */
      boolean getHeroWasDotaPlusSuggestion();

      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      java.util.List 
          getHeroDamageReceivedList();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageReceived(int index);
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      int getHeroDamageReceivedCount();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      java.util.List 
          getHeroDamageReceivedOrBuilderList();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageReceivedOrBuilder(
          int index);

      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      java.util.List 
          getHeroDamageDealtList();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageDealt(int index);
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      int getHeroDamageDealtCount();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      java.util.List 
          getHeroDamageDealtOrBuilderList();
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageDealtOrBuilder(
          int index);

      /**
       * optional uint32 seconds_dead = 70;
       */
      boolean hasSecondsDead();
      /**
       * optional uint32 seconds_dead = 70;
       */
      int getSecondsDead();

      /**
       * optional uint32 gold_lost_to_death = 71;
       */
      boolean hasGoldLostToDeath();
      /**
       * optional uint32 gold_lost_to_death = 71;
       */
      int getGoldLostToDeath();

      /**
       * optional uint32 lane_selection_flags = 75;
       */
      boolean hasLaneSelectionFlags();
      /**
       * optional uint32 lane_selection_flags = 75;
       */
      int getLaneSelectionFlags();

      /**
       * optional uint32 bounty_runes = 77;
       */
      boolean hasBountyRunes();
      /**
       * optional uint32 bounty_runes = 77;
       */
      int getBountyRunes();

      /**
       * optional uint32 outposts_captured = 78;
       */
      boolean hasOutpostsCaptured();
      /**
       * optional uint32 outposts_captured = 78;
       */
      int getOutpostsCaptured();

      /**
       * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
       */
      boolean hasTeamNumber();
      /**
       * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM getTeamNumber();

      /**
       * optional uint32 team_slot = 81;
       */
      boolean hasTeamSlot();
      /**
       * optional uint32 team_slot = 81;
       */
      int getTeamSlot();

      /**
       * optional uint32 selected_facet = 82;
       */
      boolean hasSelectedFacet();
      /**
       * optional uint32 selected_facet = 82;
       */
      int getSelectedFacet();
    }
    /**
     * Protobuf type {@code CMsgDOTAMatch.Player}
     */
    public static final class Player extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.Player)
        PlayerOrBuilder {
      // Use Player.newBuilder() to construct.
      private Player(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Player(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public Player getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Player(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        int mutable_bitField1_ = 0;
        int mutable_bitField2_ = 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;
                accountId_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                playerSlot_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                heroId_ = input.readInt32();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                item0_ = input.readInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                item1_ = input.readInt32();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                item2_ = input.readInt32();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                item3_ = input.readInt32();
                break;
              }
              case 64: {
                bitField0_ |= 0x00000080;
                item4_ = input.readInt32();
                break;
              }
              case 72: {
                bitField0_ |= 0x00000100;
                item5_ = input.readInt32();
                break;
              }
              case 85: {
                bitField0_ |= 0x00002000;
                expectedTeamContribution_ = input.readFloat();
                break;
              }
              case 93: {
                bitField0_ |= 0x00004000;
                scaledMetric_ = input.readFloat();
                break;
              }
              case 96: {
                bitField0_ |= 0x00008000;
                previousRank_ = input.readUInt32();
                break;
              }
              case 104: {
                bitField0_ |= 0x00010000;
                rankChange_ = input.readSInt32();
                break;
              }
              case 112: {
                bitField0_ |= 0x00040000;
                kills_ = input.readUInt32();
                break;
              }
              case 120: {
                bitField0_ |= 0x00080000;
                deaths_ = input.readUInt32();
                break;
              }
              case 128: {
                bitField0_ |= 0x00100000;
                assists_ = input.readUInt32();
                break;
              }
              case 136: {
                bitField0_ |= 0x00200000;
                leaverStatus_ = input.readUInt32();
                break;
              }
              case 144: {
                bitField0_ |= 0x00400000;
                gold_ = input.readUInt32();
                break;
              }
              case 152: {
                bitField0_ |= 0x00800000;
                lastHits_ = input.readUInt32();
                break;
              }
              case 160: {
                bitField0_ |= 0x01000000;
                denies_ = input.readUInt32();
                break;
              }
              case 168: {
                bitField0_ |= 0x02000000;
                goldPerMin_ = input.readUInt32();
                break;
              }
              case 176: {
                bitField0_ |= 0x04000000;
                xpPerMin_ = input.readUInt32();
                break;
              }
              case 184: {
                bitField0_ |= 0x08000000;
                goldSpent_ = input.readUInt32();
                break;
              }
              case 192: {
                bitField0_ |= 0x10000000;
                heroDamage_ = input.readUInt32();
                break;
              }
              case 200: {
                bitField0_ |= 0x20000000;
                towerDamage_ = input.readUInt32();
                break;
              }
              case 208: {
                bitField0_ |= 0x40000000;
                heroHealing_ = input.readUInt32();
                break;
              }
              case 216: {
                bitField0_ |= 0x80000000;
                level_ = input.readUInt32();
                break;
              }
              case 224: {
                bitField1_ |= 0x00000001;
                timeLastSeen_ = input.readUInt32();
                break;
              }
              case 234: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField1_ |= 0x00000002;
                playerName_ = bs;
                break;
              }
              case 240: {
                bitField1_ |= 0x00000004;
                supportAbilityValue_ = input.readUInt32();
                break;
              }
              case 256: {
                bitField1_ |= 0x00000008;
                feedingDetected_ = input.readBool();
                break;
              }
              case 272: {
                bitField1_ |= 0x00000010;
                searchRank_ = input.readUInt32();
                break;
              }
              case 280: {
                bitField1_ |= 0x00000020;
                searchRankUncertainty_ = input.readUInt32();
                break;
              }
              case 288: {
                bitField1_ |= 0x00000040;
                rankUncertaintyChange_ = input.readInt32();
                break;
              }
              case 296: {
                bitField1_ |= 0x00000080;
                heroPlayCount_ = input.readUInt32();
                break;
              }
              case 305: {
                bitField1_ |= 0x00000100;
                partyId_ = input.readFixed64();
                break;
              }
              case 317: {
                bitField1_ |= 0x00001000;
                scaledKills_ = input.readFloat();
                break;
              }
              case 325: {
                bitField1_ |= 0x00002000;
                scaledDeaths_ = input.readFloat();
                break;
              }
              case 333: {
                bitField1_ |= 0x00004000;
                scaledAssists_ = input.readFloat();
                break;
              }
              case 336: {
                bitField1_ |= 0x00008000;
                claimedFarmGold_ = input.readUInt32();
                break;
              }
              case 344: {
                bitField1_ |= 0x00010000;
                supportGold_ = input.readUInt32();
                break;
              }
              case 352: {
                bitField1_ |= 0x00020000;
                claimedDenies_ = input.readUInt32();
                break;
              }
              case 360: {
                bitField1_ |= 0x00040000;
                claimedMisses_ = input.readUInt32();
                break;
              }
              case 368: {
                bitField1_ |= 0x00080000;
                misses_ = input.readUInt32();
                break;
              }
              case 378: {
                if (!((mutable_bitField1_ & 0x00100000) == 0x00100000)) {
                  abilityUpgrades_ = new java.util.ArrayList();
                  mutable_bitField1_ |= 0x00100000;
                }
                abilityUpgrades_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.PARSER, extensionRegistry));
                break;
              }
              case 386: {
                if (!((mutable_bitField1_ & 0x00200000) == 0x00200000)) {
                  additionalUnitsInventory_ = new java.util.ArrayList();
                  mutable_bitField1_ |= 0x00200000;
                }
                additionalUnitsInventory_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.PARSER, extensionRegistry));
                break;
              }
              case 402: {
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder subBuilder = null;
                if (((bitField1_ & 0x00400000) == 0x00400000)) {
                  subBuilder = customGameData_.toBuilder();
                }
                customGameData_ = input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(customGameData_);
                  customGameData_ = subBuilder.buildPartial();
                }
                bitField1_ |= 0x00400000;
                break;
              }
              case 408: {
                bitField1_ |= 0x00800000;
                activePlusSubscription_ = input.readBool();
                break;
              }
              case 416: {
                bitField1_ |= 0x01000000;
                netWorth_ = input.readUInt32();
                break;
              }
              case 432: {
                bitField1_ |= 0x00000200;
                scaledHeroDamage_ = input.readUInt32();
                break;
              }
              case 440: {
                bitField1_ |= 0x00000400;
                scaledTowerDamage_ = input.readUInt32();
                break;
              }
              case 448: {
                bitField1_ |= 0x00000800;
                scaledHeroHealing_ = input.readUInt32();
                break;
              }
              case 458: {
                if (!((mutable_bitField1_ & 0x00400000) == 0x00400000)) {
                  permanentBuffs_ = new java.util.ArrayList();
                  mutable_bitField1_ |= 0x00400000;
                }
                permanentBuffs_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.PARSER, extensionRegistry));
                break;
              }
              case 464: {
                bitField1_ |= 0x02000000;
                botDifficulty_ = input.readUInt32();
                break;
              }
              case 472: {
                bitField0_ |= 0x00000200;
                item6_ = input.readInt32();
                break;
              }
              case 480: {
                bitField0_ |= 0x00000400;
                item7_ = input.readInt32();
                break;
              }
              case 488: {
                bitField0_ |= 0x00000800;
                item8_ = input.readInt32();
                break;
              }
              case 504: {
                bitField1_ |= 0x04000000;
                heroPickOrder_ = input.readUInt32();
                break;
              }
              case 512: {
                bitField1_ |= 0x08000000;
                heroWasRandomed_ = input.readBool();
                break;
              }
              case 538: {
                if (!((mutable_bitField2_ & 0x00000001) == 0x00000001)) {
                  heroDamageReceived_ = new java.util.ArrayList();
                  mutable_bitField2_ |= 0x00000001;
                }
                heroDamageReceived_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.PARSER, extensionRegistry));
                break;
              }
              case 552: {
                bitField1_ |= 0x10000000;
                heroWasDotaPlusSuggestion_ = input.readBool();
                break;
              }
              case 560: {
                bitField1_ |= 0x20000000;
                secondsDead_ = input.readUInt32();
                break;
              }
              case 568: {
                bitField1_ |= 0x40000000;
                goldLostToDeath_ = input.readUInt32();
                break;
              }
              case 578: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField1_ |= 0x00100000;
                proName_ = bs;
                break;
              }
              case 586: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField1_ |= 0x00200000;
                realName_ = bs;
                break;
              }
              case 592: {
                bitField0_ |= 0x00020000;
                mmrType_ = input.readUInt32();
                break;
              }
              case 600: {
                bitField1_ |= 0x80000000;
                laneSelectionFlags_ = input.readUInt32();
                break;
              }
              case 608: {
                bitField0_ |= 0x00001000;
                item9_ = input.readInt32();
                break;
              }
              case 616: {
                bitField2_ |= 0x00000001;
                bountyRunes_ = input.readUInt32();
                break;
              }
              case 624: {
                bitField2_ |= 0x00000002;
                outpostsCaptured_ = input.readUInt32();
                break;
              }
              case 634: {
                if (!((mutable_bitField2_ & 0x00000002) == 0x00000002)) {
                  heroDamageDealt_ = new java.util.ArrayList();
                  mutable_bitField2_ |= 0x00000002;
                }
                heroDamageDealt_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.PARSER, extensionRegistry));
                break;
              }
              case 640: {
                int rawValue = input.readEnum();
                skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM value = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(80, rawValue);
                } else {
                  bitField2_ |= 0x00000004;
                  teamNumber_ = value;
                }
                break;
              }
              case 648: {
                bitField2_ |= 0x00000008;
                teamSlot_ = input.readUInt32();
                break;
              }
              case 656: {
                bitField2_ |= 0x00000010;
                selectedFacet_ = input.readUInt32();
                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_bitField1_ & 0x00100000) == 0x00100000)) {
            abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
          }
          if (((mutable_bitField1_ & 0x00200000) == 0x00200000)) {
            additionalUnitsInventory_ = java.util.Collections.unmodifiableList(additionalUnitsInventory_);
          }
          if (((mutable_bitField1_ & 0x00400000) == 0x00400000)) {
            permanentBuffs_ = java.util.Collections.unmodifiableList(permanentBuffs_);
          }
          if (((mutable_bitField2_ & 0x00000001) == 0x00000001)) {
            heroDamageReceived_ = java.util.Collections.unmodifiableList(heroDamageReceived_);
          }
          if (((mutable_bitField2_ & 0x00000002) == 0x00000002)) {
            heroDamageDealt_ = java.util.Collections.unmodifiableList(heroDamageDealt_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder.class);
      }

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

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

      /**
       * Protobuf enum {@code CMsgDOTAMatch.Player.HeroDamageType}
       */
      public enum HeroDamageType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * HERO_DAMAGE_PHYSICAL = 0;
         */
        HERO_DAMAGE_PHYSICAL(0, 0),
        /**
         * HERO_DAMAGE_MAGICAL = 1;
         */
        HERO_DAMAGE_MAGICAL(1, 1),
        /**
         * HERO_DAMAGE_PURE = 2;
         */
        HERO_DAMAGE_PURE(2, 2),
        ;

        /**
         * HERO_DAMAGE_PHYSICAL = 0;
         */
        public static final int HERO_DAMAGE_PHYSICAL_VALUE = 0;
        /**
         * HERO_DAMAGE_MAGICAL = 1;
         */
        public static final int HERO_DAMAGE_MAGICAL_VALUE = 1;
        /**
         * HERO_DAMAGE_PURE = 2;
         */
        public static final int HERO_DAMAGE_PURE_VALUE = 2;


        public final int getNumber() { return value; }

        public static HeroDamageType valueOf(int value) {
          switch (value) {
            case 0: return HERO_DAMAGE_PHYSICAL;
            case 1: return HERO_DAMAGE_MAGICAL;
            case 2: return HERO_DAMAGE_PURE;
            default: return null;
          }
        }

        public static com.google.protobuf.Internal.EnumLiteMap
            internalGetValueMap() {
          return internalValueMap;
        }
        private static com.google.protobuf.Internal.EnumLiteMap
            internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap() {
                public HeroDamageType findValueByNumber(int number) {
                  return HeroDamageType.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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.getDescriptor().getEnumTypes().get(0);
        }

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

        public static HeroDamageType 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 HeroDamageType(int index, int value) {
          this.index = index;
          this.value = value;
        }

        // @@protoc_insertion_point(enum_scope:CMsgDOTAMatch.Player.HeroDamageType)
      }

      public interface CustomGameDataOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.Player.CustomGameData)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 dota_team = 1;
         */
        boolean hasDotaTeam();
        /**
         * optional uint32 dota_team = 1;
         */
        int getDotaTeam();

        /**
         * optional bool winner = 2;
         */
        boolean hasWinner();
        /**
         * optional bool winner = 2;
         */
        boolean getWinner();
      }
      /**
       * Protobuf type {@code CMsgDOTAMatch.Player.CustomGameData}
       */
      public static final class CustomGameData extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.Player.CustomGameData)
          CustomGameDataOrBuilder {
        // Use CustomGameData.newBuilder() to construct.
        private CustomGameData(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private CustomGameData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public CustomGameData getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private CustomGameData(
            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;
                  dotaTeam_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  winner_ = input.readBool();
                  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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_CustomGameData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int DOTA_TEAM_FIELD_NUMBER = 1;
        private int dotaTeam_;
        /**
         * optional uint32 dota_team = 1;
         */
        public boolean hasDotaTeam() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 dota_team = 1;
         */
        public int getDotaTeam() {
          return dotaTeam_;
        }

        public static final int WINNER_FIELD_NUMBER = 2;
        private boolean winner_;
        /**
         * optional bool winner = 2;
         */
        public boolean hasWinner() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional bool winner = 2;
         */
        public boolean getWinner() {
          return winner_;
        }

        private void initFields() {
          dotaTeam_ = 0;
          winner_ = false;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, dotaTeam_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBool(2, winner_);
          }
          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
              .computeUInt32Size(1, dotaTeam_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(2, winner_);
          }
          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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData 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 CMsgDOTAMatch.Player.CustomGameData}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.Player.CustomGameData)
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_CustomGameData_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder.class);
          }

          // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.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();
            dotaTeam_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            winner_ = false;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor;
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData getDefaultInstanceForType() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance();
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData build() {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData buildPartial() {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.dotaTeam_ = dotaTeam_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.winner_ = winner_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData) {
              return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData other) {
            if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance()) return this;
            if (other.hasDotaTeam()) {
              setDotaTeam(other.getDotaTeam());
            }
            if (other.hasWinner()) {
              setWinner(other.getWinner());
            }
            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 {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int dotaTeam_ ;
          /**
           * optional uint32 dota_team = 1;
           */
          public boolean hasDotaTeam() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 dota_team = 1;
           */
          public int getDotaTeam() {
            return dotaTeam_;
          }
          /**
           * optional uint32 dota_team = 1;
           */
          public Builder setDotaTeam(int value) {
            bitField0_ |= 0x00000001;
            dotaTeam_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 dota_team = 1;
           */
          public Builder clearDotaTeam() {
            bitField0_ = (bitField0_ & ~0x00000001);
            dotaTeam_ = 0;
            onChanged();
            return this;
          }

          private boolean winner_ ;
          /**
           * optional bool winner = 2;
           */
          public boolean hasWinner() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional bool winner = 2;
           */
          public boolean getWinner() {
            return winner_;
          }
          /**
           * optional bool winner = 2;
           */
          public Builder setWinner(boolean value) {
            bitField0_ |= 0x00000002;
            winner_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool winner = 2;
           */
          public Builder clearWinner() {
            bitField0_ = (bitField0_ & ~0x00000002);
            winner_ = false;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.Player.CustomGameData)
        }

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

        // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.Player.CustomGameData)
      }

      public interface HeroDamageReceivedOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.Player.HeroDamageReceived)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 pre_reduction = 1;
         */
        boolean hasPreReduction();
        /**
         * optional uint32 pre_reduction = 1;
         */
        int getPreReduction();

        /**
         * optional uint32 post_reduction = 2;
         */
        boolean hasPostReduction();
        /**
         * optional uint32 post_reduction = 2;
         */
        int getPostReduction();

        /**
         * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
         */
        boolean hasDamageType();
        /**
         * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
         */
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType getDamageType();
      }
      /**
       * Protobuf type {@code CMsgDOTAMatch.Player.HeroDamageReceived}
       */
      public static final class HeroDamageReceived extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.Player.HeroDamageReceived)
          HeroDamageReceivedOrBuilder {
        // Use HeroDamageReceived.newBuilder() to construct.
        private HeroDamageReceived(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private HeroDamageReceived(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public HeroDamageReceived getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private HeroDamageReceived(
            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;
                  preReduction_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  postReduction_ = input.readUInt32();
                  break;
                }
                case 24: {
                  int rawValue = input.readEnum();
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType value = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType.valueOf(rawValue);
                  if (value == null) {
                    unknownFields.mergeVarintField(3, rawValue);
                  } else {
                    bitField0_ |= 0x00000004;
                    damageType_ = 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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int PRE_REDUCTION_FIELD_NUMBER = 1;
        private int preReduction_;
        /**
         * optional uint32 pre_reduction = 1;
         */
        public boolean hasPreReduction() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 pre_reduction = 1;
         */
        public int getPreReduction() {
          return preReduction_;
        }

        public static final int POST_REDUCTION_FIELD_NUMBER = 2;
        private int postReduction_;
        /**
         * optional uint32 post_reduction = 2;
         */
        public boolean hasPostReduction() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 post_reduction = 2;
         */
        public int getPostReduction() {
          return postReduction_;
        }

        public static final int DAMAGE_TYPE_FIELD_NUMBER = 3;
        private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType damageType_;
        /**
         * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
         */
        public boolean hasDamageType() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType getDamageType() {
          return damageType_;
        }

        private void initFields() {
          preReduction_ = 0;
          postReduction_ = 0;
          damageType_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType.HERO_DAMAGE_PHYSICAL;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getSerializedSize();
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, preReduction_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, postReduction_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeEnum(3, damageType_.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
              .computeUInt32Size(1, preReduction_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, postReduction_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeEnumSize(3, damageType_.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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived 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 CMsgDOTAMatch.Player.HeroDamageReceived}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.Player.HeroDamageReceived)
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder.class);
          }

          // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.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();
            preReduction_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            postReduction_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            damageType_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType.HERO_DAMAGE_PHYSICAL;
            bitField0_ = (bitField0_ & ~0x00000004);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor;
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getDefaultInstanceForType() {
            return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance();
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived build() {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived buildPartial() {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.preReduction_ = preReduction_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.postReduction_ = postReduction_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.damageType_ = damageType_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived) {
              return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived other) {
            if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance()) return this;
            if (other.hasPreReduction()) {
              setPreReduction(other.getPreReduction());
            }
            if (other.hasPostReduction()) {
              setPostReduction(other.getPostReduction());
            }
            if (other.hasDamageType()) {
              setDamageType(other.getDamageType());
            }
            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 {
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int preReduction_ ;
          /**
           * optional uint32 pre_reduction = 1;
           */
          public boolean hasPreReduction() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 pre_reduction = 1;
           */
          public int getPreReduction() {
            return preReduction_;
          }
          /**
           * optional uint32 pre_reduction = 1;
           */
          public Builder setPreReduction(int value) {
            bitField0_ |= 0x00000001;
            preReduction_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 pre_reduction = 1;
           */
          public Builder clearPreReduction() {
            bitField0_ = (bitField0_ & ~0x00000001);
            preReduction_ = 0;
            onChanged();
            return this;
          }

          private int postReduction_ ;
          /**
           * optional uint32 post_reduction = 2;
           */
          public boolean hasPostReduction() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 post_reduction = 2;
           */
          public int getPostReduction() {
            return postReduction_;
          }
          /**
           * optional uint32 post_reduction = 2;
           */
          public Builder setPostReduction(int value) {
            bitField0_ |= 0x00000002;
            postReduction_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 post_reduction = 2;
           */
          public Builder clearPostReduction() {
            bitField0_ = (bitField0_ & ~0x00000002);
            postReduction_ = 0;
            onChanged();
            return this;
          }

          private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType damageType_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType.HERO_DAMAGE_PHYSICAL;
          /**
           * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
           */
          public boolean hasDamageType() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
           */
          public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType getDamageType() {
            return damageType_;
          }
          /**
           * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
           */
          public Builder setDamageType(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField0_ |= 0x00000004;
            damageType_ = value;
            onChanged();
            return this;
          }
          /**
           * optional .CMsgDOTAMatch.Player.HeroDamageType damage_type = 3 [default = HERO_DAMAGE_PHYSICAL];
           */
          public Builder clearDamageType() {
            bitField0_ = (bitField0_ & ~0x00000004);
            damageType_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageType.HERO_DAMAGE_PHYSICAL;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.Player.HeroDamageReceived)
        }

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

        // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.Player.HeroDamageReceived)
      }

      private int bitField0_;
      private int bitField1_;
      private int bitField2_;
      public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
      private int accountId_;
      /**
       * optional uint32 account_id = 1;
       */
      public boolean hasAccountId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 account_id = 1;
       */
      public int getAccountId() {
        return accountId_;
      }

      public static final int PLAYER_SLOT_FIELD_NUMBER = 2;
      private int playerSlot_;
      /**
       * optional uint32 player_slot = 2;
       */
      public boolean hasPlayerSlot() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 player_slot = 2;
       */
      public int getPlayerSlot() {
        return playerSlot_;
      }

      public static final int HERO_ID_FIELD_NUMBER = 3;
      private int heroId_;
      /**
       * optional int32 hero_id = 3;
       */
      public boolean hasHeroId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional int32 hero_id = 3;
       */
      public int getHeroId() {
        return heroId_;
      }

      public static final int ITEM_0_FIELD_NUMBER = 4;
      private int item0_;
      /**
       * optional int32 item_0 = 4 [default = -1];
       */
      public boolean hasItem0() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional int32 item_0 = 4 [default = -1];
       */
      public int getItem0() {
        return item0_;
      }

      public static final int ITEM_1_FIELD_NUMBER = 5;
      private int item1_;
      /**
       * optional int32 item_1 = 5 [default = -1];
       */
      public boolean hasItem1() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional int32 item_1 = 5 [default = -1];
       */
      public int getItem1() {
        return item1_;
      }

      public static final int ITEM_2_FIELD_NUMBER = 6;
      private int item2_;
      /**
       * optional int32 item_2 = 6 [default = -1];
       */
      public boolean hasItem2() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional int32 item_2 = 6 [default = -1];
       */
      public int getItem2() {
        return item2_;
      }

      public static final int ITEM_3_FIELD_NUMBER = 7;
      private int item3_;
      /**
       * optional int32 item_3 = 7 [default = -1];
       */
      public boolean hasItem3() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional int32 item_3 = 7 [default = -1];
       */
      public int getItem3() {
        return item3_;
      }

      public static final int ITEM_4_FIELD_NUMBER = 8;
      private int item4_;
      /**
       * optional int32 item_4 = 8 [default = -1];
       */
      public boolean hasItem4() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional int32 item_4 = 8 [default = -1];
       */
      public int getItem4() {
        return item4_;
      }

      public static final int ITEM_5_FIELD_NUMBER = 9;
      private int item5_;
      /**
       * optional int32 item_5 = 9 [default = -1];
       */
      public boolean hasItem5() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional int32 item_5 = 9 [default = -1];
       */
      public int getItem5() {
        return item5_;
      }

      public static final int ITEM_6_FIELD_NUMBER = 59;
      private int item6_;
      /**
       * optional int32 item_6 = 59 [default = -1];
       */
      public boolean hasItem6() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional int32 item_6 = 59 [default = -1];
       */
      public int getItem6() {
        return item6_;
      }

      public static final int ITEM_7_FIELD_NUMBER = 60;
      private int item7_;
      /**
       * optional int32 item_7 = 60 [default = -1];
       */
      public boolean hasItem7() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional int32 item_7 = 60 [default = -1];
       */
      public int getItem7() {
        return item7_;
      }

      public static final int ITEM_8_FIELD_NUMBER = 61;
      private int item8_;
      /**
       * optional int32 item_8 = 61 [default = -1];
       */
      public boolean hasItem8() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional int32 item_8 = 61 [default = -1];
       */
      public int getItem8() {
        return item8_;
      }

      public static final int ITEM_9_FIELD_NUMBER = 76;
      private int item9_;
      /**
       * optional int32 item_9 = 76 [default = -1];
       */
      public boolean hasItem9() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * optional int32 item_9 = 76 [default = -1];
       */
      public int getItem9() {
        return item9_;
      }

      public static final int EXPECTED_TEAM_CONTRIBUTION_FIELD_NUMBER = 10;
      private float expectedTeamContribution_;
      /**
       * optional float expected_team_contribution = 10;
       */
      public boolean hasExpectedTeamContribution() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * optional float expected_team_contribution = 10;
       */
      public float getExpectedTeamContribution() {
        return expectedTeamContribution_;
      }

      public static final int SCALED_METRIC_FIELD_NUMBER = 11;
      private float scaledMetric_;
      /**
       * optional float scaled_metric = 11;
       */
      public boolean hasScaledMetric() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      /**
       * optional float scaled_metric = 11;
       */
      public float getScaledMetric() {
        return scaledMetric_;
      }

      public static final int PREVIOUS_RANK_FIELD_NUMBER = 12;
      private int previousRank_;
      /**
       * optional uint32 previous_rank = 12;
       */
      public boolean hasPreviousRank() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * optional uint32 previous_rank = 12;
       */
      public int getPreviousRank() {
        return previousRank_;
      }

      public static final int RANK_CHANGE_FIELD_NUMBER = 13;
      private int rankChange_;
      /**
       * optional sint32 rank_change = 13;
       */
      public boolean hasRankChange() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      /**
       * optional sint32 rank_change = 13;
       */
      public int getRankChange() {
        return rankChange_;
      }

      public static final int MMR_TYPE_FIELD_NUMBER = 74;
      private int mmrType_;
      /**
       * optional uint32 mmr_type = 74;
       */
      public boolean hasMmrType() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      /**
       * optional uint32 mmr_type = 74;
       */
      public int getMmrType() {
        return mmrType_;
      }

      public static final int KILLS_FIELD_NUMBER = 14;
      private int kills_;
      /**
       * optional uint32 kills = 14;
       */
      public boolean hasKills() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      /**
       * optional uint32 kills = 14;
       */
      public int getKills() {
        return kills_;
      }

      public static final int DEATHS_FIELD_NUMBER = 15;
      private int deaths_;
      /**
       * optional uint32 deaths = 15;
       */
      public boolean hasDeaths() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      /**
       * optional uint32 deaths = 15;
       */
      public int getDeaths() {
        return deaths_;
      }

      public static final int ASSISTS_FIELD_NUMBER = 16;
      private int assists_;
      /**
       * optional uint32 assists = 16;
       */
      public boolean hasAssists() {
        return ((bitField0_ & 0x00100000) == 0x00100000);
      }
      /**
       * optional uint32 assists = 16;
       */
      public int getAssists() {
        return assists_;
      }

      public static final int LEAVER_STATUS_FIELD_NUMBER = 17;
      private int leaverStatus_;
      /**
       * optional uint32 leaver_status = 17;
       */
      public boolean hasLeaverStatus() {
        return ((bitField0_ & 0x00200000) == 0x00200000);
      }
      /**
       * optional uint32 leaver_status = 17;
       */
      public int getLeaverStatus() {
        return leaverStatus_;
      }

      public static final int GOLD_FIELD_NUMBER = 18;
      private int gold_;
      /**
       * optional uint32 gold = 18;
       */
      public boolean hasGold() {
        return ((bitField0_ & 0x00400000) == 0x00400000);
      }
      /**
       * optional uint32 gold = 18;
       */
      public int getGold() {
        return gold_;
      }

      public static final int LAST_HITS_FIELD_NUMBER = 19;
      private int lastHits_;
      /**
       * optional uint32 last_hits = 19;
       */
      public boolean hasLastHits() {
        return ((bitField0_ & 0x00800000) == 0x00800000);
      }
      /**
       * optional uint32 last_hits = 19;
       */
      public int getLastHits() {
        return lastHits_;
      }

      public static final int DENIES_FIELD_NUMBER = 20;
      private int denies_;
      /**
       * optional uint32 denies = 20;
       */
      public boolean hasDenies() {
        return ((bitField0_ & 0x01000000) == 0x01000000);
      }
      /**
       * optional uint32 denies = 20;
       */
      public int getDenies() {
        return denies_;
      }

      public static final int GOLD_PER_MIN_FIELD_NUMBER = 21;
      private int goldPerMin_;
      /**
       * optional uint32 gold_per_min = 21;
       */
      public boolean hasGoldPerMin() {
        return ((bitField0_ & 0x02000000) == 0x02000000);
      }
      /**
       * optional uint32 gold_per_min = 21;
       */
      public int getGoldPerMin() {
        return goldPerMin_;
      }

      public static final int XP_PER_MIN_FIELD_NUMBER = 22;
      private int xpPerMin_;
      /**
       * optional uint32 xp_per_min = 22;
       */
      public boolean hasXpPerMin() {
        return ((bitField0_ & 0x04000000) == 0x04000000);
      }
      /**
       * optional uint32 xp_per_min = 22;
       */
      public int getXpPerMin() {
        return xpPerMin_;
      }

      public static final int GOLD_SPENT_FIELD_NUMBER = 23;
      private int goldSpent_;
      /**
       * optional uint32 gold_spent = 23;
       */
      public boolean hasGoldSpent() {
        return ((bitField0_ & 0x08000000) == 0x08000000);
      }
      /**
       * optional uint32 gold_spent = 23;
       */
      public int getGoldSpent() {
        return goldSpent_;
      }

      public static final int HERO_DAMAGE_FIELD_NUMBER = 24;
      private int heroDamage_;
      /**
       * optional uint32 hero_damage = 24;
       */
      public boolean hasHeroDamage() {
        return ((bitField0_ & 0x10000000) == 0x10000000);
      }
      /**
       * optional uint32 hero_damage = 24;
       */
      public int getHeroDamage() {
        return heroDamage_;
      }

      public static final int TOWER_DAMAGE_FIELD_NUMBER = 25;
      private int towerDamage_;
      /**
       * optional uint32 tower_damage = 25;
       */
      public boolean hasTowerDamage() {
        return ((bitField0_ & 0x20000000) == 0x20000000);
      }
      /**
       * optional uint32 tower_damage = 25;
       */
      public int getTowerDamage() {
        return towerDamage_;
      }

      public static final int HERO_HEALING_FIELD_NUMBER = 26;
      private int heroHealing_;
      /**
       * optional uint32 hero_healing = 26;
       */
      public boolean hasHeroHealing() {
        return ((bitField0_ & 0x40000000) == 0x40000000);
      }
      /**
       * optional uint32 hero_healing = 26;
       */
      public int getHeroHealing() {
        return heroHealing_;
      }

      public static final int LEVEL_FIELD_NUMBER = 27;
      private int level_;
      /**
       * optional uint32 level = 27;
       */
      public boolean hasLevel() {
        return ((bitField0_ & 0x80000000) == 0x80000000);
      }
      /**
       * optional uint32 level = 27;
       */
      public int getLevel() {
        return level_;
      }

      public static final int TIME_LAST_SEEN_FIELD_NUMBER = 28;
      private int timeLastSeen_;
      /**
       * optional uint32 time_last_seen = 28;
       */
      public boolean hasTimeLastSeen() {
        return ((bitField1_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 time_last_seen = 28;
       */
      public int getTimeLastSeen() {
        return timeLastSeen_;
      }

      public static final int PLAYER_NAME_FIELD_NUMBER = 29;
      private java.lang.Object playerName_;
      /**
       * optional string player_name = 29;
       */
      public boolean hasPlayerName() {
        return ((bitField1_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string player_name = 29;
       */
      public java.lang.String getPlayerName() {
        java.lang.Object ref = playerName_;
        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()) {
            playerName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string player_name = 29;
       */
      public com.google.protobuf.ByteString
          getPlayerNameBytes() {
        java.lang.Object ref = playerName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          playerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SUPPORT_ABILITY_VALUE_FIELD_NUMBER = 30;
      private int supportAbilityValue_;
      /**
       * optional uint32 support_ability_value = 30;
       */
      public boolean hasSupportAbilityValue() {
        return ((bitField1_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 support_ability_value = 30;
       */
      public int getSupportAbilityValue() {
        return supportAbilityValue_;
      }

      public static final int FEEDING_DETECTED_FIELD_NUMBER = 32;
      private boolean feedingDetected_;
      /**
       * optional bool feeding_detected = 32;
       */
      public boolean hasFeedingDetected() {
        return ((bitField1_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bool feeding_detected = 32;
       */
      public boolean getFeedingDetected() {
        return feedingDetected_;
      }

      public static final int SEARCH_RANK_FIELD_NUMBER = 34;
      private int searchRank_;
      /**
       * optional uint32 search_rank = 34;
       */
      public boolean hasSearchRank() {
        return ((bitField1_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 search_rank = 34;
       */
      public int getSearchRank() {
        return searchRank_;
      }

      public static final int SEARCH_RANK_UNCERTAINTY_FIELD_NUMBER = 35;
      private int searchRankUncertainty_;
      /**
       * optional uint32 search_rank_uncertainty = 35;
       */
      public boolean hasSearchRankUncertainty() {
        return ((bitField1_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 search_rank_uncertainty = 35;
       */
      public int getSearchRankUncertainty() {
        return searchRankUncertainty_;
      }

      public static final int RANK_UNCERTAINTY_CHANGE_FIELD_NUMBER = 36;
      private int rankUncertaintyChange_;
      /**
       * optional int32 rank_uncertainty_change = 36;
       */
      public boolean hasRankUncertaintyChange() {
        return ((bitField1_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional int32 rank_uncertainty_change = 36;
       */
      public int getRankUncertaintyChange() {
        return rankUncertaintyChange_;
      }

      public static final int HERO_PLAY_COUNT_FIELD_NUMBER = 37;
      private int heroPlayCount_;
      /**
       * optional uint32 hero_play_count = 37;
       */
      public boolean hasHeroPlayCount() {
        return ((bitField1_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional uint32 hero_play_count = 37;
       */
      public int getHeroPlayCount() {
        return heroPlayCount_;
      }

      public static final int PARTY_ID_FIELD_NUMBER = 38;
      private long partyId_;
      /**
       * optional fixed64 party_id = 38;
       */
      public boolean hasPartyId() {
        return ((bitField1_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional fixed64 party_id = 38;
       */
      public long getPartyId() {
        return partyId_;
      }

      public static final int SCALED_HERO_DAMAGE_FIELD_NUMBER = 54;
      private int scaledHeroDamage_;
      /**
       * optional uint32 scaled_hero_damage = 54;
       */
      public boolean hasScaledHeroDamage() {
        return ((bitField1_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional uint32 scaled_hero_damage = 54;
       */
      public int getScaledHeroDamage() {
        return scaledHeroDamage_;
      }

      public static final int SCALED_TOWER_DAMAGE_FIELD_NUMBER = 55;
      private int scaledTowerDamage_;
      /**
       * optional uint32 scaled_tower_damage = 55;
       */
      public boolean hasScaledTowerDamage() {
        return ((bitField1_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional uint32 scaled_tower_damage = 55;
       */
      public int getScaledTowerDamage() {
        return scaledTowerDamage_;
      }

      public static final int SCALED_HERO_HEALING_FIELD_NUMBER = 56;
      private int scaledHeroHealing_;
      /**
       * optional uint32 scaled_hero_healing = 56;
       */
      public boolean hasScaledHeroHealing() {
        return ((bitField1_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional uint32 scaled_hero_healing = 56;
       */
      public int getScaledHeroHealing() {
        return scaledHeroHealing_;
      }

      public static final int SCALED_KILLS_FIELD_NUMBER = 39;
      private float scaledKills_;
      /**
       * optional float scaled_kills = 39;
       */
      public boolean hasScaledKills() {
        return ((bitField1_ & 0x00001000) == 0x00001000);
      }
      /**
       * optional float scaled_kills = 39;
       */
      public float getScaledKills() {
        return scaledKills_;
      }

      public static final int SCALED_DEATHS_FIELD_NUMBER = 40;
      private float scaledDeaths_;
      /**
       * optional float scaled_deaths = 40;
       */
      public boolean hasScaledDeaths() {
        return ((bitField1_ & 0x00002000) == 0x00002000);
      }
      /**
       * optional float scaled_deaths = 40;
       */
      public float getScaledDeaths() {
        return scaledDeaths_;
      }

      public static final int SCALED_ASSISTS_FIELD_NUMBER = 41;
      private float scaledAssists_;
      /**
       * optional float scaled_assists = 41;
       */
      public boolean hasScaledAssists() {
        return ((bitField1_ & 0x00004000) == 0x00004000);
      }
      /**
       * optional float scaled_assists = 41;
       */
      public float getScaledAssists() {
        return scaledAssists_;
      }

      public static final int CLAIMED_FARM_GOLD_FIELD_NUMBER = 42;
      private int claimedFarmGold_;
      /**
       * optional uint32 claimed_farm_gold = 42;
       */
      public boolean hasClaimedFarmGold() {
        return ((bitField1_ & 0x00008000) == 0x00008000);
      }
      /**
       * optional uint32 claimed_farm_gold = 42;
       */
      public int getClaimedFarmGold() {
        return claimedFarmGold_;
      }

      public static final int SUPPORT_GOLD_FIELD_NUMBER = 43;
      private int supportGold_;
      /**
       * optional uint32 support_gold = 43;
       */
      public boolean hasSupportGold() {
        return ((bitField1_ & 0x00010000) == 0x00010000);
      }
      /**
       * optional uint32 support_gold = 43;
       */
      public int getSupportGold() {
        return supportGold_;
      }

      public static final int CLAIMED_DENIES_FIELD_NUMBER = 44;
      private int claimedDenies_;
      /**
       * optional uint32 claimed_denies = 44;
       */
      public boolean hasClaimedDenies() {
        return ((bitField1_ & 0x00020000) == 0x00020000);
      }
      /**
       * optional uint32 claimed_denies = 44;
       */
      public int getClaimedDenies() {
        return claimedDenies_;
      }

      public static final int CLAIMED_MISSES_FIELD_NUMBER = 45;
      private int claimedMisses_;
      /**
       * optional uint32 claimed_misses = 45;
       */
      public boolean hasClaimedMisses() {
        return ((bitField1_ & 0x00040000) == 0x00040000);
      }
      /**
       * optional uint32 claimed_misses = 45;
       */
      public int getClaimedMisses() {
        return claimedMisses_;
      }

      public static final int MISSES_FIELD_NUMBER = 46;
      private int misses_;
      /**
       * optional uint32 misses = 46;
       */
      public boolean hasMisses() {
        return ((bitField1_ & 0x00080000) == 0x00080000);
      }
      /**
       * optional uint32 misses = 46;
       */
      public int getMisses() {
        return misses_;
      }

      public static final int ABILITY_UPGRADES_FIELD_NUMBER = 47;
      private java.util.List abilityUpgrades_;
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      public java.util.List getAbilityUpgradesList() {
        return abilityUpgrades_;
      }
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      public java.util.List 
          getAbilityUpgradesOrBuilderList() {
        return abilityUpgrades_;
      }
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      public int getAbilityUpgradesCount() {
        return abilityUpgrades_.size();
      }
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade getAbilityUpgrades(int index) {
        return abilityUpgrades_.get(index);
      }
      /**
       * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder getAbilityUpgradesOrBuilder(
          int index) {
        return abilityUpgrades_.get(index);
      }

      public static final int ADDITIONAL_UNITS_INVENTORY_FIELD_NUMBER = 48;
      private java.util.List additionalUnitsInventory_;
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      public java.util.List getAdditionalUnitsInventoryList() {
        return additionalUnitsInventory_;
      }
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      public java.util.List 
          getAdditionalUnitsInventoryOrBuilderList() {
        return additionalUnitsInventory_;
      }
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      public int getAdditionalUnitsInventoryCount() {
        return additionalUnitsInventory_.size();
      }
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory getAdditionalUnitsInventory(int index) {
        return additionalUnitsInventory_.get(index);
      }
      /**
       * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder getAdditionalUnitsInventoryOrBuilder(
          int index) {
        return additionalUnitsInventory_.get(index);
      }

      public static final int PERMANENT_BUFFS_FIELD_NUMBER = 57;
      private java.util.List permanentBuffs_;
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      public java.util.List getPermanentBuffsList() {
        return permanentBuffs_;
      }
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      public java.util.List 
          getPermanentBuffsOrBuilderList() {
        return permanentBuffs_;
      }
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      public int getPermanentBuffsCount() {
        return permanentBuffs_.size();
      }
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff getPermanentBuffs(int index) {
        return permanentBuffs_.get(index);
      }
      /**
       * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder getPermanentBuffsOrBuilder(
          int index) {
        return permanentBuffs_.get(index);
      }

      public static final int PRO_NAME_FIELD_NUMBER = 72;
      private java.lang.Object proName_;
      /**
       * optional string pro_name = 72;
       */
      public boolean hasProName() {
        return ((bitField1_ & 0x00100000) == 0x00100000);
      }
      /**
       * optional string pro_name = 72;
       */
      public java.lang.String getProName() {
        java.lang.Object ref = proName_;
        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()) {
            proName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string pro_name = 72;
       */
      public com.google.protobuf.ByteString
          getProNameBytes() {
        java.lang.Object ref = proName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          proName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int REAL_NAME_FIELD_NUMBER = 73;
      private java.lang.Object realName_;
      /**
       * optional string real_name = 73;
       */
      public boolean hasRealName() {
        return ((bitField1_ & 0x00200000) == 0x00200000);
      }
      /**
       * optional string real_name = 73;
       */
      public java.lang.String getRealName() {
        java.lang.Object ref = realName_;
        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()) {
            realName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string real_name = 73;
       */
      public com.google.protobuf.ByteString
          getRealNameBytes() {
        java.lang.Object ref = realName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          realName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int CUSTOM_GAME_DATA_FIELD_NUMBER = 50;
      private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData customGameData_;
      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      public boolean hasCustomGameData() {
        return ((bitField1_ & 0x00400000) == 0x00400000);
      }
      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData getCustomGameData() {
        return customGameData_;
      }
      /**
       * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder getCustomGameDataOrBuilder() {
        return customGameData_;
      }

      public static final int ACTIVE_PLUS_SUBSCRIPTION_FIELD_NUMBER = 51;
      private boolean activePlusSubscription_;
      /**
       * optional bool active_plus_subscription = 51;
       */
      public boolean hasActivePlusSubscription() {
        return ((bitField1_ & 0x00800000) == 0x00800000);
      }
      /**
       * optional bool active_plus_subscription = 51;
       */
      public boolean getActivePlusSubscription() {
        return activePlusSubscription_;
      }

      public static final int NET_WORTH_FIELD_NUMBER = 52;
      private int netWorth_;
      /**
       * optional uint32 net_worth = 52;
       */
      public boolean hasNetWorth() {
        return ((bitField1_ & 0x01000000) == 0x01000000);
      }
      /**
       * optional uint32 net_worth = 52;
       */
      public int getNetWorth() {
        return netWorth_;
      }

      public static final int BOT_DIFFICULTY_FIELD_NUMBER = 58;
      private int botDifficulty_;
      /**
       * optional uint32 bot_difficulty = 58;
       */
      public boolean hasBotDifficulty() {
        return ((bitField1_ & 0x02000000) == 0x02000000);
      }
      /**
       * optional uint32 bot_difficulty = 58;
       */
      public int getBotDifficulty() {
        return botDifficulty_;
      }

      public static final int HERO_PICK_ORDER_FIELD_NUMBER = 63;
      private int heroPickOrder_;
      /**
       * optional uint32 hero_pick_order = 63;
       */
      public boolean hasHeroPickOrder() {
        return ((bitField1_ & 0x04000000) == 0x04000000);
      }
      /**
       * optional uint32 hero_pick_order = 63;
       */
      public int getHeroPickOrder() {
        return heroPickOrder_;
      }

      public static final int HERO_WAS_RANDOMED_FIELD_NUMBER = 64;
      private boolean heroWasRandomed_;
      /**
       * optional bool hero_was_randomed = 64;
       */
      public boolean hasHeroWasRandomed() {
        return ((bitField1_ & 0x08000000) == 0x08000000);
      }
      /**
       * optional bool hero_was_randomed = 64;
       */
      public boolean getHeroWasRandomed() {
        return heroWasRandomed_;
      }

      public static final int HERO_WAS_DOTA_PLUS_SUGGESTION_FIELD_NUMBER = 69;
      private boolean heroWasDotaPlusSuggestion_;
      /**
       * optional bool hero_was_dota_plus_suggestion = 69;
       */
      public boolean hasHeroWasDotaPlusSuggestion() {
        return ((bitField1_ & 0x10000000) == 0x10000000);
      }
      /**
       * optional bool hero_was_dota_plus_suggestion = 69;
       */
      public boolean getHeroWasDotaPlusSuggestion() {
        return heroWasDotaPlusSuggestion_;
      }

      public static final int HERO_DAMAGE_RECEIVED_FIELD_NUMBER = 67;
      private java.util.List heroDamageReceived_;
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      public java.util.List getHeroDamageReceivedList() {
        return heroDamageReceived_;
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      public java.util.List 
          getHeroDamageReceivedOrBuilderList() {
        return heroDamageReceived_;
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      public int getHeroDamageReceivedCount() {
        return heroDamageReceived_.size();
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageReceived(int index) {
        return heroDamageReceived_.get(index);
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageReceivedOrBuilder(
          int index) {
        return heroDamageReceived_.get(index);
      }

      public static final int HERO_DAMAGE_DEALT_FIELD_NUMBER = 79;
      private java.util.List heroDamageDealt_;
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      public java.util.List getHeroDamageDealtList() {
        return heroDamageDealt_;
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      public java.util.List 
          getHeroDamageDealtOrBuilderList() {
        return heroDamageDealt_;
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      public int getHeroDamageDealtCount() {
        return heroDamageDealt_.size();
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageDealt(int index) {
        return heroDamageDealt_.get(index);
      }
      /**
       * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageDealtOrBuilder(
          int index) {
        return heroDamageDealt_.get(index);
      }

      public static final int SECONDS_DEAD_FIELD_NUMBER = 70;
      private int secondsDead_;
      /**
       * optional uint32 seconds_dead = 70;
       */
      public boolean hasSecondsDead() {
        return ((bitField1_ & 0x20000000) == 0x20000000);
      }
      /**
       * optional uint32 seconds_dead = 70;
       */
      public int getSecondsDead() {
        return secondsDead_;
      }

      public static final int GOLD_LOST_TO_DEATH_FIELD_NUMBER = 71;
      private int goldLostToDeath_;
      /**
       * optional uint32 gold_lost_to_death = 71;
       */
      public boolean hasGoldLostToDeath() {
        return ((bitField1_ & 0x40000000) == 0x40000000);
      }
      /**
       * optional uint32 gold_lost_to_death = 71;
       */
      public int getGoldLostToDeath() {
        return goldLostToDeath_;
      }

      public static final int LANE_SELECTION_FLAGS_FIELD_NUMBER = 75;
      private int laneSelectionFlags_;
      /**
       * optional uint32 lane_selection_flags = 75;
       */
      public boolean hasLaneSelectionFlags() {
        return ((bitField1_ & 0x80000000) == 0x80000000);
      }
      /**
       * optional uint32 lane_selection_flags = 75;
       */
      public int getLaneSelectionFlags() {
        return laneSelectionFlags_;
      }

      public static final int BOUNTY_RUNES_FIELD_NUMBER = 77;
      private int bountyRunes_;
      /**
       * optional uint32 bounty_runes = 77;
       */
      public boolean hasBountyRunes() {
        return ((bitField2_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 bounty_runes = 77;
       */
      public int getBountyRunes() {
        return bountyRunes_;
      }

      public static final int OUTPOSTS_CAPTURED_FIELD_NUMBER = 78;
      private int outpostsCaptured_;
      /**
       * optional uint32 outposts_captured = 78;
       */
      public boolean hasOutpostsCaptured() {
        return ((bitField2_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 outposts_captured = 78;
       */
      public int getOutpostsCaptured() {
        return outpostsCaptured_;
      }

      public static final int TEAM_NUMBER_FIELD_NUMBER = 80;
      private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM teamNumber_;
      /**
       * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
       */
      public boolean hasTeamNumber() {
        return ((bitField2_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM getTeamNumber() {
        return teamNumber_;
      }

      public static final int TEAM_SLOT_FIELD_NUMBER = 81;
      private int teamSlot_;
      /**
       * optional uint32 team_slot = 81;
       */
      public boolean hasTeamSlot() {
        return ((bitField2_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 team_slot = 81;
       */
      public int getTeamSlot() {
        return teamSlot_;
      }

      public static final int SELECTED_FACET_FIELD_NUMBER = 82;
      private int selectedFacet_;
      /**
       * optional uint32 selected_facet = 82;
       */
      public boolean hasSelectedFacet() {
        return ((bitField2_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 selected_facet = 82;
       */
      public int getSelectedFacet() {
        return selectedFacet_;
      }

      private void initFields() {
        accountId_ = 0;
        playerSlot_ = 0;
        heroId_ = 0;
        item0_ = -1;
        item1_ = -1;
        item2_ = -1;
        item3_ = -1;
        item4_ = -1;
        item5_ = -1;
        item6_ = -1;
        item7_ = -1;
        item8_ = -1;
        item9_ = -1;
        expectedTeamContribution_ = 0F;
        scaledMetric_ = 0F;
        previousRank_ = 0;
        rankChange_ = 0;
        mmrType_ = 0;
        kills_ = 0;
        deaths_ = 0;
        assists_ = 0;
        leaverStatus_ = 0;
        gold_ = 0;
        lastHits_ = 0;
        denies_ = 0;
        goldPerMin_ = 0;
        xpPerMin_ = 0;
        goldSpent_ = 0;
        heroDamage_ = 0;
        towerDamage_ = 0;
        heroHealing_ = 0;
        level_ = 0;
        timeLastSeen_ = 0;
        playerName_ = "";
        supportAbilityValue_ = 0;
        feedingDetected_ = false;
        searchRank_ = 0;
        searchRankUncertainty_ = 0;
        rankUncertaintyChange_ = 0;
        heroPlayCount_ = 0;
        partyId_ = 0L;
        scaledHeroDamage_ = 0;
        scaledTowerDamage_ = 0;
        scaledHeroHealing_ = 0;
        scaledKills_ = 0F;
        scaledDeaths_ = 0F;
        scaledAssists_ = 0F;
        claimedFarmGold_ = 0;
        supportGold_ = 0;
        claimedDenies_ = 0;
        claimedMisses_ = 0;
        misses_ = 0;
        abilityUpgrades_ = java.util.Collections.emptyList();
        additionalUnitsInventory_ = java.util.Collections.emptyList();
        permanentBuffs_ = java.util.Collections.emptyList();
        proName_ = "";
        realName_ = "";
        customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance();
        activePlusSubscription_ = false;
        netWorth_ = 0;
        botDifficulty_ = 0;
        heroPickOrder_ = 0;
        heroWasRandomed_ = false;
        heroWasDotaPlusSuggestion_ = false;
        heroDamageReceived_ = java.util.Collections.emptyList();
        heroDamageDealt_ = java.util.Collections.emptyList();
        secondsDead_ = 0;
        goldLostToDeath_ = 0;
        laneSelectionFlags_ = 0;
        bountyRunes_ = 0;
        outpostsCaptured_ = 0;
        teamNumber_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM.DOTA_GC_TEAM_GOOD_GUYS;
        teamSlot_ = 0;
        selectedFacet_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, playerSlot_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, heroId_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeInt32(4, item0_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeInt32(5, item1_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeInt32(6, item2_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeInt32(7, item3_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeInt32(8, item4_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeInt32(9, item5_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          output.writeFloat(10, expectedTeamContribution_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          output.writeFloat(11, scaledMetric_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          output.writeUInt32(12, previousRank_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          output.writeSInt32(13, rankChange_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          output.writeUInt32(14, kills_);
        }
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          output.writeUInt32(15, deaths_);
        }
        if (((bitField0_ & 0x00100000) == 0x00100000)) {
          output.writeUInt32(16, assists_);
        }
        if (((bitField0_ & 0x00200000) == 0x00200000)) {
          output.writeUInt32(17, leaverStatus_);
        }
        if (((bitField0_ & 0x00400000) == 0x00400000)) {
          output.writeUInt32(18, gold_);
        }
        if (((bitField0_ & 0x00800000) == 0x00800000)) {
          output.writeUInt32(19, lastHits_);
        }
        if (((bitField0_ & 0x01000000) == 0x01000000)) {
          output.writeUInt32(20, denies_);
        }
        if (((bitField0_ & 0x02000000) == 0x02000000)) {
          output.writeUInt32(21, goldPerMin_);
        }
        if (((bitField0_ & 0x04000000) == 0x04000000)) {
          output.writeUInt32(22, xpPerMin_);
        }
        if (((bitField0_ & 0x08000000) == 0x08000000)) {
          output.writeUInt32(23, goldSpent_);
        }
        if (((bitField0_ & 0x10000000) == 0x10000000)) {
          output.writeUInt32(24, heroDamage_);
        }
        if (((bitField0_ & 0x20000000) == 0x20000000)) {
          output.writeUInt32(25, towerDamage_);
        }
        if (((bitField0_ & 0x40000000) == 0x40000000)) {
          output.writeUInt32(26, heroHealing_);
        }
        if (((bitField0_ & 0x80000000) == 0x80000000)) {
          output.writeUInt32(27, level_);
        }
        if (((bitField1_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(28, timeLastSeen_);
        }
        if (((bitField1_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(29, getPlayerNameBytes());
        }
        if (((bitField1_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(30, supportAbilityValue_);
        }
        if (((bitField1_ & 0x00000008) == 0x00000008)) {
          output.writeBool(32, feedingDetected_);
        }
        if (((bitField1_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(34, searchRank_);
        }
        if (((bitField1_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(35, searchRankUncertainty_);
        }
        if (((bitField1_ & 0x00000040) == 0x00000040)) {
          output.writeInt32(36, rankUncertaintyChange_);
        }
        if (((bitField1_ & 0x00000080) == 0x00000080)) {
          output.writeUInt32(37, heroPlayCount_);
        }
        if (((bitField1_ & 0x00000100) == 0x00000100)) {
          output.writeFixed64(38, partyId_);
        }
        if (((bitField1_ & 0x00001000) == 0x00001000)) {
          output.writeFloat(39, scaledKills_);
        }
        if (((bitField1_ & 0x00002000) == 0x00002000)) {
          output.writeFloat(40, scaledDeaths_);
        }
        if (((bitField1_ & 0x00004000) == 0x00004000)) {
          output.writeFloat(41, scaledAssists_);
        }
        if (((bitField1_ & 0x00008000) == 0x00008000)) {
          output.writeUInt32(42, claimedFarmGold_);
        }
        if (((bitField1_ & 0x00010000) == 0x00010000)) {
          output.writeUInt32(43, supportGold_);
        }
        if (((bitField1_ & 0x00020000) == 0x00020000)) {
          output.writeUInt32(44, claimedDenies_);
        }
        if (((bitField1_ & 0x00040000) == 0x00040000)) {
          output.writeUInt32(45, claimedMisses_);
        }
        if (((bitField1_ & 0x00080000) == 0x00080000)) {
          output.writeUInt32(46, misses_);
        }
        for (int i = 0; i < abilityUpgrades_.size(); i++) {
          output.writeMessage(47, abilityUpgrades_.get(i));
        }
        for (int i = 0; i < additionalUnitsInventory_.size(); i++) {
          output.writeMessage(48, additionalUnitsInventory_.get(i));
        }
        if (((bitField1_ & 0x00400000) == 0x00400000)) {
          output.writeMessage(50, customGameData_);
        }
        if (((bitField1_ & 0x00800000) == 0x00800000)) {
          output.writeBool(51, activePlusSubscription_);
        }
        if (((bitField1_ & 0x01000000) == 0x01000000)) {
          output.writeUInt32(52, netWorth_);
        }
        if (((bitField1_ & 0x00000200) == 0x00000200)) {
          output.writeUInt32(54, scaledHeroDamage_);
        }
        if (((bitField1_ & 0x00000400) == 0x00000400)) {
          output.writeUInt32(55, scaledTowerDamage_);
        }
        if (((bitField1_ & 0x00000800) == 0x00000800)) {
          output.writeUInt32(56, scaledHeroHealing_);
        }
        for (int i = 0; i < permanentBuffs_.size(); i++) {
          output.writeMessage(57, permanentBuffs_.get(i));
        }
        if (((bitField1_ & 0x02000000) == 0x02000000)) {
          output.writeUInt32(58, botDifficulty_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeInt32(59, item6_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeInt32(60, item7_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeInt32(61, item8_);
        }
        if (((bitField1_ & 0x04000000) == 0x04000000)) {
          output.writeUInt32(63, heroPickOrder_);
        }
        if (((bitField1_ & 0x08000000) == 0x08000000)) {
          output.writeBool(64, heroWasRandomed_);
        }
        for (int i = 0; i < heroDamageReceived_.size(); i++) {
          output.writeMessage(67, heroDamageReceived_.get(i));
        }
        if (((bitField1_ & 0x10000000) == 0x10000000)) {
          output.writeBool(69, heroWasDotaPlusSuggestion_);
        }
        if (((bitField1_ & 0x20000000) == 0x20000000)) {
          output.writeUInt32(70, secondsDead_);
        }
        if (((bitField1_ & 0x40000000) == 0x40000000)) {
          output.writeUInt32(71, goldLostToDeath_);
        }
        if (((bitField1_ & 0x00100000) == 0x00100000)) {
          output.writeBytes(72, getProNameBytes());
        }
        if (((bitField1_ & 0x00200000) == 0x00200000)) {
          output.writeBytes(73, getRealNameBytes());
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          output.writeUInt32(74, mmrType_);
        }
        if (((bitField1_ & 0x80000000) == 0x80000000)) {
          output.writeUInt32(75, laneSelectionFlags_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          output.writeInt32(76, item9_);
        }
        if (((bitField2_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(77, bountyRunes_);
        }
        if (((bitField2_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(78, outpostsCaptured_);
        }
        for (int i = 0; i < heroDamageDealt_.size(); i++) {
          output.writeMessage(79, heroDamageDealt_.get(i));
        }
        if (((bitField2_ & 0x00000004) == 0x00000004)) {
          output.writeEnum(80, teamNumber_.getNumber());
        }
        if (((bitField2_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(81, teamSlot_);
        }
        if (((bitField2_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(82, selectedFacet_);
        }
        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
            .computeUInt32Size(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, playerSlot_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, heroId_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, item0_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, item1_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(6, item2_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(7, item3_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(8, item4_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(9, item5_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(10, expectedTeamContribution_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(11, scaledMetric_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(12, previousRank_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeSInt32Size(13, rankChange_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(14, kills_);
        }
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(15, deaths_);
        }
        if (((bitField0_ & 0x00100000) == 0x00100000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(16, assists_);
        }
        if (((bitField0_ & 0x00200000) == 0x00200000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(17, leaverStatus_);
        }
        if (((bitField0_ & 0x00400000) == 0x00400000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(18, gold_);
        }
        if (((bitField0_ & 0x00800000) == 0x00800000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(19, lastHits_);
        }
        if (((bitField0_ & 0x01000000) == 0x01000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(20, denies_);
        }
        if (((bitField0_ & 0x02000000) == 0x02000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(21, goldPerMin_);
        }
        if (((bitField0_ & 0x04000000) == 0x04000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(22, xpPerMin_);
        }
        if (((bitField0_ & 0x08000000) == 0x08000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(23, goldSpent_);
        }
        if (((bitField0_ & 0x10000000) == 0x10000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(24, heroDamage_);
        }
        if (((bitField0_ & 0x20000000) == 0x20000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(25, towerDamage_);
        }
        if (((bitField0_ & 0x40000000) == 0x40000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(26, heroHealing_);
        }
        if (((bitField0_ & 0x80000000) == 0x80000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(27, level_);
        }
        if (((bitField1_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(28, timeLastSeen_);
        }
        if (((bitField1_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(29, getPlayerNameBytes());
        }
        if (((bitField1_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(30, supportAbilityValue_);
        }
        if (((bitField1_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(32, feedingDetected_);
        }
        if (((bitField1_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(34, searchRank_);
        }
        if (((bitField1_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(35, searchRankUncertainty_);
        }
        if (((bitField1_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(36, rankUncertaintyChange_);
        }
        if (((bitField1_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(37, heroPlayCount_);
        }
        if (((bitField1_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFixed64Size(38, partyId_);
        }
        if (((bitField1_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(39, scaledKills_);
        }
        if (((bitField1_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(40, scaledDeaths_);
        }
        if (((bitField1_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(41, scaledAssists_);
        }
        if (((bitField1_ & 0x00008000) == 0x00008000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(42, claimedFarmGold_);
        }
        if (((bitField1_ & 0x00010000) == 0x00010000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(43, supportGold_);
        }
        if (((bitField1_ & 0x00020000) == 0x00020000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(44, claimedDenies_);
        }
        if (((bitField1_ & 0x00040000) == 0x00040000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(45, claimedMisses_);
        }
        if (((bitField1_ & 0x00080000) == 0x00080000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(46, misses_);
        }
        for (int i = 0; i < abilityUpgrades_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(47, abilityUpgrades_.get(i));
        }
        for (int i = 0; i < additionalUnitsInventory_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(48, additionalUnitsInventory_.get(i));
        }
        if (((bitField1_ & 0x00400000) == 0x00400000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(50, customGameData_);
        }
        if (((bitField1_ & 0x00800000) == 0x00800000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(51, activePlusSubscription_);
        }
        if (((bitField1_ & 0x01000000) == 0x01000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(52, netWorth_);
        }
        if (((bitField1_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(54, scaledHeroDamage_);
        }
        if (((bitField1_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(55, scaledTowerDamage_);
        }
        if (((bitField1_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(56, scaledHeroHealing_);
        }
        for (int i = 0; i < permanentBuffs_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(57, permanentBuffs_.get(i));
        }
        if (((bitField1_ & 0x02000000) == 0x02000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(58, botDifficulty_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(59, item6_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(60, item7_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(61, item8_);
        }
        if (((bitField1_ & 0x04000000) == 0x04000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(63, heroPickOrder_);
        }
        if (((bitField1_ & 0x08000000) == 0x08000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(64, heroWasRandomed_);
        }
        for (int i = 0; i < heroDamageReceived_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(67, heroDamageReceived_.get(i));
        }
        if (((bitField1_ & 0x10000000) == 0x10000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(69, heroWasDotaPlusSuggestion_);
        }
        if (((bitField1_ & 0x20000000) == 0x20000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(70, secondsDead_);
        }
        if (((bitField1_ & 0x40000000) == 0x40000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(71, goldLostToDeath_);
        }
        if (((bitField1_ & 0x00100000) == 0x00100000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(72, getProNameBytes());
        }
        if (((bitField1_ & 0x00200000) == 0x00200000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(73, getRealNameBytes());
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(74, mmrType_);
        }
        if (((bitField1_ & 0x80000000) == 0x80000000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(75, laneSelectionFlags_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(76, item9_);
        }
        if (((bitField2_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(77, bountyRunes_);
        }
        if (((bitField2_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(78, outpostsCaptured_);
        }
        for (int i = 0; i < heroDamageDealt_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(79, heroDamageDealt_.get(i));
        }
        if (((bitField2_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(80, teamNumber_.getNumber());
        }
        if (((bitField2_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(81, teamSlot_);
        }
        if (((bitField2_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(82, selectedFacet_);
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player 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 CMsgDOTAMatch.Player}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.Player)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getAbilityUpgradesFieldBuilder();
            getAdditionalUnitsInventoryFieldBuilder();
            getPermanentBuffsFieldBuilder();
            getCustomGameDataFieldBuilder();
            getHeroDamageReceivedFieldBuilder();
            getHeroDamageDealtFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          accountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          playerSlot_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          heroId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          item0_ = -1;
          bitField0_ = (bitField0_ & ~0x00000008);
          item1_ = -1;
          bitField0_ = (bitField0_ & ~0x00000010);
          item2_ = -1;
          bitField0_ = (bitField0_ & ~0x00000020);
          item3_ = -1;
          bitField0_ = (bitField0_ & ~0x00000040);
          item4_ = -1;
          bitField0_ = (bitField0_ & ~0x00000080);
          item5_ = -1;
          bitField0_ = (bitField0_ & ~0x00000100);
          item6_ = -1;
          bitField0_ = (bitField0_ & ~0x00000200);
          item7_ = -1;
          bitField0_ = (bitField0_ & ~0x00000400);
          item8_ = -1;
          bitField0_ = (bitField0_ & ~0x00000800);
          item9_ = -1;
          bitField0_ = (bitField0_ & ~0x00001000);
          expectedTeamContribution_ = 0F;
          bitField0_ = (bitField0_ & ~0x00002000);
          scaledMetric_ = 0F;
          bitField0_ = (bitField0_ & ~0x00004000);
          previousRank_ = 0;
          bitField0_ = (bitField0_ & ~0x00008000);
          rankChange_ = 0;
          bitField0_ = (bitField0_ & ~0x00010000);
          mmrType_ = 0;
          bitField0_ = (bitField0_ & ~0x00020000);
          kills_ = 0;
          bitField0_ = (bitField0_ & ~0x00040000);
          deaths_ = 0;
          bitField0_ = (bitField0_ & ~0x00080000);
          assists_ = 0;
          bitField0_ = (bitField0_ & ~0x00100000);
          leaverStatus_ = 0;
          bitField0_ = (bitField0_ & ~0x00200000);
          gold_ = 0;
          bitField0_ = (bitField0_ & ~0x00400000);
          lastHits_ = 0;
          bitField0_ = (bitField0_ & ~0x00800000);
          denies_ = 0;
          bitField0_ = (bitField0_ & ~0x01000000);
          goldPerMin_ = 0;
          bitField0_ = (bitField0_ & ~0x02000000);
          xpPerMin_ = 0;
          bitField0_ = (bitField0_ & ~0x04000000);
          goldSpent_ = 0;
          bitField0_ = (bitField0_ & ~0x08000000);
          heroDamage_ = 0;
          bitField0_ = (bitField0_ & ~0x10000000);
          towerDamage_ = 0;
          bitField0_ = (bitField0_ & ~0x20000000);
          heroHealing_ = 0;
          bitField0_ = (bitField0_ & ~0x40000000);
          level_ = 0;
          bitField0_ = (bitField0_ & ~0x80000000);
          timeLastSeen_ = 0;
          bitField1_ = (bitField1_ & ~0x00000001);
          playerName_ = "";
          bitField1_ = (bitField1_ & ~0x00000002);
          supportAbilityValue_ = 0;
          bitField1_ = (bitField1_ & ~0x00000004);
          feedingDetected_ = false;
          bitField1_ = (bitField1_ & ~0x00000008);
          searchRank_ = 0;
          bitField1_ = (bitField1_ & ~0x00000010);
          searchRankUncertainty_ = 0;
          bitField1_ = (bitField1_ & ~0x00000020);
          rankUncertaintyChange_ = 0;
          bitField1_ = (bitField1_ & ~0x00000040);
          heroPlayCount_ = 0;
          bitField1_ = (bitField1_ & ~0x00000080);
          partyId_ = 0L;
          bitField1_ = (bitField1_ & ~0x00000100);
          scaledHeroDamage_ = 0;
          bitField1_ = (bitField1_ & ~0x00000200);
          scaledTowerDamage_ = 0;
          bitField1_ = (bitField1_ & ~0x00000400);
          scaledHeroHealing_ = 0;
          bitField1_ = (bitField1_ & ~0x00000800);
          scaledKills_ = 0F;
          bitField1_ = (bitField1_ & ~0x00001000);
          scaledDeaths_ = 0F;
          bitField1_ = (bitField1_ & ~0x00002000);
          scaledAssists_ = 0F;
          bitField1_ = (bitField1_ & ~0x00004000);
          claimedFarmGold_ = 0;
          bitField1_ = (bitField1_ & ~0x00008000);
          supportGold_ = 0;
          bitField1_ = (bitField1_ & ~0x00010000);
          claimedDenies_ = 0;
          bitField1_ = (bitField1_ & ~0x00020000);
          claimedMisses_ = 0;
          bitField1_ = (bitField1_ & ~0x00040000);
          misses_ = 0;
          bitField1_ = (bitField1_ & ~0x00080000);
          if (abilityUpgradesBuilder_ == null) {
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00100000);
          } else {
            abilityUpgradesBuilder_.clear();
          }
          if (additionalUnitsInventoryBuilder_ == null) {
            additionalUnitsInventory_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00200000);
          } else {
            additionalUnitsInventoryBuilder_.clear();
          }
          if (permanentBuffsBuilder_ == null) {
            permanentBuffs_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00400000);
          } else {
            permanentBuffsBuilder_.clear();
          }
          proName_ = "";
          bitField1_ = (bitField1_ & ~0x00800000);
          realName_ = "";
          bitField1_ = (bitField1_ & ~0x01000000);
          if (customGameDataBuilder_ == null) {
            customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance();
          } else {
            customGameDataBuilder_.clear();
          }
          bitField1_ = (bitField1_ & ~0x02000000);
          activePlusSubscription_ = false;
          bitField1_ = (bitField1_ & ~0x04000000);
          netWorth_ = 0;
          bitField1_ = (bitField1_ & ~0x08000000);
          botDifficulty_ = 0;
          bitField1_ = (bitField1_ & ~0x10000000);
          heroPickOrder_ = 0;
          bitField1_ = (bitField1_ & ~0x20000000);
          heroWasRandomed_ = false;
          bitField1_ = (bitField1_ & ~0x40000000);
          heroWasDotaPlusSuggestion_ = false;
          bitField1_ = (bitField1_ & ~0x80000000);
          if (heroDamageReceivedBuilder_ == null) {
            heroDamageReceived_ = java.util.Collections.emptyList();
            bitField2_ = (bitField2_ & ~0x00000001);
          } else {
            heroDamageReceivedBuilder_.clear();
          }
          if (heroDamageDealtBuilder_ == null) {
            heroDamageDealt_ = java.util.Collections.emptyList();
            bitField2_ = (bitField2_ & ~0x00000002);
          } else {
            heroDamageDealtBuilder_.clear();
          }
          secondsDead_ = 0;
          bitField2_ = (bitField2_ & ~0x00000004);
          goldLostToDeath_ = 0;
          bitField2_ = (bitField2_ & ~0x00000008);
          laneSelectionFlags_ = 0;
          bitField2_ = (bitField2_ & ~0x00000010);
          bountyRunes_ = 0;
          bitField2_ = (bitField2_ & ~0x00000020);
          outpostsCaptured_ = 0;
          bitField2_ = (bitField2_ & ~0x00000040);
          teamNumber_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM.DOTA_GC_TEAM_GOOD_GUYS;
          bitField2_ = (bitField2_ & ~0x00000080);
          teamSlot_ = 0;
          bitField2_ = (bitField2_ & ~0x00000100);
          selectedFacet_ = 0;
          bitField2_ = (bitField2_ & ~0x00000200);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Player_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player(this);
          int from_bitField0_ = bitField0_;
          int from_bitField1_ = bitField1_;
          int from_bitField2_ = bitField2_;
          int to_bitField0_ = 0;
          int to_bitField1_ = 0;
          int to_bitField2_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.accountId_ = accountId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.playerSlot_ = playerSlot_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.heroId_ = heroId_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.item0_ = item0_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.item1_ = item1_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.item2_ = item2_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.item3_ = item3_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.item4_ = item4_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.item5_ = item5_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          result.item6_ = item6_;
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          result.item7_ = item7_;
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000800;
          }
          result.item8_ = item8_;
          if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
            to_bitField0_ |= 0x00001000;
          }
          result.item9_ = item9_;
          if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
            to_bitField0_ |= 0x00002000;
          }
          result.expectedTeamContribution_ = expectedTeamContribution_;
          if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
            to_bitField0_ |= 0x00004000;
          }
          result.scaledMetric_ = scaledMetric_;
          if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
            to_bitField0_ |= 0x00008000;
          }
          result.previousRank_ = previousRank_;
          if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
            to_bitField0_ |= 0x00010000;
          }
          result.rankChange_ = rankChange_;
          if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
            to_bitField0_ |= 0x00020000;
          }
          result.mmrType_ = mmrType_;
          if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
            to_bitField0_ |= 0x00040000;
          }
          result.kills_ = kills_;
          if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
            to_bitField0_ |= 0x00080000;
          }
          result.deaths_ = deaths_;
          if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
            to_bitField0_ |= 0x00100000;
          }
          result.assists_ = assists_;
          if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
            to_bitField0_ |= 0x00200000;
          }
          result.leaverStatus_ = leaverStatus_;
          if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
            to_bitField0_ |= 0x00400000;
          }
          result.gold_ = gold_;
          if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
            to_bitField0_ |= 0x00800000;
          }
          result.lastHits_ = lastHits_;
          if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
            to_bitField0_ |= 0x01000000;
          }
          result.denies_ = denies_;
          if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
            to_bitField0_ |= 0x02000000;
          }
          result.goldPerMin_ = goldPerMin_;
          if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
            to_bitField0_ |= 0x04000000;
          }
          result.xpPerMin_ = xpPerMin_;
          if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
            to_bitField0_ |= 0x08000000;
          }
          result.goldSpent_ = goldSpent_;
          if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
            to_bitField0_ |= 0x10000000;
          }
          result.heroDamage_ = heroDamage_;
          if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
            to_bitField0_ |= 0x20000000;
          }
          result.towerDamage_ = towerDamage_;
          if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
            to_bitField0_ |= 0x40000000;
          }
          result.heroHealing_ = heroHealing_;
          if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
            to_bitField0_ |= 0x80000000;
          }
          result.level_ = level_;
          if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
            to_bitField1_ |= 0x00000001;
          }
          result.timeLastSeen_ = timeLastSeen_;
          if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
            to_bitField1_ |= 0x00000002;
          }
          result.playerName_ = playerName_;
          if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
            to_bitField1_ |= 0x00000004;
          }
          result.supportAbilityValue_ = supportAbilityValue_;
          if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
            to_bitField1_ |= 0x00000008;
          }
          result.feedingDetected_ = feedingDetected_;
          if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
            to_bitField1_ |= 0x00000010;
          }
          result.searchRank_ = searchRank_;
          if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
            to_bitField1_ |= 0x00000020;
          }
          result.searchRankUncertainty_ = searchRankUncertainty_;
          if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
            to_bitField1_ |= 0x00000040;
          }
          result.rankUncertaintyChange_ = rankUncertaintyChange_;
          if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
            to_bitField1_ |= 0x00000080;
          }
          result.heroPlayCount_ = heroPlayCount_;
          if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
            to_bitField1_ |= 0x00000100;
          }
          result.partyId_ = partyId_;
          if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
            to_bitField1_ |= 0x00000200;
          }
          result.scaledHeroDamage_ = scaledHeroDamage_;
          if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
            to_bitField1_ |= 0x00000400;
          }
          result.scaledTowerDamage_ = scaledTowerDamage_;
          if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
            to_bitField1_ |= 0x00000800;
          }
          result.scaledHeroHealing_ = scaledHeroHealing_;
          if (((from_bitField1_ & 0x00001000) == 0x00001000)) {
            to_bitField1_ |= 0x00001000;
          }
          result.scaledKills_ = scaledKills_;
          if (((from_bitField1_ & 0x00002000) == 0x00002000)) {
            to_bitField1_ |= 0x00002000;
          }
          result.scaledDeaths_ = scaledDeaths_;
          if (((from_bitField1_ & 0x00004000) == 0x00004000)) {
            to_bitField1_ |= 0x00004000;
          }
          result.scaledAssists_ = scaledAssists_;
          if (((from_bitField1_ & 0x00008000) == 0x00008000)) {
            to_bitField1_ |= 0x00008000;
          }
          result.claimedFarmGold_ = claimedFarmGold_;
          if (((from_bitField1_ & 0x00010000) == 0x00010000)) {
            to_bitField1_ |= 0x00010000;
          }
          result.supportGold_ = supportGold_;
          if (((from_bitField1_ & 0x00020000) == 0x00020000)) {
            to_bitField1_ |= 0x00020000;
          }
          result.claimedDenies_ = claimedDenies_;
          if (((from_bitField1_ & 0x00040000) == 0x00040000)) {
            to_bitField1_ |= 0x00040000;
          }
          result.claimedMisses_ = claimedMisses_;
          if (((from_bitField1_ & 0x00080000) == 0x00080000)) {
            to_bitField1_ |= 0x00080000;
          }
          result.misses_ = misses_;
          if (abilityUpgradesBuilder_ == null) {
            if (((bitField1_ & 0x00100000) == 0x00100000)) {
              abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
              bitField1_ = (bitField1_ & ~0x00100000);
            }
            result.abilityUpgrades_ = abilityUpgrades_;
          } else {
            result.abilityUpgrades_ = abilityUpgradesBuilder_.build();
          }
          if (additionalUnitsInventoryBuilder_ == null) {
            if (((bitField1_ & 0x00200000) == 0x00200000)) {
              additionalUnitsInventory_ = java.util.Collections.unmodifiableList(additionalUnitsInventory_);
              bitField1_ = (bitField1_ & ~0x00200000);
            }
            result.additionalUnitsInventory_ = additionalUnitsInventory_;
          } else {
            result.additionalUnitsInventory_ = additionalUnitsInventoryBuilder_.build();
          }
          if (permanentBuffsBuilder_ == null) {
            if (((bitField1_ & 0x00400000) == 0x00400000)) {
              permanentBuffs_ = java.util.Collections.unmodifiableList(permanentBuffs_);
              bitField1_ = (bitField1_ & ~0x00400000);
            }
            result.permanentBuffs_ = permanentBuffs_;
          } else {
            result.permanentBuffs_ = permanentBuffsBuilder_.build();
          }
          if (((from_bitField1_ & 0x00800000) == 0x00800000)) {
            to_bitField1_ |= 0x00100000;
          }
          result.proName_ = proName_;
          if (((from_bitField1_ & 0x01000000) == 0x01000000)) {
            to_bitField1_ |= 0x00200000;
          }
          result.realName_ = realName_;
          if (((from_bitField1_ & 0x02000000) == 0x02000000)) {
            to_bitField1_ |= 0x00400000;
          }
          if (customGameDataBuilder_ == null) {
            result.customGameData_ = customGameData_;
          } else {
            result.customGameData_ = customGameDataBuilder_.build();
          }
          if (((from_bitField1_ & 0x04000000) == 0x04000000)) {
            to_bitField1_ |= 0x00800000;
          }
          result.activePlusSubscription_ = activePlusSubscription_;
          if (((from_bitField1_ & 0x08000000) == 0x08000000)) {
            to_bitField1_ |= 0x01000000;
          }
          result.netWorth_ = netWorth_;
          if (((from_bitField1_ & 0x10000000) == 0x10000000)) {
            to_bitField1_ |= 0x02000000;
          }
          result.botDifficulty_ = botDifficulty_;
          if (((from_bitField1_ & 0x20000000) == 0x20000000)) {
            to_bitField1_ |= 0x04000000;
          }
          result.heroPickOrder_ = heroPickOrder_;
          if (((from_bitField1_ & 0x40000000) == 0x40000000)) {
            to_bitField1_ |= 0x08000000;
          }
          result.heroWasRandomed_ = heroWasRandomed_;
          if (((from_bitField1_ & 0x80000000) == 0x80000000)) {
            to_bitField1_ |= 0x10000000;
          }
          result.heroWasDotaPlusSuggestion_ = heroWasDotaPlusSuggestion_;
          if (heroDamageReceivedBuilder_ == null) {
            if (((bitField2_ & 0x00000001) == 0x00000001)) {
              heroDamageReceived_ = java.util.Collections.unmodifiableList(heroDamageReceived_);
              bitField2_ = (bitField2_ & ~0x00000001);
            }
            result.heroDamageReceived_ = heroDamageReceived_;
          } else {
            result.heroDamageReceived_ = heroDamageReceivedBuilder_.build();
          }
          if (heroDamageDealtBuilder_ == null) {
            if (((bitField2_ & 0x00000002) == 0x00000002)) {
              heroDamageDealt_ = java.util.Collections.unmodifiableList(heroDamageDealt_);
              bitField2_ = (bitField2_ & ~0x00000002);
            }
            result.heroDamageDealt_ = heroDamageDealt_;
          } else {
            result.heroDamageDealt_ = heroDamageDealtBuilder_.build();
          }
          if (((from_bitField2_ & 0x00000004) == 0x00000004)) {
            to_bitField1_ |= 0x20000000;
          }
          result.secondsDead_ = secondsDead_;
          if (((from_bitField2_ & 0x00000008) == 0x00000008)) {
            to_bitField1_ |= 0x40000000;
          }
          result.goldLostToDeath_ = goldLostToDeath_;
          if (((from_bitField2_ & 0x00000010) == 0x00000010)) {
            to_bitField1_ |= 0x80000000;
          }
          result.laneSelectionFlags_ = laneSelectionFlags_;
          if (((from_bitField2_ & 0x00000020) == 0x00000020)) {
            to_bitField2_ |= 0x00000001;
          }
          result.bountyRunes_ = bountyRunes_;
          if (((from_bitField2_ & 0x00000040) == 0x00000040)) {
            to_bitField2_ |= 0x00000002;
          }
          result.outpostsCaptured_ = outpostsCaptured_;
          if (((from_bitField2_ & 0x00000080) == 0x00000080)) {
            to_bitField2_ |= 0x00000004;
          }
          result.teamNumber_ = teamNumber_;
          if (((from_bitField2_ & 0x00000100) == 0x00000100)) {
            to_bitField2_ |= 0x00000008;
          }
          result.teamSlot_ = teamSlot_;
          if (((from_bitField2_ & 0x00000200) == 0x00000200)) {
            to_bitField2_ |= 0x00000010;
          }
          result.selectedFacet_ = selectedFacet_;
          result.bitField0_ = to_bitField0_;
          result.bitField1_ = to_bitField1_;
          result.bitField2_ = to_bitField2_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.getDefaultInstance()) return this;
          if (other.hasAccountId()) {
            setAccountId(other.getAccountId());
          }
          if (other.hasPlayerSlot()) {
            setPlayerSlot(other.getPlayerSlot());
          }
          if (other.hasHeroId()) {
            setHeroId(other.getHeroId());
          }
          if (other.hasItem0()) {
            setItem0(other.getItem0());
          }
          if (other.hasItem1()) {
            setItem1(other.getItem1());
          }
          if (other.hasItem2()) {
            setItem2(other.getItem2());
          }
          if (other.hasItem3()) {
            setItem3(other.getItem3());
          }
          if (other.hasItem4()) {
            setItem4(other.getItem4());
          }
          if (other.hasItem5()) {
            setItem5(other.getItem5());
          }
          if (other.hasItem6()) {
            setItem6(other.getItem6());
          }
          if (other.hasItem7()) {
            setItem7(other.getItem7());
          }
          if (other.hasItem8()) {
            setItem8(other.getItem8());
          }
          if (other.hasItem9()) {
            setItem9(other.getItem9());
          }
          if (other.hasExpectedTeamContribution()) {
            setExpectedTeamContribution(other.getExpectedTeamContribution());
          }
          if (other.hasScaledMetric()) {
            setScaledMetric(other.getScaledMetric());
          }
          if (other.hasPreviousRank()) {
            setPreviousRank(other.getPreviousRank());
          }
          if (other.hasRankChange()) {
            setRankChange(other.getRankChange());
          }
          if (other.hasMmrType()) {
            setMmrType(other.getMmrType());
          }
          if (other.hasKills()) {
            setKills(other.getKills());
          }
          if (other.hasDeaths()) {
            setDeaths(other.getDeaths());
          }
          if (other.hasAssists()) {
            setAssists(other.getAssists());
          }
          if (other.hasLeaverStatus()) {
            setLeaverStatus(other.getLeaverStatus());
          }
          if (other.hasGold()) {
            setGold(other.getGold());
          }
          if (other.hasLastHits()) {
            setLastHits(other.getLastHits());
          }
          if (other.hasDenies()) {
            setDenies(other.getDenies());
          }
          if (other.hasGoldPerMin()) {
            setGoldPerMin(other.getGoldPerMin());
          }
          if (other.hasXpPerMin()) {
            setXpPerMin(other.getXpPerMin());
          }
          if (other.hasGoldSpent()) {
            setGoldSpent(other.getGoldSpent());
          }
          if (other.hasHeroDamage()) {
            setHeroDamage(other.getHeroDamage());
          }
          if (other.hasTowerDamage()) {
            setTowerDamage(other.getTowerDamage());
          }
          if (other.hasHeroHealing()) {
            setHeroHealing(other.getHeroHealing());
          }
          if (other.hasLevel()) {
            setLevel(other.getLevel());
          }
          if (other.hasTimeLastSeen()) {
            setTimeLastSeen(other.getTimeLastSeen());
          }
          if (other.hasPlayerName()) {
            bitField1_ |= 0x00000002;
            playerName_ = other.playerName_;
            onChanged();
          }
          if (other.hasSupportAbilityValue()) {
            setSupportAbilityValue(other.getSupportAbilityValue());
          }
          if (other.hasFeedingDetected()) {
            setFeedingDetected(other.getFeedingDetected());
          }
          if (other.hasSearchRank()) {
            setSearchRank(other.getSearchRank());
          }
          if (other.hasSearchRankUncertainty()) {
            setSearchRankUncertainty(other.getSearchRankUncertainty());
          }
          if (other.hasRankUncertaintyChange()) {
            setRankUncertaintyChange(other.getRankUncertaintyChange());
          }
          if (other.hasHeroPlayCount()) {
            setHeroPlayCount(other.getHeroPlayCount());
          }
          if (other.hasPartyId()) {
            setPartyId(other.getPartyId());
          }
          if (other.hasScaledHeroDamage()) {
            setScaledHeroDamage(other.getScaledHeroDamage());
          }
          if (other.hasScaledTowerDamage()) {
            setScaledTowerDamage(other.getScaledTowerDamage());
          }
          if (other.hasScaledHeroHealing()) {
            setScaledHeroHealing(other.getScaledHeroHealing());
          }
          if (other.hasScaledKills()) {
            setScaledKills(other.getScaledKills());
          }
          if (other.hasScaledDeaths()) {
            setScaledDeaths(other.getScaledDeaths());
          }
          if (other.hasScaledAssists()) {
            setScaledAssists(other.getScaledAssists());
          }
          if (other.hasClaimedFarmGold()) {
            setClaimedFarmGold(other.getClaimedFarmGold());
          }
          if (other.hasSupportGold()) {
            setSupportGold(other.getSupportGold());
          }
          if (other.hasClaimedDenies()) {
            setClaimedDenies(other.getClaimedDenies());
          }
          if (other.hasClaimedMisses()) {
            setClaimedMisses(other.getClaimedMisses());
          }
          if (other.hasMisses()) {
            setMisses(other.getMisses());
          }
          if (abilityUpgradesBuilder_ == null) {
            if (!other.abilityUpgrades_.isEmpty()) {
              if (abilityUpgrades_.isEmpty()) {
                abilityUpgrades_ = other.abilityUpgrades_;
                bitField1_ = (bitField1_ & ~0x00100000);
              } else {
                ensureAbilityUpgradesIsMutable();
                abilityUpgrades_.addAll(other.abilityUpgrades_);
              }
              onChanged();
            }
          } else {
            if (!other.abilityUpgrades_.isEmpty()) {
              if (abilityUpgradesBuilder_.isEmpty()) {
                abilityUpgradesBuilder_.dispose();
                abilityUpgradesBuilder_ = null;
                abilityUpgrades_ = other.abilityUpgrades_;
                bitField1_ = (bitField1_ & ~0x00100000);
                abilityUpgradesBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getAbilityUpgradesFieldBuilder() : null;
              } else {
                abilityUpgradesBuilder_.addAllMessages(other.abilityUpgrades_);
              }
            }
          }
          if (additionalUnitsInventoryBuilder_ == null) {
            if (!other.additionalUnitsInventory_.isEmpty()) {
              if (additionalUnitsInventory_.isEmpty()) {
                additionalUnitsInventory_ = other.additionalUnitsInventory_;
                bitField1_ = (bitField1_ & ~0x00200000);
              } else {
                ensureAdditionalUnitsInventoryIsMutable();
                additionalUnitsInventory_.addAll(other.additionalUnitsInventory_);
              }
              onChanged();
            }
          } else {
            if (!other.additionalUnitsInventory_.isEmpty()) {
              if (additionalUnitsInventoryBuilder_.isEmpty()) {
                additionalUnitsInventoryBuilder_.dispose();
                additionalUnitsInventoryBuilder_ = null;
                additionalUnitsInventory_ = other.additionalUnitsInventory_;
                bitField1_ = (bitField1_ & ~0x00200000);
                additionalUnitsInventoryBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getAdditionalUnitsInventoryFieldBuilder() : null;
              } else {
                additionalUnitsInventoryBuilder_.addAllMessages(other.additionalUnitsInventory_);
              }
            }
          }
          if (permanentBuffsBuilder_ == null) {
            if (!other.permanentBuffs_.isEmpty()) {
              if (permanentBuffs_.isEmpty()) {
                permanentBuffs_ = other.permanentBuffs_;
                bitField1_ = (bitField1_ & ~0x00400000);
              } else {
                ensurePermanentBuffsIsMutable();
                permanentBuffs_.addAll(other.permanentBuffs_);
              }
              onChanged();
            }
          } else {
            if (!other.permanentBuffs_.isEmpty()) {
              if (permanentBuffsBuilder_.isEmpty()) {
                permanentBuffsBuilder_.dispose();
                permanentBuffsBuilder_ = null;
                permanentBuffs_ = other.permanentBuffs_;
                bitField1_ = (bitField1_ & ~0x00400000);
                permanentBuffsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPermanentBuffsFieldBuilder() : null;
              } else {
                permanentBuffsBuilder_.addAllMessages(other.permanentBuffs_);
              }
            }
          }
          if (other.hasProName()) {
            bitField1_ |= 0x00800000;
            proName_ = other.proName_;
            onChanged();
          }
          if (other.hasRealName()) {
            bitField1_ |= 0x01000000;
            realName_ = other.realName_;
            onChanged();
          }
          if (other.hasCustomGameData()) {
            mergeCustomGameData(other.getCustomGameData());
          }
          if (other.hasActivePlusSubscription()) {
            setActivePlusSubscription(other.getActivePlusSubscription());
          }
          if (other.hasNetWorth()) {
            setNetWorth(other.getNetWorth());
          }
          if (other.hasBotDifficulty()) {
            setBotDifficulty(other.getBotDifficulty());
          }
          if (other.hasHeroPickOrder()) {
            setHeroPickOrder(other.getHeroPickOrder());
          }
          if (other.hasHeroWasRandomed()) {
            setHeroWasRandomed(other.getHeroWasRandomed());
          }
          if (other.hasHeroWasDotaPlusSuggestion()) {
            setHeroWasDotaPlusSuggestion(other.getHeroWasDotaPlusSuggestion());
          }
          if (heroDamageReceivedBuilder_ == null) {
            if (!other.heroDamageReceived_.isEmpty()) {
              if (heroDamageReceived_.isEmpty()) {
                heroDamageReceived_ = other.heroDamageReceived_;
                bitField2_ = (bitField2_ & ~0x00000001);
              } else {
                ensureHeroDamageReceivedIsMutable();
                heroDamageReceived_.addAll(other.heroDamageReceived_);
              }
              onChanged();
            }
          } else {
            if (!other.heroDamageReceived_.isEmpty()) {
              if (heroDamageReceivedBuilder_.isEmpty()) {
                heroDamageReceivedBuilder_.dispose();
                heroDamageReceivedBuilder_ = null;
                heroDamageReceived_ = other.heroDamageReceived_;
                bitField2_ = (bitField2_ & ~0x00000001);
                heroDamageReceivedBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getHeroDamageReceivedFieldBuilder() : null;
              } else {
                heroDamageReceivedBuilder_.addAllMessages(other.heroDamageReceived_);
              }
            }
          }
          if (heroDamageDealtBuilder_ == null) {
            if (!other.heroDamageDealt_.isEmpty()) {
              if (heroDamageDealt_.isEmpty()) {
                heroDamageDealt_ = other.heroDamageDealt_;
                bitField2_ = (bitField2_ & ~0x00000002);
              } else {
                ensureHeroDamageDealtIsMutable();
                heroDamageDealt_.addAll(other.heroDamageDealt_);
              }
              onChanged();
            }
          } else {
            if (!other.heroDamageDealt_.isEmpty()) {
              if (heroDamageDealtBuilder_.isEmpty()) {
                heroDamageDealtBuilder_.dispose();
                heroDamageDealtBuilder_ = null;
                heroDamageDealt_ = other.heroDamageDealt_;
                bitField2_ = (bitField2_ & ~0x00000002);
                heroDamageDealtBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getHeroDamageDealtFieldBuilder() : null;
              } else {
                heroDamageDealtBuilder_.addAllMessages(other.heroDamageDealt_);
              }
            }
          }
          if (other.hasSecondsDead()) {
            setSecondsDead(other.getSecondsDead());
          }
          if (other.hasGoldLostToDeath()) {
            setGoldLostToDeath(other.getGoldLostToDeath());
          }
          if (other.hasLaneSelectionFlags()) {
            setLaneSelectionFlags(other.getLaneSelectionFlags());
          }
          if (other.hasBountyRunes()) {
            setBountyRunes(other.getBountyRunes());
          }
          if (other.hasOutpostsCaptured()) {
            setOutpostsCaptured(other.getOutpostsCaptured());
          }
          if (other.hasTeamNumber()) {
            setTeamNumber(other.getTeamNumber());
          }
          if (other.hasTeamSlot()) {
            setTeamSlot(other.getTeamSlot());
          }
          if (other.hasSelectedFacet()) {
            setSelectedFacet(other.getSelectedFacet());
          }
          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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
        private int bitField1_;
        private int bitField2_;

        private int accountId_ ;
        /**
         * optional uint32 account_id = 1;
         */
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 account_id = 1;
         */
        public int getAccountId() {
          return accountId_;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder setAccountId(int value) {
          bitField0_ |= 0x00000001;
          accountId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder clearAccountId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          accountId_ = 0;
          onChanged();
          return this;
        }

        private int playerSlot_ ;
        /**
         * optional uint32 player_slot = 2;
         */
        public boolean hasPlayerSlot() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 player_slot = 2;
         */
        public int getPlayerSlot() {
          return playerSlot_;
        }
        /**
         * optional uint32 player_slot = 2;
         */
        public Builder setPlayerSlot(int value) {
          bitField0_ |= 0x00000002;
          playerSlot_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 player_slot = 2;
         */
        public Builder clearPlayerSlot() {
          bitField0_ = (bitField0_ & ~0x00000002);
          playerSlot_ = 0;
          onChanged();
          return this;
        }

        private int heroId_ ;
        /**
         * optional int32 hero_id = 3;
         */
        public boolean hasHeroId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional int32 hero_id = 3;
         */
        public int getHeroId() {
          return heroId_;
        }
        /**
         * optional int32 hero_id = 3;
         */
        public Builder setHeroId(int value) {
          bitField0_ |= 0x00000004;
          heroId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 hero_id = 3;
         */
        public Builder clearHeroId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          heroId_ = 0;
          onChanged();
          return this;
        }

        private int item0_ = -1;
        /**
         * optional int32 item_0 = 4 [default = -1];
         */
        public boolean hasItem0() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional int32 item_0 = 4 [default = -1];
         */
        public int getItem0() {
          return item0_;
        }
        /**
         * optional int32 item_0 = 4 [default = -1];
         */
        public Builder setItem0(int value) {
          bitField0_ |= 0x00000008;
          item0_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_0 = 4 [default = -1];
         */
        public Builder clearItem0() {
          bitField0_ = (bitField0_ & ~0x00000008);
          item0_ = -1;
          onChanged();
          return this;
        }

        private int item1_ = -1;
        /**
         * optional int32 item_1 = 5 [default = -1];
         */
        public boolean hasItem1() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional int32 item_1 = 5 [default = -1];
         */
        public int getItem1() {
          return item1_;
        }
        /**
         * optional int32 item_1 = 5 [default = -1];
         */
        public Builder setItem1(int value) {
          bitField0_ |= 0x00000010;
          item1_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_1 = 5 [default = -1];
         */
        public Builder clearItem1() {
          bitField0_ = (bitField0_ & ~0x00000010);
          item1_ = -1;
          onChanged();
          return this;
        }

        private int item2_ = -1;
        /**
         * optional int32 item_2 = 6 [default = -1];
         */
        public boolean hasItem2() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional int32 item_2 = 6 [default = -1];
         */
        public int getItem2() {
          return item2_;
        }
        /**
         * optional int32 item_2 = 6 [default = -1];
         */
        public Builder setItem2(int value) {
          bitField0_ |= 0x00000020;
          item2_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_2 = 6 [default = -1];
         */
        public Builder clearItem2() {
          bitField0_ = (bitField0_ & ~0x00000020);
          item2_ = -1;
          onChanged();
          return this;
        }

        private int item3_ = -1;
        /**
         * optional int32 item_3 = 7 [default = -1];
         */
        public boolean hasItem3() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional int32 item_3 = 7 [default = -1];
         */
        public int getItem3() {
          return item3_;
        }
        /**
         * optional int32 item_3 = 7 [default = -1];
         */
        public Builder setItem3(int value) {
          bitField0_ |= 0x00000040;
          item3_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_3 = 7 [default = -1];
         */
        public Builder clearItem3() {
          bitField0_ = (bitField0_ & ~0x00000040);
          item3_ = -1;
          onChanged();
          return this;
        }

        private int item4_ = -1;
        /**
         * optional int32 item_4 = 8 [default = -1];
         */
        public boolean hasItem4() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional int32 item_4 = 8 [default = -1];
         */
        public int getItem4() {
          return item4_;
        }
        /**
         * optional int32 item_4 = 8 [default = -1];
         */
        public Builder setItem4(int value) {
          bitField0_ |= 0x00000080;
          item4_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_4 = 8 [default = -1];
         */
        public Builder clearItem4() {
          bitField0_ = (bitField0_ & ~0x00000080);
          item4_ = -1;
          onChanged();
          return this;
        }

        private int item5_ = -1;
        /**
         * optional int32 item_5 = 9 [default = -1];
         */
        public boolean hasItem5() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional int32 item_5 = 9 [default = -1];
         */
        public int getItem5() {
          return item5_;
        }
        /**
         * optional int32 item_5 = 9 [default = -1];
         */
        public Builder setItem5(int value) {
          bitField0_ |= 0x00000100;
          item5_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_5 = 9 [default = -1];
         */
        public Builder clearItem5() {
          bitField0_ = (bitField0_ & ~0x00000100);
          item5_ = -1;
          onChanged();
          return this;
        }

        private int item6_ = -1;
        /**
         * optional int32 item_6 = 59 [default = -1];
         */
        public boolean hasItem6() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional int32 item_6 = 59 [default = -1];
         */
        public int getItem6() {
          return item6_;
        }
        /**
         * optional int32 item_6 = 59 [default = -1];
         */
        public Builder setItem6(int value) {
          bitField0_ |= 0x00000200;
          item6_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_6 = 59 [default = -1];
         */
        public Builder clearItem6() {
          bitField0_ = (bitField0_ & ~0x00000200);
          item6_ = -1;
          onChanged();
          return this;
        }

        private int item7_ = -1;
        /**
         * optional int32 item_7 = 60 [default = -1];
         */
        public boolean hasItem7() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional int32 item_7 = 60 [default = -1];
         */
        public int getItem7() {
          return item7_;
        }
        /**
         * optional int32 item_7 = 60 [default = -1];
         */
        public Builder setItem7(int value) {
          bitField0_ |= 0x00000400;
          item7_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_7 = 60 [default = -1];
         */
        public Builder clearItem7() {
          bitField0_ = (bitField0_ & ~0x00000400);
          item7_ = -1;
          onChanged();
          return this;
        }

        private int item8_ = -1;
        /**
         * optional int32 item_8 = 61 [default = -1];
         */
        public boolean hasItem8() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional int32 item_8 = 61 [default = -1];
         */
        public int getItem8() {
          return item8_;
        }
        /**
         * optional int32 item_8 = 61 [default = -1];
         */
        public Builder setItem8(int value) {
          bitField0_ |= 0x00000800;
          item8_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_8 = 61 [default = -1];
         */
        public Builder clearItem8() {
          bitField0_ = (bitField0_ & ~0x00000800);
          item8_ = -1;
          onChanged();
          return this;
        }

        private int item9_ = -1;
        /**
         * optional int32 item_9 = 76 [default = -1];
         */
        public boolean hasItem9() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional int32 item_9 = 76 [default = -1];
         */
        public int getItem9() {
          return item9_;
        }
        /**
         * optional int32 item_9 = 76 [default = -1];
         */
        public Builder setItem9(int value) {
          bitField0_ |= 0x00001000;
          item9_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 item_9 = 76 [default = -1];
         */
        public Builder clearItem9() {
          bitField0_ = (bitField0_ & ~0x00001000);
          item9_ = -1;
          onChanged();
          return this;
        }

        private float expectedTeamContribution_ ;
        /**
         * optional float expected_team_contribution = 10;
         */
        public boolean hasExpectedTeamContribution() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional float expected_team_contribution = 10;
         */
        public float getExpectedTeamContribution() {
          return expectedTeamContribution_;
        }
        /**
         * optional float expected_team_contribution = 10;
         */
        public Builder setExpectedTeamContribution(float value) {
          bitField0_ |= 0x00002000;
          expectedTeamContribution_ = value;
          onChanged();
          return this;
        }
        /**
         * optional float expected_team_contribution = 10;
         */
        public Builder clearExpectedTeamContribution() {
          bitField0_ = (bitField0_ & ~0x00002000);
          expectedTeamContribution_ = 0F;
          onChanged();
          return this;
        }

        private float scaledMetric_ ;
        /**
         * optional float scaled_metric = 11;
         */
        public boolean hasScaledMetric() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional float scaled_metric = 11;
         */
        public float getScaledMetric() {
          return scaledMetric_;
        }
        /**
         * optional float scaled_metric = 11;
         */
        public Builder setScaledMetric(float value) {
          bitField0_ |= 0x00004000;
          scaledMetric_ = value;
          onChanged();
          return this;
        }
        /**
         * optional float scaled_metric = 11;
         */
        public Builder clearScaledMetric() {
          bitField0_ = (bitField0_ & ~0x00004000);
          scaledMetric_ = 0F;
          onChanged();
          return this;
        }

        private int previousRank_ ;
        /**
         * optional uint32 previous_rank = 12;
         */
        public boolean hasPreviousRank() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional uint32 previous_rank = 12;
         */
        public int getPreviousRank() {
          return previousRank_;
        }
        /**
         * optional uint32 previous_rank = 12;
         */
        public Builder setPreviousRank(int value) {
          bitField0_ |= 0x00008000;
          previousRank_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 previous_rank = 12;
         */
        public Builder clearPreviousRank() {
          bitField0_ = (bitField0_ & ~0x00008000);
          previousRank_ = 0;
          onChanged();
          return this;
        }

        private int rankChange_ ;
        /**
         * optional sint32 rank_change = 13;
         */
        public boolean hasRankChange() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * optional sint32 rank_change = 13;
         */
        public int getRankChange() {
          return rankChange_;
        }
        /**
         * optional sint32 rank_change = 13;
         */
        public Builder setRankChange(int value) {
          bitField0_ |= 0x00010000;
          rankChange_ = value;
          onChanged();
          return this;
        }
        /**
         * optional sint32 rank_change = 13;
         */
        public Builder clearRankChange() {
          bitField0_ = (bitField0_ & ~0x00010000);
          rankChange_ = 0;
          onChanged();
          return this;
        }

        private int mmrType_ ;
        /**
         * optional uint32 mmr_type = 74;
         */
        public boolean hasMmrType() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * optional uint32 mmr_type = 74;
         */
        public int getMmrType() {
          return mmrType_;
        }
        /**
         * optional uint32 mmr_type = 74;
         */
        public Builder setMmrType(int value) {
          bitField0_ |= 0x00020000;
          mmrType_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 mmr_type = 74;
         */
        public Builder clearMmrType() {
          bitField0_ = (bitField0_ & ~0x00020000);
          mmrType_ = 0;
          onChanged();
          return this;
        }

        private int kills_ ;
        /**
         * optional uint32 kills = 14;
         */
        public boolean hasKills() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        /**
         * optional uint32 kills = 14;
         */
        public int getKills() {
          return kills_;
        }
        /**
         * optional uint32 kills = 14;
         */
        public Builder setKills(int value) {
          bitField0_ |= 0x00040000;
          kills_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 kills = 14;
         */
        public Builder clearKills() {
          bitField0_ = (bitField0_ & ~0x00040000);
          kills_ = 0;
          onChanged();
          return this;
        }

        private int deaths_ ;
        /**
         * optional uint32 deaths = 15;
         */
        public boolean hasDeaths() {
          return ((bitField0_ & 0x00080000) == 0x00080000);
        }
        /**
         * optional uint32 deaths = 15;
         */
        public int getDeaths() {
          return deaths_;
        }
        /**
         * optional uint32 deaths = 15;
         */
        public Builder setDeaths(int value) {
          bitField0_ |= 0x00080000;
          deaths_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 deaths = 15;
         */
        public Builder clearDeaths() {
          bitField0_ = (bitField0_ & ~0x00080000);
          deaths_ = 0;
          onChanged();
          return this;
        }

        private int assists_ ;
        /**
         * optional uint32 assists = 16;
         */
        public boolean hasAssists() {
          return ((bitField0_ & 0x00100000) == 0x00100000);
        }
        /**
         * optional uint32 assists = 16;
         */
        public int getAssists() {
          return assists_;
        }
        /**
         * optional uint32 assists = 16;
         */
        public Builder setAssists(int value) {
          bitField0_ |= 0x00100000;
          assists_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 assists = 16;
         */
        public Builder clearAssists() {
          bitField0_ = (bitField0_ & ~0x00100000);
          assists_ = 0;
          onChanged();
          return this;
        }

        private int leaverStatus_ ;
        /**
         * optional uint32 leaver_status = 17;
         */
        public boolean hasLeaverStatus() {
          return ((bitField0_ & 0x00200000) == 0x00200000);
        }
        /**
         * optional uint32 leaver_status = 17;
         */
        public int getLeaverStatus() {
          return leaverStatus_;
        }
        /**
         * optional uint32 leaver_status = 17;
         */
        public Builder setLeaverStatus(int value) {
          bitField0_ |= 0x00200000;
          leaverStatus_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 leaver_status = 17;
         */
        public Builder clearLeaverStatus() {
          bitField0_ = (bitField0_ & ~0x00200000);
          leaverStatus_ = 0;
          onChanged();
          return this;
        }

        private int gold_ ;
        /**
         * optional uint32 gold = 18;
         */
        public boolean hasGold() {
          return ((bitField0_ & 0x00400000) == 0x00400000);
        }
        /**
         * optional uint32 gold = 18;
         */
        public int getGold() {
          return gold_;
        }
        /**
         * optional uint32 gold = 18;
         */
        public Builder setGold(int value) {
          bitField0_ |= 0x00400000;
          gold_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 gold = 18;
         */
        public Builder clearGold() {
          bitField0_ = (bitField0_ & ~0x00400000);
          gold_ = 0;
          onChanged();
          return this;
        }

        private int lastHits_ ;
        /**
         * optional uint32 last_hits = 19;
         */
        public boolean hasLastHits() {
          return ((bitField0_ & 0x00800000) == 0x00800000);
        }
        /**
         * optional uint32 last_hits = 19;
         */
        public int getLastHits() {
          return lastHits_;
        }
        /**
         * optional uint32 last_hits = 19;
         */
        public Builder setLastHits(int value) {
          bitField0_ |= 0x00800000;
          lastHits_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 last_hits = 19;
         */
        public Builder clearLastHits() {
          bitField0_ = (bitField0_ & ~0x00800000);
          lastHits_ = 0;
          onChanged();
          return this;
        }

        private int denies_ ;
        /**
         * optional uint32 denies = 20;
         */
        public boolean hasDenies() {
          return ((bitField0_ & 0x01000000) == 0x01000000);
        }
        /**
         * optional uint32 denies = 20;
         */
        public int getDenies() {
          return denies_;
        }
        /**
         * optional uint32 denies = 20;
         */
        public Builder setDenies(int value) {
          bitField0_ |= 0x01000000;
          denies_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 denies = 20;
         */
        public Builder clearDenies() {
          bitField0_ = (bitField0_ & ~0x01000000);
          denies_ = 0;
          onChanged();
          return this;
        }

        private int goldPerMin_ ;
        /**
         * optional uint32 gold_per_min = 21;
         */
        public boolean hasGoldPerMin() {
          return ((bitField0_ & 0x02000000) == 0x02000000);
        }
        /**
         * optional uint32 gold_per_min = 21;
         */
        public int getGoldPerMin() {
          return goldPerMin_;
        }
        /**
         * optional uint32 gold_per_min = 21;
         */
        public Builder setGoldPerMin(int value) {
          bitField0_ |= 0x02000000;
          goldPerMin_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 gold_per_min = 21;
         */
        public Builder clearGoldPerMin() {
          bitField0_ = (bitField0_ & ~0x02000000);
          goldPerMin_ = 0;
          onChanged();
          return this;
        }

        private int xpPerMin_ ;
        /**
         * optional uint32 xp_per_min = 22;
         */
        public boolean hasXpPerMin() {
          return ((bitField0_ & 0x04000000) == 0x04000000);
        }
        /**
         * optional uint32 xp_per_min = 22;
         */
        public int getXpPerMin() {
          return xpPerMin_;
        }
        /**
         * optional uint32 xp_per_min = 22;
         */
        public Builder setXpPerMin(int value) {
          bitField0_ |= 0x04000000;
          xpPerMin_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 xp_per_min = 22;
         */
        public Builder clearXpPerMin() {
          bitField0_ = (bitField0_ & ~0x04000000);
          xpPerMin_ = 0;
          onChanged();
          return this;
        }

        private int goldSpent_ ;
        /**
         * optional uint32 gold_spent = 23;
         */
        public boolean hasGoldSpent() {
          return ((bitField0_ & 0x08000000) == 0x08000000);
        }
        /**
         * optional uint32 gold_spent = 23;
         */
        public int getGoldSpent() {
          return goldSpent_;
        }
        /**
         * optional uint32 gold_spent = 23;
         */
        public Builder setGoldSpent(int value) {
          bitField0_ |= 0x08000000;
          goldSpent_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 gold_spent = 23;
         */
        public Builder clearGoldSpent() {
          bitField0_ = (bitField0_ & ~0x08000000);
          goldSpent_ = 0;
          onChanged();
          return this;
        }

        private int heroDamage_ ;
        /**
         * optional uint32 hero_damage = 24;
         */
        public boolean hasHeroDamage() {
          return ((bitField0_ & 0x10000000) == 0x10000000);
        }
        /**
         * optional uint32 hero_damage = 24;
         */
        public int getHeroDamage() {
          return heroDamage_;
        }
        /**
         * optional uint32 hero_damage = 24;
         */
        public Builder setHeroDamage(int value) {
          bitField0_ |= 0x10000000;
          heroDamage_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 hero_damage = 24;
         */
        public Builder clearHeroDamage() {
          bitField0_ = (bitField0_ & ~0x10000000);
          heroDamage_ = 0;
          onChanged();
          return this;
        }

        private int towerDamage_ ;
        /**
         * optional uint32 tower_damage = 25;
         */
        public boolean hasTowerDamage() {
          return ((bitField0_ & 0x20000000) == 0x20000000);
        }
        /**
         * optional uint32 tower_damage = 25;
         */
        public int getTowerDamage() {
          return towerDamage_;
        }
        /**
         * optional uint32 tower_damage = 25;
         */
        public Builder setTowerDamage(int value) {
          bitField0_ |= 0x20000000;
          towerDamage_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 tower_damage = 25;
         */
        public Builder clearTowerDamage() {
          bitField0_ = (bitField0_ & ~0x20000000);
          towerDamage_ = 0;
          onChanged();
          return this;
        }

        private int heroHealing_ ;
        /**
         * optional uint32 hero_healing = 26;
         */
        public boolean hasHeroHealing() {
          return ((bitField0_ & 0x40000000) == 0x40000000);
        }
        /**
         * optional uint32 hero_healing = 26;
         */
        public int getHeroHealing() {
          return heroHealing_;
        }
        /**
         * optional uint32 hero_healing = 26;
         */
        public Builder setHeroHealing(int value) {
          bitField0_ |= 0x40000000;
          heroHealing_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 hero_healing = 26;
         */
        public Builder clearHeroHealing() {
          bitField0_ = (bitField0_ & ~0x40000000);
          heroHealing_ = 0;
          onChanged();
          return this;
        }

        private int level_ ;
        /**
         * optional uint32 level = 27;
         */
        public boolean hasLevel() {
          return ((bitField0_ & 0x80000000) == 0x80000000);
        }
        /**
         * optional uint32 level = 27;
         */
        public int getLevel() {
          return level_;
        }
        /**
         * optional uint32 level = 27;
         */
        public Builder setLevel(int value) {
          bitField0_ |= 0x80000000;
          level_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 level = 27;
         */
        public Builder clearLevel() {
          bitField0_ = (bitField0_ & ~0x80000000);
          level_ = 0;
          onChanged();
          return this;
        }

        private int timeLastSeen_ ;
        /**
         * optional uint32 time_last_seen = 28;
         */
        public boolean hasTimeLastSeen() {
          return ((bitField1_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 time_last_seen = 28;
         */
        public int getTimeLastSeen() {
          return timeLastSeen_;
        }
        /**
         * optional uint32 time_last_seen = 28;
         */
        public Builder setTimeLastSeen(int value) {
          bitField1_ |= 0x00000001;
          timeLastSeen_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 time_last_seen = 28;
         */
        public Builder clearTimeLastSeen() {
          bitField1_ = (bitField1_ & ~0x00000001);
          timeLastSeen_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object playerName_ = "";
        /**
         * optional string player_name = 29;
         */
        public boolean hasPlayerName() {
          return ((bitField1_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional string player_name = 29;
         */
        public java.lang.String getPlayerName() {
          java.lang.Object ref = playerName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              playerName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string player_name = 29;
         */
        public com.google.protobuf.ByteString
            getPlayerNameBytes() {
          java.lang.Object ref = playerName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            playerName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string player_name = 29;
         */
        public Builder setPlayerName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000002;
          playerName_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string player_name = 29;
         */
        public Builder clearPlayerName() {
          bitField1_ = (bitField1_ & ~0x00000002);
          playerName_ = getDefaultInstance().getPlayerName();
          onChanged();
          return this;
        }
        /**
         * optional string player_name = 29;
         */
        public Builder setPlayerNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000002;
          playerName_ = value;
          onChanged();
          return this;
        }

        private int supportAbilityValue_ ;
        /**
         * optional uint32 support_ability_value = 30;
         */
        public boolean hasSupportAbilityValue() {
          return ((bitField1_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 support_ability_value = 30;
         */
        public int getSupportAbilityValue() {
          return supportAbilityValue_;
        }
        /**
         * optional uint32 support_ability_value = 30;
         */
        public Builder setSupportAbilityValue(int value) {
          bitField1_ |= 0x00000004;
          supportAbilityValue_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 support_ability_value = 30;
         */
        public Builder clearSupportAbilityValue() {
          bitField1_ = (bitField1_ & ~0x00000004);
          supportAbilityValue_ = 0;
          onChanged();
          return this;
        }

        private boolean feedingDetected_ ;
        /**
         * optional bool feeding_detected = 32;
         */
        public boolean hasFeedingDetected() {
          return ((bitField1_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional bool feeding_detected = 32;
         */
        public boolean getFeedingDetected() {
          return feedingDetected_;
        }
        /**
         * optional bool feeding_detected = 32;
         */
        public Builder setFeedingDetected(boolean value) {
          bitField1_ |= 0x00000008;
          feedingDetected_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool feeding_detected = 32;
         */
        public Builder clearFeedingDetected() {
          bitField1_ = (bitField1_ & ~0x00000008);
          feedingDetected_ = false;
          onChanged();
          return this;
        }

        private int searchRank_ ;
        /**
         * optional uint32 search_rank = 34;
         */
        public boolean hasSearchRank() {
          return ((bitField1_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 search_rank = 34;
         */
        public int getSearchRank() {
          return searchRank_;
        }
        /**
         * optional uint32 search_rank = 34;
         */
        public Builder setSearchRank(int value) {
          bitField1_ |= 0x00000010;
          searchRank_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 search_rank = 34;
         */
        public Builder clearSearchRank() {
          bitField1_ = (bitField1_ & ~0x00000010);
          searchRank_ = 0;
          onChanged();
          return this;
        }

        private int searchRankUncertainty_ ;
        /**
         * optional uint32 search_rank_uncertainty = 35;
         */
        public boolean hasSearchRankUncertainty() {
          return ((bitField1_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 search_rank_uncertainty = 35;
         */
        public int getSearchRankUncertainty() {
          return searchRankUncertainty_;
        }
        /**
         * optional uint32 search_rank_uncertainty = 35;
         */
        public Builder setSearchRankUncertainty(int value) {
          bitField1_ |= 0x00000020;
          searchRankUncertainty_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 search_rank_uncertainty = 35;
         */
        public Builder clearSearchRankUncertainty() {
          bitField1_ = (bitField1_ & ~0x00000020);
          searchRankUncertainty_ = 0;
          onChanged();
          return this;
        }

        private int rankUncertaintyChange_ ;
        /**
         * optional int32 rank_uncertainty_change = 36;
         */
        public boolean hasRankUncertaintyChange() {
          return ((bitField1_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional int32 rank_uncertainty_change = 36;
         */
        public int getRankUncertaintyChange() {
          return rankUncertaintyChange_;
        }
        /**
         * optional int32 rank_uncertainty_change = 36;
         */
        public Builder setRankUncertaintyChange(int value) {
          bitField1_ |= 0x00000040;
          rankUncertaintyChange_ = value;
          onChanged();
          return this;
        }
        /**
         * optional int32 rank_uncertainty_change = 36;
         */
        public Builder clearRankUncertaintyChange() {
          bitField1_ = (bitField1_ & ~0x00000040);
          rankUncertaintyChange_ = 0;
          onChanged();
          return this;
        }

        private int heroPlayCount_ ;
        /**
         * optional uint32 hero_play_count = 37;
         */
        public boolean hasHeroPlayCount() {
          return ((bitField1_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional uint32 hero_play_count = 37;
         */
        public int getHeroPlayCount() {
          return heroPlayCount_;
        }
        /**
         * optional uint32 hero_play_count = 37;
         */
        public Builder setHeroPlayCount(int value) {
          bitField1_ |= 0x00000080;
          heroPlayCount_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 hero_play_count = 37;
         */
        public Builder clearHeroPlayCount() {
          bitField1_ = (bitField1_ & ~0x00000080);
          heroPlayCount_ = 0;
          onChanged();
          return this;
        }

        private long partyId_ ;
        /**
         * optional fixed64 party_id = 38;
         */
        public boolean hasPartyId() {
          return ((bitField1_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional fixed64 party_id = 38;
         */
        public long getPartyId() {
          return partyId_;
        }
        /**
         * optional fixed64 party_id = 38;
         */
        public Builder setPartyId(long value) {
          bitField1_ |= 0x00000100;
          partyId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional fixed64 party_id = 38;
         */
        public Builder clearPartyId() {
          bitField1_ = (bitField1_ & ~0x00000100);
          partyId_ = 0L;
          onChanged();
          return this;
        }

        private int scaledHeroDamage_ ;
        /**
         * optional uint32 scaled_hero_damage = 54;
         */
        public boolean hasScaledHeroDamage() {
          return ((bitField1_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 scaled_hero_damage = 54;
         */
        public int getScaledHeroDamage() {
          return scaledHeroDamage_;
        }
        /**
         * optional uint32 scaled_hero_damage = 54;
         */
        public Builder setScaledHeroDamage(int value) {
          bitField1_ |= 0x00000200;
          scaledHeroDamage_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 scaled_hero_damage = 54;
         */
        public Builder clearScaledHeroDamage() {
          bitField1_ = (bitField1_ & ~0x00000200);
          scaledHeroDamage_ = 0;
          onChanged();
          return this;
        }

        private int scaledTowerDamage_ ;
        /**
         * optional uint32 scaled_tower_damage = 55;
         */
        public boolean hasScaledTowerDamage() {
          return ((bitField1_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional uint32 scaled_tower_damage = 55;
         */
        public int getScaledTowerDamage() {
          return scaledTowerDamage_;
        }
        /**
         * optional uint32 scaled_tower_damage = 55;
         */
        public Builder setScaledTowerDamage(int value) {
          bitField1_ |= 0x00000400;
          scaledTowerDamage_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 scaled_tower_damage = 55;
         */
        public Builder clearScaledTowerDamage() {
          bitField1_ = (bitField1_ & ~0x00000400);
          scaledTowerDamage_ = 0;
          onChanged();
          return this;
        }

        private int scaledHeroHealing_ ;
        /**
         * optional uint32 scaled_hero_healing = 56;
         */
        public boolean hasScaledHeroHealing() {
          return ((bitField1_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional uint32 scaled_hero_healing = 56;
         */
        public int getScaledHeroHealing() {
          return scaledHeroHealing_;
        }
        /**
         * optional uint32 scaled_hero_healing = 56;
         */
        public Builder setScaledHeroHealing(int value) {
          bitField1_ |= 0x00000800;
          scaledHeroHealing_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 scaled_hero_healing = 56;
         */
        public Builder clearScaledHeroHealing() {
          bitField1_ = (bitField1_ & ~0x00000800);
          scaledHeroHealing_ = 0;
          onChanged();
          return this;
        }

        private float scaledKills_ ;
        /**
         * optional float scaled_kills = 39;
         */
        public boolean hasScaledKills() {
          return ((bitField1_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional float scaled_kills = 39;
         */
        public float getScaledKills() {
          return scaledKills_;
        }
        /**
         * optional float scaled_kills = 39;
         */
        public Builder setScaledKills(float value) {
          bitField1_ |= 0x00001000;
          scaledKills_ = value;
          onChanged();
          return this;
        }
        /**
         * optional float scaled_kills = 39;
         */
        public Builder clearScaledKills() {
          bitField1_ = (bitField1_ & ~0x00001000);
          scaledKills_ = 0F;
          onChanged();
          return this;
        }

        private float scaledDeaths_ ;
        /**
         * optional float scaled_deaths = 40;
         */
        public boolean hasScaledDeaths() {
          return ((bitField1_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional float scaled_deaths = 40;
         */
        public float getScaledDeaths() {
          return scaledDeaths_;
        }
        /**
         * optional float scaled_deaths = 40;
         */
        public Builder setScaledDeaths(float value) {
          bitField1_ |= 0x00002000;
          scaledDeaths_ = value;
          onChanged();
          return this;
        }
        /**
         * optional float scaled_deaths = 40;
         */
        public Builder clearScaledDeaths() {
          bitField1_ = (bitField1_ & ~0x00002000);
          scaledDeaths_ = 0F;
          onChanged();
          return this;
        }

        private float scaledAssists_ ;
        /**
         * optional float scaled_assists = 41;
         */
        public boolean hasScaledAssists() {
          return ((bitField1_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional float scaled_assists = 41;
         */
        public float getScaledAssists() {
          return scaledAssists_;
        }
        /**
         * optional float scaled_assists = 41;
         */
        public Builder setScaledAssists(float value) {
          bitField1_ |= 0x00004000;
          scaledAssists_ = value;
          onChanged();
          return this;
        }
        /**
         * optional float scaled_assists = 41;
         */
        public Builder clearScaledAssists() {
          bitField1_ = (bitField1_ & ~0x00004000);
          scaledAssists_ = 0F;
          onChanged();
          return this;
        }

        private int claimedFarmGold_ ;
        /**
         * optional uint32 claimed_farm_gold = 42;
         */
        public boolean hasClaimedFarmGold() {
          return ((bitField1_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional uint32 claimed_farm_gold = 42;
         */
        public int getClaimedFarmGold() {
          return claimedFarmGold_;
        }
        /**
         * optional uint32 claimed_farm_gold = 42;
         */
        public Builder setClaimedFarmGold(int value) {
          bitField1_ |= 0x00008000;
          claimedFarmGold_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 claimed_farm_gold = 42;
         */
        public Builder clearClaimedFarmGold() {
          bitField1_ = (bitField1_ & ~0x00008000);
          claimedFarmGold_ = 0;
          onChanged();
          return this;
        }

        private int supportGold_ ;
        /**
         * optional uint32 support_gold = 43;
         */
        public boolean hasSupportGold() {
          return ((bitField1_ & 0x00010000) == 0x00010000);
        }
        /**
         * optional uint32 support_gold = 43;
         */
        public int getSupportGold() {
          return supportGold_;
        }
        /**
         * optional uint32 support_gold = 43;
         */
        public Builder setSupportGold(int value) {
          bitField1_ |= 0x00010000;
          supportGold_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 support_gold = 43;
         */
        public Builder clearSupportGold() {
          bitField1_ = (bitField1_ & ~0x00010000);
          supportGold_ = 0;
          onChanged();
          return this;
        }

        private int claimedDenies_ ;
        /**
         * optional uint32 claimed_denies = 44;
         */
        public boolean hasClaimedDenies() {
          return ((bitField1_ & 0x00020000) == 0x00020000);
        }
        /**
         * optional uint32 claimed_denies = 44;
         */
        public int getClaimedDenies() {
          return claimedDenies_;
        }
        /**
         * optional uint32 claimed_denies = 44;
         */
        public Builder setClaimedDenies(int value) {
          bitField1_ |= 0x00020000;
          claimedDenies_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 claimed_denies = 44;
         */
        public Builder clearClaimedDenies() {
          bitField1_ = (bitField1_ & ~0x00020000);
          claimedDenies_ = 0;
          onChanged();
          return this;
        }

        private int claimedMisses_ ;
        /**
         * optional uint32 claimed_misses = 45;
         */
        public boolean hasClaimedMisses() {
          return ((bitField1_ & 0x00040000) == 0x00040000);
        }
        /**
         * optional uint32 claimed_misses = 45;
         */
        public int getClaimedMisses() {
          return claimedMisses_;
        }
        /**
         * optional uint32 claimed_misses = 45;
         */
        public Builder setClaimedMisses(int value) {
          bitField1_ |= 0x00040000;
          claimedMisses_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 claimed_misses = 45;
         */
        public Builder clearClaimedMisses() {
          bitField1_ = (bitField1_ & ~0x00040000);
          claimedMisses_ = 0;
          onChanged();
          return this;
        }

        private int misses_ ;
        /**
         * optional uint32 misses = 46;
         */
        public boolean hasMisses() {
          return ((bitField1_ & 0x00080000) == 0x00080000);
        }
        /**
         * optional uint32 misses = 46;
         */
        public int getMisses() {
          return misses_;
        }
        /**
         * optional uint32 misses = 46;
         */
        public Builder setMisses(int value) {
          bitField1_ |= 0x00080000;
          misses_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 misses = 46;
         */
        public Builder clearMisses() {
          bitField1_ = (bitField1_ & ~0x00080000);
          misses_ = 0;
          onChanged();
          return this;
        }

        private java.util.List abilityUpgrades_ =
          java.util.Collections.emptyList();
        private void ensureAbilityUpgradesIsMutable() {
          if (!((bitField1_ & 0x00100000) == 0x00100000)) {
            abilityUpgrades_ = new java.util.ArrayList(abilityUpgrades_);
            bitField1_ |= 0x00100000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder> abilityUpgradesBuilder_;

        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public java.util.List getAbilityUpgradesList() {
          if (abilityUpgradesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(abilityUpgrades_);
          } else {
            return abilityUpgradesBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public int getAbilityUpgradesCount() {
          if (abilityUpgradesBuilder_ == null) {
            return abilityUpgrades_.size();
          } else {
            return abilityUpgradesBuilder_.getCount();
          }
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade getAbilityUpgrades(int index) {
          if (abilityUpgradesBuilder_ == null) {
            return abilityUpgrades_.get(index);
          } else {
            return abilityUpgradesBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder setAbilityUpgrades(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade value) {
          if (abilityUpgradesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.set(index, value);
            onChanged();
          } else {
            abilityUpgradesBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder setAbilityUpgrades(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder builderForValue) {
          if (abilityUpgradesBuilder_ == null) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.set(index, builderForValue.build());
            onChanged();
          } else {
            abilityUpgradesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder addAbilityUpgrades(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade value) {
          if (abilityUpgradesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(value);
            onChanged();
          } else {
            abilityUpgradesBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder addAbilityUpgrades(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade value) {
          if (abilityUpgradesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(index, value);
            onChanged();
          } else {
            abilityUpgradesBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder addAbilityUpgrades(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder builderForValue) {
          if (abilityUpgradesBuilder_ == null) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(builderForValue.build());
            onChanged();
          } else {
            abilityUpgradesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder addAbilityUpgrades(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder builderForValue) {
          if (abilityUpgradesBuilder_ == null) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(index, builderForValue.build());
            onChanged();
          } else {
            abilityUpgradesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder addAllAbilityUpgrades(
            java.lang.Iterable values) {
          if (abilityUpgradesBuilder_ == null) {
            ensureAbilityUpgradesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, abilityUpgrades_);
            onChanged();
          } else {
            abilityUpgradesBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder clearAbilityUpgrades() {
          if (abilityUpgradesBuilder_ == null) {
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00100000);
            onChanged();
          } else {
            abilityUpgradesBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public Builder removeAbilityUpgrades(int index) {
          if (abilityUpgradesBuilder_ == null) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.remove(index);
            onChanged();
          } else {
            abilityUpgradesBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder getAbilityUpgradesBuilder(
            int index) {
          return getAbilityUpgradesFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder getAbilityUpgradesOrBuilder(
            int index) {
          if (abilityUpgradesBuilder_ == null) {
            return abilityUpgrades_.get(index);  } else {
            return abilityUpgradesBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public java.util.List 
             getAbilityUpgradesOrBuilderList() {
          if (abilityUpgradesBuilder_ != null) {
            return abilityUpgradesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(abilityUpgrades_);
          }
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder addAbilityUpgradesBuilder() {
          return getAbilityUpgradesFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.getDefaultInstance());
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder addAbilityUpgradesBuilder(
            int index) {
          return getAbilityUpgradesFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.getDefaultInstance());
        }
        /**
         * repeated .CMatchPlayerAbilityUpgrade ability_upgrades = 47;
         */
        public java.util.List 
             getAbilityUpgradesBuilderList() {
          return getAbilityUpgradesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder> 
            getAbilityUpgradesFieldBuilder() {
          if (abilityUpgradesBuilder_ == null) {
            abilityUpgradesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgrade.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerAbilityUpgradeOrBuilder>(
                    abilityUpgrades_,
                    ((bitField1_ & 0x00100000) == 0x00100000),
                    getParentForChildren(),
                    isClean());
            abilityUpgrades_ = null;
          }
          return abilityUpgradesBuilder_;
        }

        private java.util.List additionalUnitsInventory_ =
          java.util.Collections.emptyList();
        private void ensureAdditionalUnitsInventoryIsMutable() {
          if (!((bitField1_ & 0x00200000) == 0x00200000)) {
            additionalUnitsInventory_ = new java.util.ArrayList(additionalUnitsInventory_);
            bitField1_ |= 0x00200000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder> additionalUnitsInventoryBuilder_;

        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public java.util.List getAdditionalUnitsInventoryList() {
          if (additionalUnitsInventoryBuilder_ == null) {
            return java.util.Collections.unmodifiableList(additionalUnitsInventory_);
          } else {
            return additionalUnitsInventoryBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public int getAdditionalUnitsInventoryCount() {
          if (additionalUnitsInventoryBuilder_ == null) {
            return additionalUnitsInventory_.size();
          } else {
            return additionalUnitsInventoryBuilder_.getCount();
          }
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory getAdditionalUnitsInventory(int index) {
          if (additionalUnitsInventoryBuilder_ == null) {
            return additionalUnitsInventory_.get(index);
          } else {
            return additionalUnitsInventoryBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder setAdditionalUnitsInventory(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory value) {
          if (additionalUnitsInventoryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.set(index, value);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder setAdditionalUnitsInventory(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder builderForValue) {
          if (additionalUnitsInventoryBuilder_ == null) {
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.set(index, builderForValue.build());
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder addAdditionalUnitsInventory(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory value) {
          if (additionalUnitsInventoryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.add(value);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder addAdditionalUnitsInventory(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory value) {
          if (additionalUnitsInventoryBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.add(index, value);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder addAdditionalUnitsInventory(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder builderForValue) {
          if (additionalUnitsInventoryBuilder_ == null) {
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.add(builderForValue.build());
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder addAdditionalUnitsInventory(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder builderForValue) {
          if (additionalUnitsInventoryBuilder_ == null) {
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.add(index, builderForValue.build());
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder addAllAdditionalUnitsInventory(
            java.lang.Iterable values) {
          if (additionalUnitsInventoryBuilder_ == null) {
            ensureAdditionalUnitsInventoryIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, additionalUnitsInventory_);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder clearAdditionalUnitsInventory() {
          if (additionalUnitsInventoryBuilder_ == null) {
            additionalUnitsInventory_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00200000);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public Builder removeAdditionalUnitsInventory(int index) {
          if (additionalUnitsInventoryBuilder_ == null) {
            ensureAdditionalUnitsInventoryIsMutable();
            additionalUnitsInventory_.remove(index);
            onChanged();
          } else {
            additionalUnitsInventoryBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder getAdditionalUnitsInventoryBuilder(
            int index) {
          return getAdditionalUnitsInventoryFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder getAdditionalUnitsInventoryOrBuilder(
            int index) {
          if (additionalUnitsInventoryBuilder_ == null) {
            return additionalUnitsInventory_.get(index);  } else {
            return additionalUnitsInventoryBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public java.util.List 
             getAdditionalUnitsInventoryOrBuilderList() {
          if (additionalUnitsInventoryBuilder_ != null) {
            return additionalUnitsInventoryBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(additionalUnitsInventory_);
          }
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder addAdditionalUnitsInventoryBuilder() {
          return getAdditionalUnitsInventoryFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.getDefaultInstance());
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder addAdditionalUnitsInventoryBuilder(
            int index) {
          return getAdditionalUnitsInventoryFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.getDefaultInstance());
        }
        /**
         * repeated .CMatchAdditionalUnitInventory additional_units_inventory = 48;
         */
        public java.util.List 
             getAdditionalUnitsInventoryBuilderList() {
          return getAdditionalUnitsInventoryFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder> 
            getAdditionalUnitsInventoryFieldBuilder() {
          if (additionalUnitsInventoryBuilder_ == null) {
            additionalUnitsInventoryBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventory.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchAdditionalUnitInventoryOrBuilder>(
                    additionalUnitsInventory_,
                    ((bitField1_ & 0x00200000) == 0x00200000),
                    getParentForChildren(),
                    isClean());
            additionalUnitsInventory_ = null;
          }
          return additionalUnitsInventoryBuilder_;
        }

        private java.util.List permanentBuffs_ =
          java.util.Collections.emptyList();
        private void ensurePermanentBuffsIsMutable() {
          if (!((bitField1_ & 0x00400000) == 0x00400000)) {
            permanentBuffs_ = new java.util.ArrayList(permanentBuffs_);
            bitField1_ |= 0x00400000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder> permanentBuffsBuilder_;

        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public java.util.List getPermanentBuffsList() {
          if (permanentBuffsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(permanentBuffs_);
          } else {
            return permanentBuffsBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public int getPermanentBuffsCount() {
          if (permanentBuffsBuilder_ == null) {
            return permanentBuffs_.size();
          } else {
            return permanentBuffsBuilder_.getCount();
          }
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff getPermanentBuffs(int index) {
          if (permanentBuffsBuilder_ == null) {
            return permanentBuffs_.get(index);
          } else {
            return permanentBuffsBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder setPermanentBuffs(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff value) {
          if (permanentBuffsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.set(index, value);
            onChanged();
          } else {
            permanentBuffsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder setPermanentBuffs(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder builderForValue) {
          if (permanentBuffsBuilder_ == null) {
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.set(index, builderForValue.build());
            onChanged();
          } else {
            permanentBuffsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder addPermanentBuffs(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff value) {
          if (permanentBuffsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.add(value);
            onChanged();
          } else {
            permanentBuffsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder addPermanentBuffs(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff value) {
          if (permanentBuffsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.add(index, value);
            onChanged();
          } else {
            permanentBuffsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder addPermanentBuffs(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder builderForValue) {
          if (permanentBuffsBuilder_ == null) {
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.add(builderForValue.build());
            onChanged();
          } else {
            permanentBuffsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder addPermanentBuffs(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder builderForValue) {
          if (permanentBuffsBuilder_ == null) {
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.add(index, builderForValue.build());
            onChanged();
          } else {
            permanentBuffsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder addAllPermanentBuffs(
            java.lang.Iterable values) {
          if (permanentBuffsBuilder_ == null) {
            ensurePermanentBuffsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, permanentBuffs_);
            onChanged();
          } else {
            permanentBuffsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder clearPermanentBuffs() {
          if (permanentBuffsBuilder_ == null) {
            permanentBuffs_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00400000);
            onChanged();
          } else {
            permanentBuffsBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public Builder removePermanentBuffs(int index) {
          if (permanentBuffsBuilder_ == null) {
            ensurePermanentBuffsIsMutable();
            permanentBuffs_.remove(index);
            onChanged();
          } else {
            permanentBuffsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder getPermanentBuffsBuilder(
            int index) {
          return getPermanentBuffsFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder getPermanentBuffsOrBuilder(
            int index) {
          if (permanentBuffsBuilder_ == null) {
            return permanentBuffs_.get(index);  } else {
            return permanentBuffsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public java.util.List 
             getPermanentBuffsOrBuilderList() {
          if (permanentBuffsBuilder_ != null) {
            return permanentBuffsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(permanentBuffs_);
          }
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder addPermanentBuffsBuilder() {
          return getPermanentBuffsFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.getDefaultInstance());
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder addPermanentBuffsBuilder(
            int index) {
          return getPermanentBuffsFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.getDefaultInstance());
        }
        /**
         * repeated .CMatchPlayerPermanentBuff permanent_buffs = 57;
         */
        public java.util.List 
             getPermanentBuffsBuilderList() {
          return getPermanentBuffsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder> 
            getPermanentBuffsFieldBuilder() {
          if (permanentBuffsBuilder_ == null) {
            permanentBuffsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuff.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchPlayerPermanentBuffOrBuilder>(
                    permanentBuffs_,
                    ((bitField1_ & 0x00400000) == 0x00400000),
                    getParentForChildren(),
                    isClean());
            permanentBuffs_ = null;
          }
          return permanentBuffsBuilder_;
        }

        private java.lang.Object proName_ = "";
        /**
         * optional string pro_name = 72;
         */
        public boolean hasProName() {
          return ((bitField1_ & 0x00800000) == 0x00800000);
        }
        /**
         * optional string pro_name = 72;
         */
        public java.lang.String getProName() {
          java.lang.Object ref = proName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              proName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string pro_name = 72;
         */
        public com.google.protobuf.ByteString
            getProNameBytes() {
          java.lang.Object ref = proName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            proName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string pro_name = 72;
         */
        public Builder setProName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00800000;
          proName_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string pro_name = 72;
         */
        public Builder clearProName() {
          bitField1_ = (bitField1_ & ~0x00800000);
          proName_ = getDefaultInstance().getProName();
          onChanged();
          return this;
        }
        /**
         * optional string pro_name = 72;
         */
        public Builder setProNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00800000;
          proName_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object realName_ = "";
        /**
         * optional string real_name = 73;
         */
        public boolean hasRealName() {
          return ((bitField1_ & 0x01000000) == 0x01000000);
        }
        /**
         * optional string real_name = 73;
         */
        public java.lang.String getRealName() {
          java.lang.Object ref = realName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              realName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string real_name = 73;
         */
        public com.google.protobuf.ByteString
            getRealNameBytes() {
          java.lang.Object ref = realName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            realName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string real_name = 73;
         */
        public Builder setRealName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x01000000;
          realName_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string real_name = 73;
         */
        public Builder clearRealName() {
          bitField1_ = (bitField1_ & ~0x01000000);
          realName_ = getDefaultInstance().getRealName();
          onChanged();
          return this;
        }
        /**
         * optional string real_name = 73;
         */
        public Builder setRealNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x01000000;
          realName_ = value;
          onChanged();
          return this;
        }

        private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder> customGameDataBuilder_;
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public boolean hasCustomGameData() {
          return ((bitField1_ & 0x02000000) == 0x02000000);
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData getCustomGameData() {
          if (customGameDataBuilder_ == null) {
            return customGameData_;
          } else {
            return customGameDataBuilder_.getMessage();
          }
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public Builder setCustomGameData(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData value) {
          if (customGameDataBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            customGameData_ = value;
            onChanged();
          } else {
            customGameDataBuilder_.setMessage(value);
          }
          bitField1_ |= 0x02000000;
          return this;
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public Builder setCustomGameData(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder builderForValue) {
          if (customGameDataBuilder_ == null) {
            customGameData_ = builderForValue.build();
            onChanged();
          } else {
            customGameDataBuilder_.setMessage(builderForValue.build());
          }
          bitField1_ |= 0x02000000;
          return this;
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public Builder mergeCustomGameData(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData value) {
          if (customGameDataBuilder_ == null) {
            if (((bitField1_ & 0x02000000) == 0x02000000) &&
                customGameData_ != skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance()) {
              customGameData_ =
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.newBuilder(customGameData_).mergeFrom(value).buildPartial();
            } else {
              customGameData_ = value;
            }
            onChanged();
          } else {
            customGameDataBuilder_.mergeFrom(value);
          }
          bitField1_ |= 0x02000000;
          return this;
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public Builder clearCustomGameData() {
          if (customGameDataBuilder_ == null) {
            customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.getDefaultInstance();
            onChanged();
          } else {
            customGameDataBuilder_.clear();
          }
          bitField1_ = (bitField1_ & ~0x02000000);
          return this;
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder getCustomGameDataBuilder() {
          bitField1_ |= 0x02000000;
          onChanged();
          return getCustomGameDataFieldBuilder().getBuilder();
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder getCustomGameDataOrBuilder() {
          if (customGameDataBuilder_ != null) {
            return customGameDataBuilder_.getMessageOrBuilder();
          } else {
            return customGameData_;
          }
        }
        /**
         * optional .CMsgDOTAMatch.Player.CustomGameData custom_game_data = 50;
         */
        private com.google.protobuf.SingleFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder> 
            getCustomGameDataFieldBuilder() {
          if (customGameDataBuilder_ == null) {
            customGameDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.CustomGameDataOrBuilder>(
                    getCustomGameData(),
                    getParentForChildren(),
                    isClean());
            customGameData_ = null;
          }
          return customGameDataBuilder_;
        }

        private boolean activePlusSubscription_ ;
        /**
         * optional bool active_plus_subscription = 51;
         */
        public boolean hasActivePlusSubscription() {
          return ((bitField1_ & 0x04000000) == 0x04000000);
        }
        /**
         * optional bool active_plus_subscription = 51;
         */
        public boolean getActivePlusSubscription() {
          return activePlusSubscription_;
        }
        /**
         * optional bool active_plus_subscription = 51;
         */
        public Builder setActivePlusSubscription(boolean value) {
          bitField1_ |= 0x04000000;
          activePlusSubscription_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool active_plus_subscription = 51;
         */
        public Builder clearActivePlusSubscription() {
          bitField1_ = (bitField1_ & ~0x04000000);
          activePlusSubscription_ = false;
          onChanged();
          return this;
        }

        private int netWorth_ ;
        /**
         * optional uint32 net_worth = 52;
         */
        public boolean hasNetWorth() {
          return ((bitField1_ & 0x08000000) == 0x08000000);
        }
        /**
         * optional uint32 net_worth = 52;
         */
        public int getNetWorth() {
          return netWorth_;
        }
        /**
         * optional uint32 net_worth = 52;
         */
        public Builder setNetWorth(int value) {
          bitField1_ |= 0x08000000;
          netWorth_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 net_worth = 52;
         */
        public Builder clearNetWorth() {
          bitField1_ = (bitField1_ & ~0x08000000);
          netWorth_ = 0;
          onChanged();
          return this;
        }

        private int botDifficulty_ ;
        /**
         * optional uint32 bot_difficulty = 58;
         */
        public boolean hasBotDifficulty() {
          return ((bitField1_ & 0x10000000) == 0x10000000);
        }
        /**
         * optional uint32 bot_difficulty = 58;
         */
        public int getBotDifficulty() {
          return botDifficulty_;
        }
        /**
         * optional uint32 bot_difficulty = 58;
         */
        public Builder setBotDifficulty(int value) {
          bitField1_ |= 0x10000000;
          botDifficulty_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 bot_difficulty = 58;
         */
        public Builder clearBotDifficulty() {
          bitField1_ = (bitField1_ & ~0x10000000);
          botDifficulty_ = 0;
          onChanged();
          return this;
        }

        private int heroPickOrder_ ;
        /**
         * optional uint32 hero_pick_order = 63;
         */
        public boolean hasHeroPickOrder() {
          return ((bitField1_ & 0x20000000) == 0x20000000);
        }
        /**
         * optional uint32 hero_pick_order = 63;
         */
        public int getHeroPickOrder() {
          return heroPickOrder_;
        }
        /**
         * optional uint32 hero_pick_order = 63;
         */
        public Builder setHeroPickOrder(int value) {
          bitField1_ |= 0x20000000;
          heroPickOrder_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 hero_pick_order = 63;
         */
        public Builder clearHeroPickOrder() {
          bitField1_ = (bitField1_ & ~0x20000000);
          heroPickOrder_ = 0;
          onChanged();
          return this;
        }

        private boolean heroWasRandomed_ ;
        /**
         * optional bool hero_was_randomed = 64;
         */
        public boolean hasHeroWasRandomed() {
          return ((bitField1_ & 0x40000000) == 0x40000000);
        }
        /**
         * optional bool hero_was_randomed = 64;
         */
        public boolean getHeroWasRandomed() {
          return heroWasRandomed_;
        }
        /**
         * optional bool hero_was_randomed = 64;
         */
        public Builder setHeroWasRandomed(boolean value) {
          bitField1_ |= 0x40000000;
          heroWasRandomed_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool hero_was_randomed = 64;
         */
        public Builder clearHeroWasRandomed() {
          bitField1_ = (bitField1_ & ~0x40000000);
          heroWasRandomed_ = false;
          onChanged();
          return this;
        }

        private boolean heroWasDotaPlusSuggestion_ ;
        /**
         * optional bool hero_was_dota_plus_suggestion = 69;
         */
        public boolean hasHeroWasDotaPlusSuggestion() {
          return ((bitField1_ & 0x80000000) == 0x80000000);
        }
        /**
         * optional bool hero_was_dota_plus_suggestion = 69;
         */
        public boolean getHeroWasDotaPlusSuggestion() {
          return heroWasDotaPlusSuggestion_;
        }
        /**
         * optional bool hero_was_dota_plus_suggestion = 69;
         */
        public Builder setHeroWasDotaPlusSuggestion(boolean value) {
          bitField1_ |= 0x80000000;
          heroWasDotaPlusSuggestion_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool hero_was_dota_plus_suggestion = 69;
         */
        public Builder clearHeroWasDotaPlusSuggestion() {
          bitField1_ = (bitField1_ & ~0x80000000);
          heroWasDotaPlusSuggestion_ = false;
          onChanged();
          return this;
        }

        private java.util.List heroDamageReceived_ =
          java.util.Collections.emptyList();
        private void ensureHeroDamageReceivedIsMutable() {
          if (!((bitField2_ & 0x00000001) == 0x00000001)) {
            heroDamageReceived_ = new java.util.ArrayList(heroDamageReceived_);
            bitField2_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder> heroDamageReceivedBuilder_;

        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public java.util.List getHeroDamageReceivedList() {
          if (heroDamageReceivedBuilder_ == null) {
            return java.util.Collections.unmodifiableList(heroDamageReceived_);
          } else {
            return heroDamageReceivedBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public int getHeroDamageReceivedCount() {
          if (heroDamageReceivedBuilder_ == null) {
            return heroDamageReceived_.size();
          } else {
            return heroDamageReceivedBuilder_.getCount();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageReceived(int index) {
          if (heroDamageReceivedBuilder_ == null) {
            return heroDamageReceived_.get(index);
          } else {
            return heroDamageReceivedBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder setHeroDamageReceived(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageReceivedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.set(index, value);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder setHeroDamageReceived(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageReceivedBuilder_ == null) {
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.set(index, builderForValue.build());
            onChanged();
          } else {
            heroDamageReceivedBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder addHeroDamageReceived(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageReceivedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.add(value);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder addHeroDamageReceived(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageReceivedBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.add(index, value);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder addHeroDamageReceived(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageReceivedBuilder_ == null) {
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.add(builderForValue.build());
            onChanged();
          } else {
            heroDamageReceivedBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder addHeroDamageReceived(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageReceivedBuilder_ == null) {
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.add(index, builderForValue.build());
            onChanged();
          } else {
            heroDamageReceivedBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder addAllHeroDamageReceived(
            java.lang.Iterable values) {
          if (heroDamageReceivedBuilder_ == null) {
            ensureHeroDamageReceivedIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, heroDamageReceived_);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder clearHeroDamageReceived() {
          if (heroDamageReceivedBuilder_ == null) {
            heroDamageReceived_ = java.util.Collections.emptyList();
            bitField2_ = (bitField2_ & ~0x00000001);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public Builder removeHeroDamageReceived(int index) {
          if (heroDamageReceivedBuilder_ == null) {
            ensureHeroDamageReceivedIsMutable();
            heroDamageReceived_.remove(index);
            onChanged();
          } else {
            heroDamageReceivedBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder getHeroDamageReceivedBuilder(
            int index) {
          return getHeroDamageReceivedFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageReceivedOrBuilder(
            int index) {
          if (heroDamageReceivedBuilder_ == null) {
            return heroDamageReceived_.get(index);  } else {
            return heroDamageReceivedBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public java.util.List 
             getHeroDamageReceivedOrBuilderList() {
          if (heroDamageReceivedBuilder_ != null) {
            return heroDamageReceivedBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(heroDamageReceived_);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder addHeroDamageReceivedBuilder() {
          return getHeroDamageReceivedFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder addHeroDamageReceivedBuilder(
            int index) {
          return getHeroDamageReceivedFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_received = 67;
         */
        public java.util.List 
             getHeroDamageReceivedBuilderList() {
          return getHeroDamageReceivedFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder> 
            getHeroDamageReceivedFieldBuilder() {
          if (heroDamageReceivedBuilder_ == null) {
            heroDamageReceivedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder>(
                    heroDamageReceived_,
                    ((bitField2_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            heroDamageReceived_ = null;
          }
          return heroDamageReceivedBuilder_;
        }

        private java.util.List heroDamageDealt_ =
          java.util.Collections.emptyList();
        private void ensureHeroDamageDealtIsMutable() {
          if (!((bitField2_ & 0x00000002) == 0x00000002)) {
            heroDamageDealt_ = new java.util.ArrayList(heroDamageDealt_);
            bitField2_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder> heroDamageDealtBuilder_;

        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public java.util.List getHeroDamageDealtList() {
          if (heroDamageDealtBuilder_ == null) {
            return java.util.Collections.unmodifiableList(heroDamageDealt_);
          } else {
            return heroDamageDealtBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public int getHeroDamageDealtCount() {
          if (heroDamageDealtBuilder_ == null) {
            return heroDamageDealt_.size();
          } else {
            return heroDamageDealtBuilder_.getCount();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived getHeroDamageDealt(int index) {
          if (heroDamageDealtBuilder_ == null) {
            return heroDamageDealt_.get(index);
          } else {
            return heroDamageDealtBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder setHeroDamageDealt(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageDealtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.set(index, value);
            onChanged();
          } else {
            heroDamageDealtBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder setHeroDamageDealt(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageDealtBuilder_ == null) {
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.set(index, builderForValue.build());
            onChanged();
          } else {
            heroDamageDealtBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder addHeroDamageDealt(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageDealtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.add(value);
            onChanged();
          } else {
            heroDamageDealtBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder addHeroDamageDealt(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived value) {
          if (heroDamageDealtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.add(index, value);
            onChanged();
          } else {
            heroDamageDealtBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder addHeroDamageDealt(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageDealtBuilder_ == null) {
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.add(builderForValue.build());
            onChanged();
          } else {
            heroDamageDealtBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder addHeroDamageDealt(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder builderForValue) {
          if (heroDamageDealtBuilder_ == null) {
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.add(index, builderForValue.build());
            onChanged();
          } else {
            heroDamageDealtBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder addAllHeroDamageDealt(
            java.lang.Iterable values) {
          if (heroDamageDealtBuilder_ == null) {
            ensureHeroDamageDealtIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, heroDamageDealt_);
            onChanged();
          } else {
            heroDamageDealtBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder clearHeroDamageDealt() {
          if (heroDamageDealtBuilder_ == null) {
            heroDamageDealt_ = java.util.Collections.emptyList();
            bitField2_ = (bitField2_ & ~0x00000002);
            onChanged();
          } else {
            heroDamageDealtBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public Builder removeHeroDamageDealt(int index) {
          if (heroDamageDealtBuilder_ == null) {
            ensureHeroDamageDealtIsMutable();
            heroDamageDealt_.remove(index);
            onChanged();
          } else {
            heroDamageDealtBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder getHeroDamageDealtBuilder(
            int index) {
          return getHeroDamageDealtFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder getHeroDamageDealtOrBuilder(
            int index) {
          if (heroDamageDealtBuilder_ == null) {
            return heroDamageDealt_.get(index);  } else {
            return heroDamageDealtBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public java.util.List 
             getHeroDamageDealtOrBuilderList() {
          if (heroDamageDealtBuilder_ != null) {
            return heroDamageDealtBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(heroDamageDealt_);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder addHeroDamageDealtBuilder() {
          return getHeroDamageDealtFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder addHeroDamageDealtBuilder(
            int index) {
          return getHeroDamageDealtFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.Player.HeroDamageReceived hero_damage_dealt = 79;
         */
        public java.util.List 
             getHeroDamageDealtBuilderList() {
          return getHeroDamageDealtFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder> 
            getHeroDamageDealtFieldBuilder() {
          if (heroDamageDealtBuilder_ == null) {
            heroDamageDealtBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceived.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.HeroDamageReceivedOrBuilder>(
                    heroDamageDealt_,
                    ((bitField2_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            heroDamageDealt_ = null;
          }
          return heroDamageDealtBuilder_;
        }

        private int secondsDead_ ;
        /**
         * optional uint32 seconds_dead = 70;
         */
        public boolean hasSecondsDead() {
          return ((bitField2_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 seconds_dead = 70;
         */
        public int getSecondsDead() {
          return secondsDead_;
        }
        /**
         * optional uint32 seconds_dead = 70;
         */
        public Builder setSecondsDead(int value) {
          bitField2_ |= 0x00000004;
          secondsDead_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 seconds_dead = 70;
         */
        public Builder clearSecondsDead() {
          bitField2_ = (bitField2_ & ~0x00000004);
          secondsDead_ = 0;
          onChanged();
          return this;
        }

        private int goldLostToDeath_ ;
        /**
         * optional uint32 gold_lost_to_death = 71;
         */
        public boolean hasGoldLostToDeath() {
          return ((bitField2_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 gold_lost_to_death = 71;
         */
        public int getGoldLostToDeath() {
          return goldLostToDeath_;
        }
        /**
         * optional uint32 gold_lost_to_death = 71;
         */
        public Builder setGoldLostToDeath(int value) {
          bitField2_ |= 0x00000008;
          goldLostToDeath_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 gold_lost_to_death = 71;
         */
        public Builder clearGoldLostToDeath() {
          bitField2_ = (bitField2_ & ~0x00000008);
          goldLostToDeath_ = 0;
          onChanged();
          return this;
        }

        private int laneSelectionFlags_ ;
        /**
         * optional uint32 lane_selection_flags = 75;
         */
        public boolean hasLaneSelectionFlags() {
          return ((bitField2_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 lane_selection_flags = 75;
         */
        public int getLaneSelectionFlags() {
          return laneSelectionFlags_;
        }
        /**
         * optional uint32 lane_selection_flags = 75;
         */
        public Builder setLaneSelectionFlags(int value) {
          bitField2_ |= 0x00000010;
          laneSelectionFlags_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 lane_selection_flags = 75;
         */
        public Builder clearLaneSelectionFlags() {
          bitField2_ = (bitField2_ & ~0x00000010);
          laneSelectionFlags_ = 0;
          onChanged();
          return this;
        }

        private int bountyRunes_ ;
        /**
         * optional uint32 bounty_runes = 77;
         */
        public boolean hasBountyRunes() {
          return ((bitField2_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 bounty_runes = 77;
         */
        public int getBountyRunes() {
          return bountyRunes_;
        }
        /**
         * optional uint32 bounty_runes = 77;
         */
        public Builder setBountyRunes(int value) {
          bitField2_ |= 0x00000020;
          bountyRunes_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 bounty_runes = 77;
         */
        public Builder clearBountyRunes() {
          bitField2_ = (bitField2_ & ~0x00000020);
          bountyRunes_ = 0;
          onChanged();
          return this;
        }

        private int outpostsCaptured_ ;
        /**
         * optional uint32 outposts_captured = 78;
         */
        public boolean hasOutpostsCaptured() {
          return ((bitField2_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 outposts_captured = 78;
         */
        public int getOutpostsCaptured() {
          return outpostsCaptured_;
        }
        /**
         * optional uint32 outposts_captured = 78;
         */
        public Builder setOutpostsCaptured(int value) {
          bitField2_ |= 0x00000040;
          outpostsCaptured_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 outposts_captured = 78;
         */
        public Builder clearOutpostsCaptured() {
          bitField2_ = (bitField2_ & ~0x00000040);
          outpostsCaptured_ = 0;
          onChanged();
          return this;
        }

        private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM teamNumber_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM.DOTA_GC_TEAM_GOOD_GUYS;
        /**
         * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
         */
        public boolean hasTeamNumber() {
          return ((bitField2_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM getTeamNumber() {
          return teamNumber_;
        }
        /**
         * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
         */
        public Builder setTeamNumber(skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField2_ |= 0x00000080;
          teamNumber_ = value;
          onChanged();
          return this;
        }
        /**
         * optional .DOTA_GC_TEAM team_number = 80 [default = DOTA_GC_TEAM_GOOD_GUYS];
         */
        public Builder clearTeamNumber() {
          bitField2_ = (bitField2_ & ~0x00000080);
          teamNumber_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GC_TEAM.DOTA_GC_TEAM_GOOD_GUYS;
          onChanged();
          return this;
        }

        private int teamSlot_ ;
        /**
         * optional uint32 team_slot = 81;
         */
        public boolean hasTeamSlot() {
          return ((bitField2_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional uint32 team_slot = 81;
         */
        public int getTeamSlot() {
          return teamSlot_;
        }
        /**
         * optional uint32 team_slot = 81;
         */
        public Builder setTeamSlot(int value) {
          bitField2_ |= 0x00000100;
          teamSlot_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 team_slot = 81;
         */
        public Builder clearTeamSlot() {
          bitField2_ = (bitField2_ & ~0x00000100);
          teamSlot_ = 0;
          onChanged();
          return this;
        }

        private int selectedFacet_ ;
        /**
         * optional uint32 selected_facet = 82;
         */
        public boolean hasSelectedFacet() {
          return ((bitField2_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 selected_facet = 82;
         */
        public int getSelectedFacet() {
          return selectedFacet_;
        }
        /**
         * optional uint32 selected_facet = 82;
         */
        public Builder setSelectedFacet(int value) {
          bitField2_ |= 0x00000200;
          selectedFacet_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 selected_facet = 82;
         */
        public Builder clearSelectedFacet() {
          bitField2_ = (bitField2_ & ~0x00000200);
          selectedFacet_ = 0;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.Player)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.Player)
    }

    public interface BroadcasterInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.BroadcasterInfo)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 account_id = 1;
       */
      boolean hasAccountId();
      /**
       * optional uint32 account_id = 1;
       */
      int getAccountId();

      /**
       * optional string name = 2;
       */
      boolean hasName();
      /**
       * optional string name = 2;
       */
      java.lang.String getName();
      /**
       * optional string name = 2;
       */
      com.google.protobuf.ByteString
          getNameBytes();
    }
    /**
     * Protobuf type {@code CMsgDOTAMatch.BroadcasterInfo}
     */
    public static final class BroadcasterInfo extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.BroadcasterInfo)
        BroadcasterInfoOrBuilder {
      // Use BroadcasterInfo.newBuilder() to construct.
      private BroadcasterInfo(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private BroadcasterInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public BroadcasterInfo getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private BroadcasterInfo(
          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;
                accountId_ = input.readUInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                name_ = bs;
                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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder.class);
      }

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

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

      private int bitField0_;
      public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
      private int accountId_;
      /**
       * optional uint32 account_id = 1;
       */
      public boolean hasAccountId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 account_id = 1;
       */
      public int getAccountId() {
        return accountId_;
      }

      public static final int NAME_FIELD_NUMBER = 2;
      private java.lang.Object name_;
      /**
       * optional string name = 2;
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string name = 2;
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        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()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * optional string name = 2;
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private void initFields() {
        accountId_ = 0;
        name_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getNameBytes());
        }
        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
            .computeUInt32Size(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getNameBytes());
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo 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 CMsgDOTAMatch.BroadcasterInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.BroadcasterInfo)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.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();
          accountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.accountId_ = accountId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.name_ = name_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.getDefaultInstance()) return this;
          if (other.hasAccountId()) {
            setAccountId(other.getAccountId());
          }
          if (other.hasName()) {
            bitField0_ |= 0x00000002;
            name_ = other.name_;
            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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int accountId_ ;
        /**
         * optional uint32 account_id = 1;
         */
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 account_id = 1;
         */
        public int getAccountId() {
          return accountId_;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder setAccountId(int value) {
          bitField0_ |= 0x00000001;
          accountId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder clearAccountId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          accountId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object name_ = "";
        /**
         * optional string name = 2;
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional string name = 2;
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string name = 2;
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string name = 2;
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string name = 2;
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * optional string name = 2;
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          name_ = value;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.BroadcasterInfo)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.BroadcasterInfo)
    }

    public interface BroadcasterChannelOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.BroadcasterChannel)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional string country_code = 1;
       */
      boolean hasCountryCode();
      /**
       * optional string country_code = 1;
       */
      java.lang.String getCountryCode();
      /**
       * optional string country_code = 1;
       */
      com.google.protobuf.ByteString
          getCountryCodeBytes();

      /**
       * optional string description = 2;
       */
      boolean hasDescription();
      /**
       * optional string description = 2;
       */
      java.lang.String getDescription();
      /**
       * optional string description = 2;
       */
      com.google.protobuf.ByteString
          getDescriptionBytes();

      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      java.util.List 
          getBroadcasterInfosList();
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo getBroadcasterInfos(int index);
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      int getBroadcasterInfosCount();
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      java.util.List 
          getBroadcasterInfosOrBuilderList();
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder getBroadcasterInfosOrBuilder(
          int index);

      /**
       * optional string language_code = 4;
       */
      boolean hasLanguageCode();
      /**
       * optional string language_code = 4;
       */
      java.lang.String getLanguageCode();
      /**
       * optional string language_code = 4;
       */
      com.google.protobuf.ByteString
          getLanguageCodeBytes();
    }
    /**
     * Protobuf type {@code CMsgDOTAMatch.BroadcasterChannel}
     */
    public static final class BroadcasterChannel extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.BroadcasterChannel)
        BroadcasterChannelOrBuilder {
      // Use BroadcasterChannel.newBuilder() to construct.
      private BroadcasterChannel(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private BroadcasterChannel(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public BroadcasterChannel getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private BroadcasterChannel(
          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: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                countryCode_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                description_ = bs;
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  broadcasterInfos_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                broadcasterInfos_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.PARSER, extensionRegistry));
                break;
              }
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                languageCode_ = bs;
                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)) {
            broadcasterInfos_ = java.util.Collections.unmodifiableList(broadcasterInfos_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterChannel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder.class);
      }

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

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

      private int bitField0_;
      public static final int COUNTRY_CODE_FIELD_NUMBER = 1;
      private java.lang.Object countryCode_;
      /**
       * optional string country_code = 1;
       */
      public boolean hasCountryCode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional string country_code = 1;
       */
      public java.lang.String getCountryCode() {
        java.lang.Object ref = countryCode_;
        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()) {
            countryCode_ = s;
          }
          return s;
        }
      }
      /**
       * optional string country_code = 1;
       */
      public com.google.protobuf.ByteString
          getCountryCodeBytes() {
        java.lang.Object ref = countryCode_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          countryCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DESCRIPTION_FIELD_NUMBER = 2;
      private java.lang.Object description_;
      /**
       * optional string description = 2;
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string description = 2;
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        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()) {
            description_ = s;
          }
          return s;
        }
      }
      /**
       * optional string description = 2;
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int BROADCASTER_INFOS_FIELD_NUMBER = 3;
      private java.util.List broadcasterInfos_;
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      public java.util.List getBroadcasterInfosList() {
        return broadcasterInfos_;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      public java.util.List 
          getBroadcasterInfosOrBuilderList() {
        return broadcasterInfos_;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      public int getBroadcasterInfosCount() {
        return broadcasterInfos_.size();
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo getBroadcasterInfos(int index) {
        return broadcasterInfos_.get(index);
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder getBroadcasterInfosOrBuilder(
          int index) {
        return broadcasterInfos_.get(index);
      }

      public static final int LANGUAGE_CODE_FIELD_NUMBER = 4;
      private java.lang.Object languageCode_;
      /**
       * optional string language_code = 4;
       */
      public boolean hasLanguageCode() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string language_code = 4;
       */
      public java.lang.String getLanguageCode() {
        java.lang.Object ref = languageCode_;
        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()) {
            languageCode_ = s;
          }
          return s;
        }
      }
      /**
       * optional string language_code = 4;
       */
      public com.google.protobuf.ByteString
          getLanguageCodeBytes() {
        java.lang.Object ref = languageCode_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          languageCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private void initFields() {
        countryCode_ = "";
        description_ = "";
        broadcasterInfos_ = java.util.Collections.emptyList();
        languageCode_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getCountryCodeBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getDescriptionBytes());
        }
        for (int i = 0; i < broadcasterInfos_.size(); i++) {
          output.writeMessage(3, broadcasterInfos_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(4, getLanguageCodeBytes());
        }
        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, getCountryCodeBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getDescriptionBytes());
        }
        for (int i = 0; i < broadcasterInfos_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, broadcasterInfos_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getLanguageCodeBytes());
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel 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 CMsgDOTAMatch.BroadcasterChannel}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.BroadcasterChannel)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterChannel_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

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

        public Builder clear() {
          super.clear();
          countryCode_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          description_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (broadcasterInfosBuilder_ == null) {
            broadcasterInfos_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            broadcasterInfosBuilder_.clear();
          }
          languageCode_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.countryCode_ = countryCode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.description_ = description_;
          if (broadcasterInfosBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              broadcasterInfos_ = java.util.Collections.unmodifiableList(broadcasterInfos_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.broadcasterInfos_ = broadcasterInfos_;
          } else {
            result.broadcasterInfos_ = broadcasterInfosBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          result.languageCode_ = languageCode_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.getDefaultInstance()) return this;
          if (other.hasCountryCode()) {
            bitField0_ |= 0x00000001;
            countryCode_ = other.countryCode_;
            onChanged();
          }
          if (other.hasDescription()) {
            bitField0_ |= 0x00000002;
            description_ = other.description_;
            onChanged();
          }
          if (broadcasterInfosBuilder_ == null) {
            if (!other.broadcasterInfos_.isEmpty()) {
              if (broadcasterInfos_.isEmpty()) {
                broadcasterInfos_ = other.broadcasterInfos_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureBroadcasterInfosIsMutable();
                broadcasterInfos_.addAll(other.broadcasterInfos_);
              }
              onChanged();
            }
          } else {
            if (!other.broadcasterInfos_.isEmpty()) {
              if (broadcasterInfosBuilder_.isEmpty()) {
                broadcasterInfosBuilder_.dispose();
                broadcasterInfosBuilder_ = null;
                broadcasterInfos_ = other.broadcasterInfos_;
                bitField0_ = (bitField0_ & ~0x00000004);
                broadcasterInfosBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getBroadcasterInfosFieldBuilder() : null;
              } else {
                broadcasterInfosBuilder_.addAllMessages(other.broadcasterInfos_);
              }
            }
          }
          if (other.hasLanguageCode()) {
            bitField0_ |= 0x00000008;
            languageCode_ = other.languageCode_;
            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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object countryCode_ = "";
        /**
         * optional string country_code = 1;
         */
        public boolean hasCountryCode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional string country_code = 1;
         */
        public java.lang.String getCountryCode() {
          java.lang.Object ref = countryCode_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              countryCode_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string country_code = 1;
         */
        public com.google.protobuf.ByteString
            getCountryCodeBytes() {
          java.lang.Object ref = countryCode_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            countryCode_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string country_code = 1;
         */
        public Builder setCountryCode(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          countryCode_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string country_code = 1;
         */
        public Builder clearCountryCode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          countryCode_ = getDefaultInstance().getCountryCode();
          onChanged();
          return this;
        }
        /**
         * optional string country_code = 1;
         */
        public Builder setCountryCodeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          countryCode_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object description_ = "";
        /**
         * optional string description = 2;
         */
        public boolean hasDescription() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional string description = 2;
         */
        public java.lang.String getDescription() {
          java.lang.Object ref = description_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              description_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string description = 2;
         */
        public com.google.protobuf.ByteString
            getDescriptionBytes() {
          java.lang.Object ref = description_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            description_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string description = 2;
         */
        public Builder setDescription(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          description_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string description = 2;
         */
        public Builder clearDescription() {
          bitField0_ = (bitField0_ & ~0x00000002);
          description_ = getDefaultInstance().getDescription();
          onChanged();
          return this;
        }
        /**
         * optional string description = 2;
         */
        public Builder setDescriptionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          description_ = value;
          onChanged();
          return this;
        }

        private java.util.List broadcasterInfos_ =
          java.util.Collections.emptyList();
        private void ensureBroadcasterInfosIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            broadcasterInfos_ = new java.util.ArrayList(broadcasterInfos_);
            bitField0_ |= 0x00000004;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder> broadcasterInfosBuilder_;

        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public java.util.List getBroadcasterInfosList() {
          if (broadcasterInfosBuilder_ == null) {
            return java.util.Collections.unmodifiableList(broadcasterInfos_);
          } else {
            return broadcasterInfosBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public int getBroadcasterInfosCount() {
          if (broadcasterInfosBuilder_ == null) {
            return broadcasterInfos_.size();
          } else {
            return broadcasterInfosBuilder_.getCount();
          }
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo getBroadcasterInfos(int index) {
          if (broadcasterInfosBuilder_ == null) {
            return broadcasterInfos_.get(index);
          } else {
            return broadcasterInfosBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder setBroadcasterInfos(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo value) {
          if (broadcasterInfosBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.set(index, value);
            onChanged();
          } else {
            broadcasterInfosBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder setBroadcasterInfos(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder builderForValue) {
          if (broadcasterInfosBuilder_ == null) {
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.set(index, builderForValue.build());
            onChanged();
          } else {
            broadcasterInfosBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder addBroadcasterInfos(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo value) {
          if (broadcasterInfosBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.add(value);
            onChanged();
          } else {
            broadcasterInfosBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder addBroadcasterInfos(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo value) {
          if (broadcasterInfosBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.add(index, value);
            onChanged();
          } else {
            broadcasterInfosBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder addBroadcasterInfos(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder builderForValue) {
          if (broadcasterInfosBuilder_ == null) {
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.add(builderForValue.build());
            onChanged();
          } else {
            broadcasterInfosBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder addBroadcasterInfos(
            int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder builderForValue) {
          if (broadcasterInfosBuilder_ == null) {
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.add(index, builderForValue.build());
            onChanged();
          } else {
            broadcasterInfosBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder addAllBroadcasterInfos(
            java.lang.Iterable values) {
          if (broadcasterInfosBuilder_ == null) {
            ensureBroadcasterInfosIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, broadcasterInfos_);
            onChanged();
          } else {
            broadcasterInfosBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder clearBroadcasterInfos() {
          if (broadcasterInfosBuilder_ == null) {
            broadcasterInfos_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            broadcasterInfosBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public Builder removeBroadcasterInfos(int index) {
          if (broadcasterInfosBuilder_ == null) {
            ensureBroadcasterInfosIsMutable();
            broadcasterInfos_.remove(index);
            onChanged();
          } else {
            broadcasterInfosBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder getBroadcasterInfosBuilder(
            int index) {
          return getBroadcasterInfosFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder getBroadcasterInfosOrBuilder(
            int index) {
          if (broadcasterInfosBuilder_ == null) {
            return broadcasterInfos_.get(index);  } else {
            return broadcasterInfosBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public java.util.List 
             getBroadcasterInfosOrBuilderList() {
          if (broadcasterInfosBuilder_ != null) {
            return broadcasterInfosBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(broadcasterInfos_);
          }
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder addBroadcasterInfosBuilder() {
          return getBroadcasterInfosFieldBuilder().addBuilder(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder addBroadcasterInfosBuilder(
            int index) {
          return getBroadcasterInfosFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.getDefaultInstance());
        }
        /**
         * repeated .CMsgDOTAMatch.BroadcasterInfo broadcaster_infos = 3;
         */
        public java.util.List 
             getBroadcasterInfosBuilderList() {
          return getBroadcasterInfosFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder> 
            getBroadcasterInfosFieldBuilder() {
          if (broadcasterInfosBuilder_ == null) {
            broadcasterInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfo.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterInfoOrBuilder>(
                    broadcasterInfos_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            broadcasterInfos_ = null;
          }
          return broadcasterInfosBuilder_;
        }

        private java.lang.Object languageCode_ = "";
        /**
         * optional string language_code = 4;
         */
        public boolean hasLanguageCode() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional string language_code = 4;
         */
        public java.lang.String getLanguageCode() {
          java.lang.Object ref = languageCode_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              languageCode_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string language_code = 4;
         */
        public com.google.protobuf.ByteString
            getLanguageCodeBytes() {
          java.lang.Object ref = languageCode_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            languageCode_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string language_code = 4;
         */
        public Builder setLanguageCode(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          languageCode_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string language_code = 4;
         */
        public Builder clearLanguageCode() {
          bitField0_ = (bitField0_ & ~0x00000008);
          languageCode_ = getDefaultInstance().getLanguageCode();
          onChanged();
          return this;
        }
        /**
         * optional string language_code = 4;
         */
        public Builder setLanguageCodeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          languageCode_ = value;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.BroadcasterChannel)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.BroadcasterChannel)
    }

    public interface CoachOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.Coach)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 account_id = 1;
       */
      boolean hasAccountId();
      /**
       * optional uint32 account_id = 1;
       */
      int getAccountId();

      /**
       * optional string coach_name = 2;
       */
      boolean hasCoachName();
      /**
       * optional string coach_name = 2;
       */
      java.lang.String getCoachName();
      /**
       * optional string coach_name = 2;
       */
      com.google.protobuf.ByteString
          getCoachNameBytes();

      /**
       * optional uint32 coach_rating = 3;
       */
      boolean hasCoachRating();
      /**
       * optional uint32 coach_rating = 3;
       */
      int getCoachRating();

      /**
       * optional uint32 coach_team = 4;
       */
      boolean hasCoachTeam();
      /**
       * optional uint32 coach_team = 4;
       */
      int getCoachTeam();

      /**
       * optional uint64 coach_party_id = 5;
       */
      boolean hasCoachPartyId();
      /**
       * optional uint64 coach_party_id = 5;
       */
      long getCoachPartyId();

      /**
       * optional bool is_private_coach = 6;
       */
      boolean hasIsPrivateCoach();
      /**
       * optional bool is_private_coach = 6;
       */
      boolean getIsPrivateCoach();
    }
    /**
     * Protobuf type {@code CMsgDOTAMatch.Coach}
     */
    public static final class Coach extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.Coach)
        CoachOrBuilder {
      // Use Coach.newBuilder() to construct.
      private Coach(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Coach(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public Coach getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Coach(
          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;
                accountId_ = input.readUInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                coachName_ = bs;
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                coachRating_ = input.readUInt32();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                coachTeam_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                coachPartyId_ = input.readUInt64();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                isPrivateCoach_ = input.readBool();
                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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Coach_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Coach_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder.class);
      }

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

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

      private int bitField0_;
      public static final int ACCOUNT_ID_FIELD_NUMBER = 1;
      private int accountId_;
      /**
       * optional uint32 account_id = 1;
       */
      public boolean hasAccountId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 account_id = 1;
       */
      public int getAccountId() {
        return accountId_;
      }

      public static final int COACH_NAME_FIELD_NUMBER = 2;
      private java.lang.Object coachName_;
      /**
       * optional string coach_name = 2;
       */
      public boolean hasCoachName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string coach_name = 2;
       */
      public java.lang.String getCoachName() {
        java.lang.Object ref = coachName_;
        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()) {
            coachName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string coach_name = 2;
       */
      public com.google.protobuf.ByteString
          getCoachNameBytes() {
        java.lang.Object ref = coachName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          coachName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int COACH_RATING_FIELD_NUMBER = 3;
      private int coachRating_;
      /**
       * optional uint32 coach_rating = 3;
       */
      public boolean hasCoachRating() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 coach_rating = 3;
       */
      public int getCoachRating() {
        return coachRating_;
      }

      public static final int COACH_TEAM_FIELD_NUMBER = 4;
      private int coachTeam_;
      /**
       * optional uint32 coach_team = 4;
       */
      public boolean hasCoachTeam() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 coach_team = 4;
       */
      public int getCoachTeam() {
        return coachTeam_;
      }

      public static final int COACH_PARTY_ID_FIELD_NUMBER = 5;
      private long coachPartyId_;
      /**
       * optional uint64 coach_party_id = 5;
       */
      public boolean hasCoachPartyId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint64 coach_party_id = 5;
       */
      public long getCoachPartyId() {
        return coachPartyId_;
      }

      public static final int IS_PRIVATE_COACH_FIELD_NUMBER = 6;
      private boolean isPrivateCoach_;
      /**
       * optional bool is_private_coach = 6;
       */
      public boolean hasIsPrivateCoach() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional bool is_private_coach = 6;
       */
      public boolean getIsPrivateCoach() {
        return isPrivateCoach_;
      }

      private void initFields() {
        accountId_ = 0;
        coachName_ = "";
        coachRating_ = 0;
        coachTeam_ = 0;
        coachPartyId_ = 0L;
        isPrivateCoach_ = false;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getCoachNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, coachRating_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, coachTeam_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt64(5, coachPartyId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBool(6, isPrivateCoach_);
        }
        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
            .computeUInt32Size(1, accountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getCoachNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, coachRating_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, coachTeam_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(5, coachPartyId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, isPrivateCoach_);
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach 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 CMsgDOTAMatch.Coach}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.Coach)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Coach_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Coach_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.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();
          accountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          coachName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          coachRating_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          coachTeam_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          coachPartyId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000010);
          isPrivateCoach_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_Coach_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.accountId_ = accountId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.coachName_ = coachName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.coachRating_ = coachRating_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.coachTeam_ = coachTeam_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.coachPartyId_ = coachPartyId_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.isPrivateCoach_ = isPrivateCoach_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.getDefaultInstance()) return this;
          if (other.hasAccountId()) {
            setAccountId(other.getAccountId());
          }
          if (other.hasCoachName()) {
            bitField0_ |= 0x00000002;
            coachName_ = other.coachName_;
            onChanged();
          }
          if (other.hasCoachRating()) {
            setCoachRating(other.getCoachRating());
          }
          if (other.hasCoachTeam()) {
            setCoachTeam(other.getCoachTeam());
          }
          if (other.hasCoachPartyId()) {
            setCoachPartyId(other.getCoachPartyId());
          }
          if (other.hasIsPrivateCoach()) {
            setIsPrivateCoach(other.getIsPrivateCoach());
          }
          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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int accountId_ ;
        /**
         * optional uint32 account_id = 1;
         */
        public boolean hasAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 account_id = 1;
         */
        public int getAccountId() {
          return accountId_;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder setAccountId(int value) {
          bitField0_ |= 0x00000001;
          accountId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 account_id = 1;
         */
        public Builder clearAccountId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          accountId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object coachName_ = "";
        /**
         * optional string coach_name = 2;
         */
        public boolean hasCoachName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional string coach_name = 2;
         */
        public java.lang.String getCoachName() {
          java.lang.Object ref = coachName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              coachName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string coach_name = 2;
         */
        public com.google.protobuf.ByteString
            getCoachNameBytes() {
          java.lang.Object ref = coachName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            coachName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string coach_name = 2;
         */
        public Builder setCoachName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          coachName_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string coach_name = 2;
         */
        public Builder clearCoachName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          coachName_ = getDefaultInstance().getCoachName();
          onChanged();
          return this;
        }
        /**
         * optional string coach_name = 2;
         */
        public Builder setCoachNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          coachName_ = value;
          onChanged();
          return this;
        }

        private int coachRating_ ;
        /**
         * optional uint32 coach_rating = 3;
         */
        public boolean hasCoachRating() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 coach_rating = 3;
         */
        public int getCoachRating() {
          return coachRating_;
        }
        /**
         * optional uint32 coach_rating = 3;
         */
        public Builder setCoachRating(int value) {
          bitField0_ |= 0x00000004;
          coachRating_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 coach_rating = 3;
         */
        public Builder clearCoachRating() {
          bitField0_ = (bitField0_ & ~0x00000004);
          coachRating_ = 0;
          onChanged();
          return this;
        }

        private int coachTeam_ ;
        /**
         * optional uint32 coach_team = 4;
         */
        public boolean hasCoachTeam() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 coach_team = 4;
         */
        public int getCoachTeam() {
          return coachTeam_;
        }
        /**
         * optional uint32 coach_team = 4;
         */
        public Builder setCoachTeam(int value) {
          bitField0_ |= 0x00000008;
          coachTeam_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 coach_team = 4;
         */
        public Builder clearCoachTeam() {
          bitField0_ = (bitField0_ & ~0x00000008);
          coachTeam_ = 0;
          onChanged();
          return this;
        }

        private long coachPartyId_ ;
        /**
         * optional uint64 coach_party_id = 5;
         */
        public boolean hasCoachPartyId() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint64 coach_party_id = 5;
         */
        public long getCoachPartyId() {
          return coachPartyId_;
        }
        /**
         * optional uint64 coach_party_id = 5;
         */
        public Builder setCoachPartyId(long value) {
          bitField0_ |= 0x00000010;
          coachPartyId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint64 coach_party_id = 5;
         */
        public Builder clearCoachPartyId() {
          bitField0_ = (bitField0_ & ~0x00000010);
          coachPartyId_ = 0L;
          onChanged();
          return this;
        }

        private boolean isPrivateCoach_ ;
        /**
         * optional bool is_private_coach = 6;
         */
        public boolean hasIsPrivateCoach() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional bool is_private_coach = 6;
         */
        public boolean getIsPrivateCoach() {
          return isPrivateCoach_;
        }
        /**
         * optional bool is_private_coach = 6;
         */
        public Builder setIsPrivateCoach(boolean value) {
          bitField0_ |= 0x00000020;
          isPrivateCoach_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool is_private_coach = 6;
         */
        public Builder clearIsPrivateCoach() {
          bitField0_ = (bitField0_ & ~0x00000020);
          isPrivateCoach_ = false;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.Coach)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.Coach)
    }

    public interface CustomGameDataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgDOTAMatch.CustomGameData)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint64 custom_game_id = 1;
       */
      boolean hasCustomGameId();
      /**
       * optional uint64 custom_game_id = 1;
       */
      long getCustomGameId();

      /**
       * optional string map_name = 2;
       */
      boolean hasMapName();
      /**
       * optional string map_name = 2;
       */
      java.lang.String getMapName();
      /**
       * optional string map_name = 2;
       */
      com.google.protobuf.ByteString
          getMapNameBytes();
    }
    /**
     * Protobuf type {@code CMsgDOTAMatch.CustomGameData}
     */
    public static final class CustomGameData extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgDOTAMatch.CustomGameData)
        CustomGameDataOrBuilder {
      // Use CustomGameData.newBuilder() to construct.
      private CustomGameData(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private CustomGameData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public CustomGameData getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private CustomGameData(
          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;
                customGameId_ = input.readUInt64();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                mapName_ = bs;
                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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_CustomGameData_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_CustomGameData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder.class);
      }

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

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

      private int bitField0_;
      public static final int CUSTOM_GAME_ID_FIELD_NUMBER = 1;
      private long customGameId_;
      /**
       * optional uint64 custom_game_id = 1;
       */
      public boolean hasCustomGameId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint64 custom_game_id = 1;
       */
      public long getCustomGameId() {
        return customGameId_;
      }

      public static final int MAP_NAME_FIELD_NUMBER = 2;
      private java.lang.Object mapName_;
      /**
       * optional string map_name = 2;
       */
      public boolean hasMapName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional string map_name = 2;
       */
      public java.lang.String getMapName() {
        java.lang.Object ref = mapName_;
        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()) {
            mapName_ = s;
          }
          return s;
        }
      }
      /**
       * optional string map_name = 2;
       */
      public com.google.protobuf.ByteString
          getMapNameBytes() {
        java.lang.Object ref = mapName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mapName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private void initFields() {
        customGameId_ = 0L;
        mapName_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt64(1, customGameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getMapNameBytes());
        }
        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
            .computeUInt64Size(1, customGameId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getMapNameBytes());
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData 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 CMsgDOTAMatch.CustomGameData}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch.CustomGameData)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_CustomGameData_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_CustomGameData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.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();
          customGameId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          mapName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_CustomGameData_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.customGameId_ = customGameId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.mapName_ = mapName_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance()) return this;
          if (other.hasCustomGameId()) {
            setCustomGameId(other.getCustomGameId());
          }
          if (other.hasMapName()) {
            bitField0_ |= 0x00000002;
            mapName_ = other.mapName_;
            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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private long customGameId_ ;
        /**
         * optional uint64 custom_game_id = 1;
         */
        public boolean hasCustomGameId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint64 custom_game_id = 1;
         */
        public long getCustomGameId() {
          return customGameId_;
        }
        /**
         * optional uint64 custom_game_id = 1;
         */
        public Builder setCustomGameId(long value) {
          bitField0_ |= 0x00000001;
          customGameId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint64 custom_game_id = 1;
         */
        public Builder clearCustomGameId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          customGameId_ = 0L;
          onChanged();
          return this;
        }

        private java.lang.Object mapName_ = "";
        /**
         * optional string map_name = 2;
         */
        public boolean hasMapName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional string map_name = 2;
         */
        public java.lang.String getMapName() {
          java.lang.Object ref = mapName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              mapName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * optional string map_name = 2;
         */
        public com.google.protobuf.ByteString
            getMapNameBytes() {
          java.lang.Object ref = mapName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            mapName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * optional string map_name = 2;
         */
        public Builder setMapName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mapName_ = value;
          onChanged();
          return this;
        }
        /**
         * optional string map_name = 2;
         */
        public Builder clearMapName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          mapName_ = getDefaultInstance().getMapName();
          onChanged();
          return this;
        }
        /**
         * optional string map_name = 2;
         */
        public Builder setMapNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          mapName_ = value;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch.CustomGameData)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgDOTAMatch.CustomGameData)
    }

    private int bitField0_;
    private int bitField1_;
    public static final int DURATION_FIELD_NUMBER = 3;
    private int duration_;
    /**
     * optional uint32 duration = 3;
     */
    public boolean hasDuration() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 duration = 3;
     */
    public int getDuration() {
      return duration_;
    }

    public static final int STARTTIME_FIELD_NUMBER = 4;
    private int starttime_;
    /**
     * optional fixed32 starttime = 4;
     */
    public boolean hasStarttime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional fixed32 starttime = 4;
     */
    public int getStarttime() {
      return starttime_;
    }

    public static final int PLAYERS_FIELD_NUMBER = 5;
    private java.util.List players_;
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    public java.util.List getPlayersList() {
      return players_;
    }
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    public java.util.List 
        getPlayersOrBuilderList() {
      return players_;
    }
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    public int getPlayersCount() {
      return players_.size();
    }
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player getPlayers(int index) {
      return players_.get(index);
    }
    /**
     * repeated .CMsgDOTAMatch.Player players = 5;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder getPlayersOrBuilder(
        int index) {
      return players_.get(index);
    }

    public static final int MATCH_ID_FIELD_NUMBER = 6;
    private long matchId_;
    /**
     * optional uint64 match_id = 6;
     */
    public boolean hasMatchId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint64 match_id = 6;
     */
    public long getMatchId() {
      return matchId_;
    }

    public static final int TOWER_STATUS_FIELD_NUMBER = 8;
    private java.util.List towerStatus_;
    /**
     * repeated uint32 tower_status = 8;
     */
    public java.util.List
        getTowerStatusList() {
      return towerStatus_;
    }
    /**
     * repeated uint32 tower_status = 8;
     */
    public int getTowerStatusCount() {
      return towerStatus_.size();
    }
    /**
     * repeated uint32 tower_status = 8;
     */
    public int getTowerStatus(int index) {
      return towerStatus_.get(index);
    }

    public static final int BARRACKS_STATUS_FIELD_NUMBER = 9;
    private java.util.List barracksStatus_;
    /**
     * repeated uint32 barracks_status = 9;
     */
    public java.util.List
        getBarracksStatusList() {
      return barracksStatus_;
    }
    /**
     * repeated uint32 barracks_status = 9;
     */
    public int getBarracksStatusCount() {
      return barracksStatus_.size();
    }
    /**
     * repeated uint32 barracks_status = 9;
     */
    public int getBarracksStatus(int index) {
      return barracksStatus_.get(index);
    }

    public static final int CLUSTER_FIELD_NUMBER = 10;
    private int cluster_;
    /**
     * optional uint32 cluster = 10;
     */
    public boolean hasCluster() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 cluster = 10;
     */
    public int getCluster() {
      return cluster_;
    }

    public static final int FIRST_BLOOD_TIME_FIELD_NUMBER = 12;
    private int firstBloodTime_;
    /**
     * optional uint32 first_blood_time = 12;
     */
    public boolean hasFirstBloodTime() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 first_blood_time = 12;
     */
    public int getFirstBloodTime() {
      return firstBloodTime_;
    }

    public static final int REPLAY_SALT_FIELD_NUMBER = 13;
    private int replaySalt_;
    /**
     * optional fixed32 replay_salt = 13;
     */
    public boolean hasReplaySalt() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional fixed32 replay_salt = 13;
     */
    public int getReplaySalt() {
      return replaySalt_;
    }

    public static final int SERVER_IP_FIELD_NUMBER = 14;
    private int serverIp_;
    /**
     * optional fixed32 server_ip = 14;
     */
    public boolean hasServerIp() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional fixed32 server_ip = 14;
     */
    public int getServerIp() {
      return serverIp_;
    }

    public static final int SERVER_PORT_FIELD_NUMBER = 15;
    private int serverPort_;
    /**
     * optional uint32 server_port = 15;
     */
    public boolean hasServerPort() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional uint32 server_port = 15;
     */
    public int getServerPort() {
      return serverPort_;
    }

    public static final int LOBBY_TYPE_FIELD_NUMBER = 16;
    private int lobbyType_;
    /**
     * optional uint32 lobby_type = 16;
     */
    public boolean hasLobbyType() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * optional uint32 lobby_type = 16;
     */
    public int getLobbyType() {
      return lobbyType_;
    }

    public static final int HUMAN_PLAYERS_FIELD_NUMBER = 17;
    private int humanPlayers_;
    /**
     * optional uint32 human_players = 17;
     */
    public boolean hasHumanPlayers() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * optional uint32 human_players = 17;
     */
    public int getHumanPlayers() {
      return humanPlayers_;
    }

    public static final int AVERAGE_SKILL_FIELD_NUMBER = 18;
    private int averageSkill_;
    /**
     * optional uint32 average_skill = 18;
     */
    public boolean hasAverageSkill() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * optional uint32 average_skill = 18;
     */
    public int getAverageSkill() {
      return averageSkill_;
    }

    public static final int GAME_BALANCE_FIELD_NUMBER = 19;
    private float gameBalance_;
    /**
     * optional float game_balance = 19;
     */
    public boolean hasGameBalance() {
      return ((bitField0_ & 0x00000800) == 0x00000800);
    }
    /**
     * optional float game_balance = 19;
     */
    public float getGameBalance() {
      return gameBalance_;
    }

    public static final int RADIANT_TEAM_ID_FIELD_NUMBER = 20;
    private int radiantTeamId_;
    /**
     * optional uint32 radiant_team_id = 20;
     */
    public boolean hasRadiantTeamId() {
      return ((bitField0_ & 0x00001000) == 0x00001000);
    }
    /**
     * optional uint32 radiant_team_id = 20;
     */
    public int getRadiantTeamId() {
      return radiantTeamId_;
    }

    public static final int DIRE_TEAM_ID_FIELD_NUMBER = 21;
    private int direTeamId_;
    /**
     * optional uint32 dire_team_id = 21;
     */
    public boolean hasDireTeamId() {
      return ((bitField0_ & 0x00002000) == 0x00002000);
    }
    /**
     * optional uint32 dire_team_id = 21;
     */
    public int getDireTeamId() {
      return direTeamId_;
    }

    public static final int LEAGUEID_FIELD_NUMBER = 22;
    private int leagueid_;
    /**
     * optional uint32 leagueid = 22;
     */
    public boolean hasLeagueid() {
      return ((bitField0_ & 0x00004000) == 0x00004000);
    }
    /**
     * optional uint32 leagueid = 22;
     */
    public int getLeagueid() {
      return leagueid_;
    }

    public static final int RADIANT_TEAM_NAME_FIELD_NUMBER = 23;
    private java.lang.Object radiantTeamName_;
    /**
     * optional string radiant_team_name = 23;
     */
    public boolean hasRadiantTeamName() {
      return ((bitField0_ & 0x00008000) == 0x00008000);
    }
    /**
     * optional string radiant_team_name = 23;
     */
    public java.lang.String getRadiantTeamName() {
      java.lang.Object ref = radiantTeamName_;
      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()) {
          radiantTeamName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string radiant_team_name = 23;
     */
    public com.google.protobuf.ByteString
        getRadiantTeamNameBytes() {
      java.lang.Object ref = radiantTeamName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        radiantTeamName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRE_TEAM_NAME_FIELD_NUMBER = 24;
    private java.lang.Object direTeamName_;
    /**
     * optional string dire_team_name = 24;
     */
    public boolean hasDireTeamName() {
      return ((bitField0_ & 0x00010000) == 0x00010000);
    }
    /**
     * optional string dire_team_name = 24;
     */
    public java.lang.String getDireTeamName() {
      java.lang.Object ref = direTeamName_;
      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()) {
          direTeamName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string dire_team_name = 24;
     */
    public com.google.protobuf.ByteString
        getDireTeamNameBytes() {
      java.lang.Object ref = direTeamName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        direTeamName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RADIANT_TEAM_LOGO_FIELD_NUMBER = 25;
    private long radiantTeamLogo_;
    /**
     * optional uint64 radiant_team_logo = 25;
     */
    public boolean hasRadiantTeamLogo() {
      return ((bitField0_ & 0x00020000) == 0x00020000);
    }
    /**
     * optional uint64 radiant_team_logo = 25;
     */
    public long getRadiantTeamLogo() {
      return radiantTeamLogo_;
    }

    public static final int DIRE_TEAM_LOGO_FIELD_NUMBER = 26;
    private long direTeamLogo_;
    /**
     * optional uint64 dire_team_logo = 26;
     */
    public boolean hasDireTeamLogo() {
      return ((bitField0_ & 0x00040000) == 0x00040000);
    }
    /**
     * optional uint64 dire_team_logo = 26;
     */
    public long getDireTeamLogo() {
      return direTeamLogo_;
    }

    public static final int RADIANT_TEAM_LOGO_URL_FIELD_NUMBER = 54;
    private java.lang.Object radiantTeamLogoUrl_;
    /**
     * optional string radiant_team_logo_url = 54;
     */
    public boolean hasRadiantTeamLogoUrl() {
      return ((bitField0_ & 0x00080000) == 0x00080000);
    }
    /**
     * optional string radiant_team_logo_url = 54;
     */
    public java.lang.String getRadiantTeamLogoUrl() {
      java.lang.Object ref = radiantTeamLogoUrl_;
      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()) {
          radiantTeamLogoUrl_ = s;
        }
        return s;
      }
    }
    /**
     * optional string radiant_team_logo_url = 54;
     */
    public com.google.protobuf.ByteString
        getRadiantTeamLogoUrlBytes() {
      java.lang.Object ref = radiantTeamLogoUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        radiantTeamLogoUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRE_TEAM_LOGO_URL_FIELD_NUMBER = 55;
    private java.lang.Object direTeamLogoUrl_;
    /**
     * optional string dire_team_logo_url = 55;
     */
    public boolean hasDireTeamLogoUrl() {
      return ((bitField0_ & 0x00100000) == 0x00100000);
    }
    /**
     * optional string dire_team_logo_url = 55;
     */
    public java.lang.String getDireTeamLogoUrl() {
      java.lang.Object ref = direTeamLogoUrl_;
      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()) {
          direTeamLogoUrl_ = s;
        }
        return s;
      }
    }
    /**
     * optional string dire_team_logo_url = 55;
     */
    public com.google.protobuf.ByteString
        getDireTeamLogoUrlBytes() {
      java.lang.Object ref = direTeamLogoUrl_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        direTeamLogoUrl_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RADIANT_TEAM_COMPLETE_FIELD_NUMBER = 27;
    private int radiantTeamComplete_;
    /**
     * optional uint32 radiant_team_complete = 27;
     */
    public boolean hasRadiantTeamComplete() {
      return ((bitField0_ & 0x00200000) == 0x00200000);
    }
    /**
     * optional uint32 radiant_team_complete = 27;
     */
    public int getRadiantTeamComplete() {
      return radiantTeamComplete_;
    }

    public static final int DIRE_TEAM_COMPLETE_FIELD_NUMBER = 28;
    private int direTeamComplete_;
    /**
     * optional uint32 dire_team_complete = 28;
     */
    public boolean hasDireTeamComplete() {
      return ((bitField0_ & 0x00400000) == 0x00400000);
    }
    /**
     * optional uint32 dire_team_complete = 28;
     */
    public int getDireTeamComplete() {
      return direTeamComplete_;
    }

    public static final int POSITIVE_VOTES_FIELD_NUMBER = 29;
    private int positiveVotes_;
    /**
     * optional uint32 positive_votes = 29;
     */
    public boolean hasPositiveVotes() {
      return ((bitField0_ & 0x00800000) == 0x00800000);
    }
    /**
     * optional uint32 positive_votes = 29;
     */
    public int getPositiveVotes() {
      return positiveVotes_;
    }

    public static final int NEGATIVE_VOTES_FIELD_NUMBER = 30;
    private int negativeVotes_;
    /**
     * optional uint32 negative_votes = 30;
     */
    public boolean hasNegativeVotes() {
      return ((bitField0_ & 0x01000000) == 0x01000000);
    }
    /**
     * optional uint32 negative_votes = 30;
     */
    public int getNegativeVotes() {
      return negativeVotes_;
    }

    public static final int GAME_MODE_FIELD_NUMBER = 31;
    private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode gameMode_;
    /**
     * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
     */
    public boolean hasGameMode() {
      return ((bitField0_ & 0x02000000) == 0x02000000);
    }
    /**
     * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode getGameMode() {
      return gameMode_;
    }

    public static final int PICKS_BANS_FIELD_NUMBER = 32;
    private java.util.List picksBans_;
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    public java.util.List getPicksBansList() {
      return picksBans_;
    }
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    public java.util.List 
        getPicksBansOrBuilderList() {
      return picksBans_;
    }
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    public int getPicksBansCount() {
      return picksBans_.size();
    }
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent getPicksBans(int index) {
      return picksBans_.get(index);
    }
    /**
     * repeated .CMatchHeroSelectEvent picks_bans = 32;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder getPicksBansOrBuilder(
        int index) {
      return picksBans_.get(index);
    }

    public static final int MATCH_SEQ_NUM_FIELD_NUMBER = 33;
    private long matchSeqNum_;
    /**
     * optional uint64 match_seq_num = 33;
     */
    public boolean hasMatchSeqNum() {
      return ((bitField0_ & 0x04000000) == 0x04000000);
    }
    /**
     * optional uint64 match_seq_num = 33;
     */
    public long getMatchSeqNum() {
      return matchSeqNum_;
    }

    public static final int REPLAY_STATE_FIELD_NUMBER = 34;
    private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState replayState_;
    /**
     * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
     */
    public boolean hasReplayState() {
      return ((bitField0_ & 0x08000000) == 0x08000000);
    }
    /**
     * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState getReplayState() {
      return replayState_;
    }

    public static final int RADIANT_GUILD_ID_FIELD_NUMBER = 35;
    private int radiantGuildId_;
    /**
     * optional uint32 radiant_guild_id = 35;
     */
    public boolean hasRadiantGuildId() {
      return ((bitField0_ & 0x10000000) == 0x10000000);
    }
    /**
     * optional uint32 radiant_guild_id = 35;
     */
    public int getRadiantGuildId() {
      return radiantGuildId_;
    }

    public static final int DIRE_GUILD_ID_FIELD_NUMBER = 36;
    private int direGuildId_;
    /**
     * optional uint32 dire_guild_id = 36;
     */
    public boolean hasDireGuildId() {
      return ((bitField0_ & 0x20000000) == 0x20000000);
    }
    /**
     * optional uint32 dire_guild_id = 36;
     */
    public int getDireGuildId() {
      return direGuildId_;
    }

    public static final int RADIANT_TEAM_TAG_FIELD_NUMBER = 37;
    private java.lang.Object radiantTeamTag_;
    /**
     * optional string radiant_team_tag = 37;
     */
    public boolean hasRadiantTeamTag() {
      return ((bitField0_ & 0x40000000) == 0x40000000);
    }
    /**
     * optional string radiant_team_tag = 37;
     */
    public java.lang.String getRadiantTeamTag() {
      java.lang.Object ref = radiantTeamTag_;
      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()) {
          radiantTeamTag_ = s;
        }
        return s;
      }
    }
    /**
     * optional string radiant_team_tag = 37;
     */
    public com.google.protobuf.ByteString
        getRadiantTeamTagBytes() {
      java.lang.Object ref = radiantTeamTag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        radiantTeamTag_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DIRE_TEAM_TAG_FIELD_NUMBER = 38;
    private java.lang.Object direTeamTag_;
    /**
     * optional string dire_team_tag = 38;
     */
    public boolean hasDireTeamTag() {
      return ((bitField0_ & 0x80000000) == 0x80000000);
    }
    /**
     * optional string dire_team_tag = 38;
     */
    public java.lang.String getDireTeamTag() {
      java.lang.Object ref = direTeamTag_;
      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()) {
          direTeamTag_ = s;
        }
        return s;
      }
    }
    /**
     * optional string dire_team_tag = 38;
     */
    public com.google.protobuf.ByteString
        getDireTeamTagBytes() {
      java.lang.Object ref = direTeamTag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        direTeamTag_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERIES_ID_FIELD_NUMBER = 39;
    private int seriesId_;
    /**
     * optional uint32 series_id = 39;
     */
    public boolean hasSeriesId() {
      return ((bitField1_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 series_id = 39;
     */
    public int getSeriesId() {
      return seriesId_;
    }

    public static final int SERIES_TYPE_FIELD_NUMBER = 40;
    private int seriesType_;
    /**
     * optional uint32 series_type = 40;
     */
    public boolean hasSeriesType() {
      return ((bitField1_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional uint32 series_type = 40;
     */
    public int getSeriesType() {
      return seriesType_;
    }

    public static final int BROADCASTER_CHANNELS_FIELD_NUMBER = 43;
    private java.util.List broadcasterChannels_;
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    public java.util.List getBroadcasterChannelsList() {
      return broadcasterChannels_;
    }
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    public java.util.List 
        getBroadcasterChannelsOrBuilderList() {
      return broadcasterChannels_;
    }
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    public int getBroadcasterChannelsCount() {
      return broadcasterChannels_.size();
    }
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel getBroadcasterChannels(int index) {
      return broadcasterChannels_.get(index);
    }
    /**
     * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder getBroadcasterChannelsOrBuilder(
        int index) {
      return broadcasterChannels_.get(index);
    }

    public static final int ENGINE_FIELD_NUMBER = 44;
    private int engine_;
    /**
     * optional uint32 engine = 44;
     */
    public boolean hasEngine() {
      return ((bitField1_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional uint32 engine = 44;
     */
    public int getEngine() {
      return engine_;
    }

    public static final int CUSTOM_GAME_DATA_FIELD_NUMBER = 45;
    private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData customGameData_;
    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    public boolean hasCustomGameData() {
      return ((bitField1_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData getCustomGameData() {
      return customGameData_;
    }
    /**
     * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder getCustomGameDataOrBuilder() {
      return customGameData_;
    }

    public static final int MATCH_FLAGS_FIELD_NUMBER = 46;
    private int matchFlags_;
    /**
     * optional uint32 match_flags = 46;
     */
    public boolean hasMatchFlags() {
      return ((bitField1_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional uint32 match_flags = 46;
     */
    public int getMatchFlags() {
      return matchFlags_;
    }

    public static final int PRIVATE_METADATA_KEY_FIELD_NUMBER = 47;
    private int privateMetadataKey_;
    /**
     * optional fixed32 private_metadata_key = 47;
     */
    public boolean hasPrivateMetadataKey() {
      return ((bitField1_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional fixed32 private_metadata_key = 47;
     */
    public int getPrivateMetadataKey() {
      return privateMetadataKey_;
    }

    public static final int RADIANT_TEAM_SCORE_FIELD_NUMBER = 48;
    private int radiantTeamScore_;
    /**
     * optional uint32 radiant_team_score = 48;
     */
    public boolean hasRadiantTeamScore() {
      return ((bitField1_ & 0x00000040) == 0x00000040);
    }
    /**
     * optional uint32 radiant_team_score = 48;
     */
    public int getRadiantTeamScore() {
      return radiantTeamScore_;
    }

    public static final int DIRE_TEAM_SCORE_FIELD_NUMBER = 49;
    private int direTeamScore_;
    /**
     * optional uint32 dire_team_score = 49;
     */
    public boolean hasDireTeamScore() {
      return ((bitField1_ & 0x00000080) == 0x00000080);
    }
    /**
     * optional uint32 dire_team_score = 49;
     */
    public int getDireTeamScore() {
      return direTeamScore_;
    }

    public static final int MATCH_OUTCOME_FIELD_NUMBER = 50;
    private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome matchOutcome_;
    /**
     * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
     */
    public boolean hasMatchOutcome() {
      return ((bitField1_ & 0x00000100) == 0x00000100);
    }
    /**
     * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome getMatchOutcome() {
      return matchOutcome_;
    }

    public static final int TOURNAMENT_ID_FIELD_NUMBER = 51;
    private int tournamentId_;
    /**
     * optional uint32 tournament_id = 51;
     */
    public boolean hasTournamentId() {
      return ((bitField1_ & 0x00000200) == 0x00000200);
    }
    /**
     * optional uint32 tournament_id = 51;
     */
    public int getTournamentId() {
      return tournamentId_;
    }

    public static final int TOURNAMENT_ROUND_FIELD_NUMBER = 52;
    private int tournamentRound_;
    /**
     * optional uint32 tournament_round = 52;
     */
    public boolean hasTournamentRound() {
      return ((bitField1_ & 0x00000400) == 0x00000400);
    }
    /**
     * optional uint32 tournament_round = 52;
     */
    public int getTournamentRound() {
      return tournamentRound_;
    }

    public static final int PRE_GAME_DURATION_FIELD_NUMBER = 53;
    private int preGameDuration_;
    /**
     * optional uint32 pre_game_duration = 53;
     */
    public boolean hasPreGameDuration() {
      return ((bitField1_ & 0x00000800) == 0x00000800);
    }
    /**
     * optional uint32 pre_game_duration = 53;
     */
    public int getPreGameDuration() {
      return preGameDuration_;
    }

    public static final int COACHES_FIELD_NUMBER = 57;
    private java.util.List coaches_;
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    public java.util.List getCoachesList() {
      return coaches_;
    }
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    public java.util.List 
        getCoachesOrBuilderList() {
      return coaches_;
    }
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    public int getCoachesCount() {
      return coaches_.size();
    }
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach getCoaches(int index) {
      return coaches_.get(index);
    }
    /**
     * repeated .CMsgDOTAMatch.Coach coaches = 57;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder getCoachesOrBuilder(
        int index) {
      return coaches_.get(index);
    }

    private void initFields() {
      duration_ = 0;
      starttime_ = 0;
      players_ = java.util.Collections.emptyList();
      matchId_ = 0L;
      towerStatus_ = java.util.Collections.emptyList();
      barracksStatus_ = java.util.Collections.emptyList();
      cluster_ = 0;
      firstBloodTime_ = 0;
      replaySalt_ = 0;
      serverIp_ = 0;
      serverPort_ = 0;
      lobbyType_ = 0;
      humanPlayers_ = 0;
      averageSkill_ = 0;
      gameBalance_ = 0F;
      radiantTeamId_ = 0;
      direTeamId_ = 0;
      leagueid_ = 0;
      radiantTeamName_ = "";
      direTeamName_ = "";
      radiantTeamLogo_ = 0L;
      direTeamLogo_ = 0L;
      radiantTeamLogoUrl_ = "";
      direTeamLogoUrl_ = "";
      radiantTeamComplete_ = 0;
      direTeamComplete_ = 0;
      positiveVotes_ = 0;
      negativeVotes_ = 0;
      gameMode_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode.DOTA_GAMEMODE_NONE;
      picksBans_ = java.util.Collections.emptyList();
      matchSeqNum_ = 0L;
      replayState_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState.REPLAY_AVAILABLE;
      radiantGuildId_ = 0;
      direGuildId_ = 0;
      radiantTeamTag_ = "";
      direTeamTag_ = "";
      seriesId_ = 0;
      seriesType_ = 0;
      broadcasterChannels_ = java.util.Collections.emptyList();
      engine_ = 0;
      customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance();
      matchFlags_ = 0;
      privateMetadataKey_ = 0;
      radiantTeamScore_ = 0;
      direTeamScore_ = 0;
      matchOutcome_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome.k_EMatchOutcome_Unknown;
      tournamentId_ = 0;
      tournamentRound_ = 0;
      preGameDuration_ = 0;
      coaches_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(3, duration_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFixed32(4, starttime_);
      }
      for (int i = 0; i < players_.size(); i++) {
        output.writeMessage(5, players_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(6, matchId_);
      }
      for (int i = 0; i < towerStatus_.size(); i++) {
        output.writeUInt32(8, towerStatus_.get(i));
      }
      for (int i = 0; i < barracksStatus_.size(); i++) {
        output.writeUInt32(9, barracksStatus_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(10, cluster_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(12, firstBloodTime_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeFixed32(13, replaySalt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeFixed32(14, serverIp_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(15, serverPort_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeUInt32(16, lobbyType_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeUInt32(17, humanPlayers_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeUInt32(18, averageSkill_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeFloat(19, gameBalance_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeUInt32(20, radiantTeamId_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeUInt32(21, direTeamId_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        output.writeUInt32(22, leagueid_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        output.writeBytes(23, getRadiantTeamNameBytes());
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        output.writeBytes(24, getDireTeamNameBytes());
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        output.writeUInt64(25, radiantTeamLogo_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        output.writeUInt64(26, direTeamLogo_);
      }
      if (((bitField0_ & 0x00200000) == 0x00200000)) {
        output.writeUInt32(27, radiantTeamComplete_);
      }
      if (((bitField0_ & 0x00400000) == 0x00400000)) {
        output.writeUInt32(28, direTeamComplete_);
      }
      if (((bitField0_ & 0x00800000) == 0x00800000)) {
        output.writeUInt32(29, positiveVotes_);
      }
      if (((bitField0_ & 0x01000000) == 0x01000000)) {
        output.writeUInt32(30, negativeVotes_);
      }
      if (((bitField0_ & 0x02000000) == 0x02000000)) {
        output.writeEnum(31, gameMode_.getNumber());
      }
      for (int i = 0; i < picksBans_.size(); i++) {
        output.writeMessage(32, picksBans_.get(i));
      }
      if (((bitField0_ & 0x04000000) == 0x04000000)) {
        output.writeUInt64(33, matchSeqNum_);
      }
      if (((bitField0_ & 0x08000000) == 0x08000000)) {
        output.writeEnum(34, replayState_.getNumber());
      }
      if (((bitField0_ & 0x10000000) == 0x10000000)) {
        output.writeUInt32(35, radiantGuildId_);
      }
      if (((bitField0_ & 0x20000000) == 0x20000000)) {
        output.writeUInt32(36, direGuildId_);
      }
      if (((bitField0_ & 0x40000000) == 0x40000000)) {
        output.writeBytes(37, getRadiantTeamTagBytes());
      }
      if (((bitField0_ & 0x80000000) == 0x80000000)) {
        output.writeBytes(38, getDireTeamTagBytes());
      }
      if (((bitField1_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(39, seriesId_);
      }
      if (((bitField1_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(40, seriesType_);
      }
      for (int i = 0; i < broadcasterChannels_.size(); i++) {
        output.writeMessage(43, broadcasterChannels_.get(i));
      }
      if (((bitField1_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(44, engine_);
      }
      if (((bitField1_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(45, customGameData_);
      }
      if (((bitField1_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(46, matchFlags_);
      }
      if (((bitField1_ & 0x00000020) == 0x00000020)) {
        output.writeFixed32(47, privateMetadataKey_);
      }
      if (((bitField1_ & 0x00000040) == 0x00000040)) {
        output.writeUInt32(48, radiantTeamScore_);
      }
      if (((bitField1_ & 0x00000080) == 0x00000080)) {
        output.writeUInt32(49, direTeamScore_);
      }
      if (((bitField1_ & 0x00000100) == 0x00000100)) {
        output.writeEnum(50, matchOutcome_.getNumber());
      }
      if (((bitField1_ & 0x00000200) == 0x00000200)) {
        output.writeUInt32(51, tournamentId_);
      }
      if (((bitField1_ & 0x00000400) == 0x00000400)) {
        output.writeUInt32(52, tournamentRound_);
      }
      if (((bitField1_ & 0x00000800) == 0x00000800)) {
        output.writeUInt32(53, preGameDuration_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        output.writeBytes(54, getRadiantTeamLogoUrlBytes());
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        output.writeBytes(55, getDireTeamLogoUrlBytes());
      }
      for (int i = 0; i < coaches_.size(); i++) {
        output.writeMessage(57, coaches_.get(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
          .computeUInt32Size(3, duration_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(4, starttime_);
      }
      for (int i = 0; i < players_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, players_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, matchId_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < towerStatus_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(towerStatus_.get(i));
        }
        size += dataSize;
        size += 1 * getTowerStatusList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < barracksStatus_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(barracksStatus_.get(i));
        }
        size += dataSize;
        size += 1 * getBarracksStatusList().size();
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(10, cluster_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(12, firstBloodTime_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(13, replaySalt_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(14, serverIp_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(15, serverPort_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(16, lobbyType_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(17, humanPlayers_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(18, averageSkill_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(19, gameBalance_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(20, radiantTeamId_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(21, direTeamId_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(22, leagueid_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(23, getRadiantTeamNameBytes());
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(24, getDireTeamNameBytes());
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(25, radiantTeamLogo_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(26, direTeamLogo_);
      }
      if (((bitField0_ & 0x00200000) == 0x00200000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(27, radiantTeamComplete_);
      }
      if (((bitField0_ & 0x00400000) == 0x00400000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(28, direTeamComplete_);
      }
      if (((bitField0_ & 0x00800000) == 0x00800000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(29, positiveVotes_);
      }
      if (((bitField0_ & 0x01000000) == 0x01000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(30, negativeVotes_);
      }
      if (((bitField0_ & 0x02000000) == 0x02000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(31, gameMode_.getNumber());
      }
      for (int i = 0; i < picksBans_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(32, picksBans_.get(i));
      }
      if (((bitField0_ & 0x04000000) == 0x04000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(33, matchSeqNum_);
      }
      if (((bitField0_ & 0x08000000) == 0x08000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(34, replayState_.getNumber());
      }
      if (((bitField0_ & 0x10000000) == 0x10000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(35, radiantGuildId_);
      }
      if (((bitField0_ & 0x20000000) == 0x20000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(36, direGuildId_);
      }
      if (((bitField0_ & 0x40000000) == 0x40000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(37, getRadiantTeamTagBytes());
      }
      if (((bitField0_ & 0x80000000) == 0x80000000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(38, getDireTeamTagBytes());
      }
      if (((bitField1_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(39, seriesId_);
      }
      if (((bitField1_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(40, seriesType_);
      }
      for (int i = 0; i < broadcasterChannels_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(43, broadcasterChannels_.get(i));
      }
      if (((bitField1_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(44, engine_);
      }
      if (((bitField1_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(45, customGameData_);
      }
      if (((bitField1_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(46, matchFlags_);
      }
      if (((bitField1_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(47, privateMetadataKey_);
      }
      if (((bitField1_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(48, radiantTeamScore_);
      }
      if (((bitField1_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(49, direTeamScore_);
      }
      if (((bitField1_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(50, matchOutcome_.getNumber());
      }
      if (((bitField1_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(51, tournamentId_);
      }
      if (((bitField1_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(52, tournamentRound_);
      }
      if (((bitField1_ & 0x00000800) == 0x00000800)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(53, preGameDuration_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(54, getRadiantTeamLogoUrlBytes());
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(55, getDireTeamLogoUrlBytes());
      }
      for (int i = 0; i < coaches_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(57, coaches_.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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch 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 CMsgDOTAMatch}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMsgDOTAMatch)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatchOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        duration_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        starttime_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (playersBuilder_ == null) {
          players_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          playersBuilder_.clear();
        }
        matchId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        towerStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        barracksStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        cluster_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        firstBloodTime_ = 0;
        bitField0_ = (bitField0_ & ~0x00000080);
        replaySalt_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        serverIp_ = 0;
        bitField0_ = (bitField0_ & ~0x00000200);
        serverPort_ = 0;
        bitField0_ = (bitField0_ & ~0x00000400);
        lobbyType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000800);
        humanPlayers_ = 0;
        bitField0_ = (bitField0_ & ~0x00001000);
        averageSkill_ = 0;
        bitField0_ = (bitField0_ & ~0x00002000);
        gameBalance_ = 0F;
        bitField0_ = (bitField0_ & ~0x00004000);
        radiantTeamId_ = 0;
        bitField0_ = (bitField0_ & ~0x00008000);
        direTeamId_ = 0;
        bitField0_ = (bitField0_ & ~0x00010000);
        leagueid_ = 0;
        bitField0_ = (bitField0_ & ~0x00020000);
        radiantTeamName_ = "";
        bitField0_ = (bitField0_ & ~0x00040000);
        direTeamName_ = "";
        bitField0_ = (bitField0_ & ~0x00080000);
        radiantTeamLogo_ = 0L;
        bitField0_ = (bitField0_ & ~0x00100000);
        direTeamLogo_ = 0L;
        bitField0_ = (bitField0_ & ~0x00200000);
        radiantTeamLogoUrl_ = "";
        bitField0_ = (bitField0_ & ~0x00400000);
        direTeamLogoUrl_ = "";
        bitField0_ = (bitField0_ & ~0x00800000);
        radiantTeamComplete_ = 0;
        bitField0_ = (bitField0_ & ~0x01000000);
        direTeamComplete_ = 0;
        bitField0_ = (bitField0_ & ~0x02000000);
        positiveVotes_ = 0;
        bitField0_ = (bitField0_ & ~0x04000000);
        negativeVotes_ = 0;
        bitField0_ = (bitField0_ & ~0x08000000);
        gameMode_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode.DOTA_GAMEMODE_NONE;
        bitField0_ = (bitField0_ & ~0x10000000);
        if (picksBansBuilder_ == null) {
          picksBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x20000000);
        } else {
          picksBansBuilder_.clear();
        }
        matchSeqNum_ = 0L;
        bitField0_ = (bitField0_ & ~0x40000000);
        replayState_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState.REPLAY_AVAILABLE;
        bitField0_ = (bitField0_ & ~0x80000000);
        radiantGuildId_ = 0;
        bitField1_ = (bitField1_ & ~0x00000001);
        direGuildId_ = 0;
        bitField1_ = (bitField1_ & ~0x00000002);
        radiantTeamTag_ = "";
        bitField1_ = (bitField1_ & ~0x00000004);
        direTeamTag_ = "";
        bitField1_ = (bitField1_ & ~0x00000008);
        seriesId_ = 0;
        bitField1_ = (bitField1_ & ~0x00000010);
        seriesType_ = 0;
        bitField1_ = (bitField1_ & ~0x00000020);
        if (broadcasterChannelsBuilder_ == null) {
          broadcasterChannels_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000040);
        } else {
          broadcasterChannelsBuilder_.clear();
        }
        engine_ = 0;
        bitField1_ = (bitField1_ & ~0x00000080);
        if (customGameDataBuilder_ == null) {
          customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance();
        } else {
          customGameDataBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000100);
        matchFlags_ = 0;
        bitField1_ = (bitField1_ & ~0x00000200);
        privateMetadataKey_ = 0;
        bitField1_ = (bitField1_ & ~0x00000400);
        radiantTeamScore_ = 0;
        bitField1_ = (bitField1_ & ~0x00000800);
        direTeamScore_ = 0;
        bitField1_ = (bitField1_ & ~0x00001000);
        matchOutcome_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome.k_EMatchOutcome_Unknown;
        bitField1_ = (bitField1_ & ~0x00002000);
        tournamentId_ = 0;
        bitField1_ = (bitField1_ & ~0x00004000);
        tournamentRound_ = 0;
        bitField1_ = (bitField1_ & ~0x00008000);
        preGameDuration_ = 0;
        bitField1_ = (bitField1_ & ~0x00010000);
        if (coachesBuilder_ == null) {
          coaches_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00020000);
        } else {
          coachesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgDOTAMatch_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        int to_bitField1_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.duration_ = duration_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.starttime_ = starttime_;
        if (playersBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            players_ = java.util.Collections.unmodifiableList(players_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.players_ = players_;
        } else {
          result.players_ = playersBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.matchId_ = matchId_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          towerStatus_ = java.util.Collections.unmodifiableList(towerStatus_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.towerStatus_ = towerStatus_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          barracksStatus_ = java.util.Collections.unmodifiableList(barracksStatus_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.barracksStatus_ = barracksStatus_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000008;
        }
        result.cluster_ = cluster_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000010;
        }
        result.firstBloodTime_ = firstBloodTime_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000020;
        }
        result.replaySalt_ = replaySalt_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000040;
        }
        result.serverIp_ = serverIp_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000080;
        }
        result.serverPort_ = serverPort_;
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000100;
        }
        result.lobbyType_ = lobbyType_;
        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
          to_bitField0_ |= 0x00000200;
        }
        result.humanPlayers_ = humanPlayers_;
        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
          to_bitField0_ |= 0x00000400;
        }
        result.averageSkill_ = averageSkill_;
        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
          to_bitField0_ |= 0x00000800;
        }
        result.gameBalance_ = gameBalance_;
        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
          to_bitField0_ |= 0x00001000;
        }
        result.radiantTeamId_ = radiantTeamId_;
        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
          to_bitField0_ |= 0x00002000;
        }
        result.direTeamId_ = direTeamId_;
        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
          to_bitField0_ |= 0x00004000;
        }
        result.leagueid_ = leagueid_;
        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
          to_bitField0_ |= 0x00008000;
        }
        result.radiantTeamName_ = radiantTeamName_;
        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
          to_bitField0_ |= 0x00010000;
        }
        result.direTeamName_ = direTeamName_;
        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
          to_bitField0_ |= 0x00020000;
        }
        result.radiantTeamLogo_ = radiantTeamLogo_;
        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
          to_bitField0_ |= 0x00040000;
        }
        result.direTeamLogo_ = direTeamLogo_;
        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
          to_bitField0_ |= 0x00080000;
        }
        result.radiantTeamLogoUrl_ = radiantTeamLogoUrl_;
        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
          to_bitField0_ |= 0x00100000;
        }
        result.direTeamLogoUrl_ = direTeamLogoUrl_;
        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
          to_bitField0_ |= 0x00200000;
        }
        result.radiantTeamComplete_ = radiantTeamComplete_;
        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
          to_bitField0_ |= 0x00400000;
        }
        result.direTeamComplete_ = direTeamComplete_;
        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
          to_bitField0_ |= 0x00800000;
        }
        result.positiveVotes_ = positiveVotes_;
        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
          to_bitField0_ |= 0x01000000;
        }
        result.negativeVotes_ = negativeVotes_;
        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
          to_bitField0_ |= 0x02000000;
        }
        result.gameMode_ = gameMode_;
        if (picksBansBuilder_ == null) {
          if (((bitField0_ & 0x20000000) == 0x20000000)) {
            picksBans_ = java.util.Collections.unmodifiableList(picksBans_);
            bitField0_ = (bitField0_ & ~0x20000000);
          }
          result.picksBans_ = picksBans_;
        } else {
          result.picksBans_ = picksBansBuilder_.build();
        }
        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
          to_bitField0_ |= 0x04000000;
        }
        result.matchSeqNum_ = matchSeqNum_;
        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
          to_bitField0_ |= 0x08000000;
        }
        result.replayState_ = replayState_;
        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x10000000;
        }
        result.radiantGuildId_ = radiantGuildId_;
        if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x20000000;
        }
        result.direGuildId_ = direGuildId_;
        if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x40000000;
        }
        result.radiantTeamTag_ = radiantTeamTag_;
        if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x80000000;
        }
        result.direTeamTag_ = direTeamTag_;
        if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
          to_bitField1_ |= 0x00000001;
        }
        result.seriesId_ = seriesId_;
        if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
          to_bitField1_ |= 0x00000002;
        }
        result.seriesType_ = seriesType_;
        if (broadcasterChannelsBuilder_ == null) {
          if (((bitField1_ & 0x00000040) == 0x00000040)) {
            broadcasterChannels_ = java.util.Collections.unmodifiableList(broadcasterChannels_);
            bitField1_ = (bitField1_ & ~0x00000040);
          }
          result.broadcasterChannels_ = broadcasterChannels_;
        } else {
          result.broadcasterChannels_ = broadcasterChannelsBuilder_.build();
        }
        if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
          to_bitField1_ |= 0x00000004;
        }
        result.engine_ = engine_;
        if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
          to_bitField1_ |= 0x00000008;
        }
        if (customGameDataBuilder_ == null) {
          result.customGameData_ = customGameData_;
        } else {
          result.customGameData_ = customGameDataBuilder_.build();
        }
        if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
          to_bitField1_ |= 0x00000010;
        }
        result.matchFlags_ = matchFlags_;
        if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
          to_bitField1_ |= 0x00000020;
        }
        result.privateMetadataKey_ = privateMetadataKey_;
        if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
          to_bitField1_ |= 0x00000040;
        }
        result.radiantTeamScore_ = radiantTeamScore_;
        if (((from_bitField1_ & 0x00001000) == 0x00001000)) {
          to_bitField1_ |= 0x00000080;
        }
        result.direTeamScore_ = direTeamScore_;
        if (((from_bitField1_ & 0x00002000) == 0x00002000)) {
          to_bitField1_ |= 0x00000100;
        }
        result.matchOutcome_ = matchOutcome_;
        if (((from_bitField1_ & 0x00004000) == 0x00004000)) {
          to_bitField1_ |= 0x00000200;
        }
        result.tournamentId_ = tournamentId_;
        if (((from_bitField1_ & 0x00008000) == 0x00008000)) {
          to_bitField1_ |= 0x00000400;
        }
        result.tournamentRound_ = tournamentRound_;
        if (((from_bitField1_ & 0x00010000) == 0x00010000)) {
          to_bitField1_ |= 0x00000800;
        }
        result.preGameDuration_ = preGameDuration_;
        if (coachesBuilder_ == null) {
          if (((bitField1_ & 0x00020000) == 0x00020000)) {
            coaches_ = java.util.Collections.unmodifiableList(coaches_);
            bitField1_ = (bitField1_ & ~0x00020000);
          }
          result.coaches_ = coaches_;
        } else {
          result.coaches_ = coachesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        result.bitField1_ = to_bitField1_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.getDefaultInstance()) return this;
        if (other.hasDuration()) {
          setDuration(other.getDuration());
        }
        if (other.hasStarttime()) {
          setStarttime(other.getStarttime());
        }
        if (playersBuilder_ == null) {
          if (!other.players_.isEmpty()) {
            if (players_.isEmpty()) {
              players_ = other.players_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensurePlayersIsMutable();
              players_.addAll(other.players_);
            }
            onChanged();
          }
        } else {
          if (!other.players_.isEmpty()) {
            if (playersBuilder_.isEmpty()) {
              playersBuilder_.dispose();
              playersBuilder_ = null;
              players_ = other.players_;
              bitField0_ = (bitField0_ & ~0x00000004);
              playersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPlayersFieldBuilder() : null;
            } else {
              playersBuilder_.addAllMessages(other.players_);
            }
          }
        }
        if (other.hasMatchId()) {
          setMatchId(other.getMatchId());
        }
        if (!other.towerStatus_.isEmpty()) {
          if (towerStatus_.isEmpty()) {
            towerStatus_ = other.towerStatus_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureTowerStatusIsMutable();
            towerStatus_.addAll(other.towerStatus_);
          }
          onChanged();
        }
        if (!other.barracksStatus_.isEmpty()) {
          if (barracksStatus_.isEmpty()) {
            barracksStatus_ = other.barracksStatus_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureBarracksStatusIsMutable();
            barracksStatus_.addAll(other.barracksStatus_);
          }
          onChanged();
        }
        if (other.hasCluster()) {
          setCluster(other.getCluster());
        }
        if (other.hasFirstBloodTime()) {
          setFirstBloodTime(other.getFirstBloodTime());
        }
        if (other.hasReplaySalt()) {
          setReplaySalt(other.getReplaySalt());
        }
        if (other.hasServerIp()) {
          setServerIp(other.getServerIp());
        }
        if (other.hasServerPort()) {
          setServerPort(other.getServerPort());
        }
        if (other.hasLobbyType()) {
          setLobbyType(other.getLobbyType());
        }
        if (other.hasHumanPlayers()) {
          setHumanPlayers(other.getHumanPlayers());
        }
        if (other.hasAverageSkill()) {
          setAverageSkill(other.getAverageSkill());
        }
        if (other.hasGameBalance()) {
          setGameBalance(other.getGameBalance());
        }
        if (other.hasRadiantTeamId()) {
          setRadiantTeamId(other.getRadiantTeamId());
        }
        if (other.hasDireTeamId()) {
          setDireTeamId(other.getDireTeamId());
        }
        if (other.hasLeagueid()) {
          setLeagueid(other.getLeagueid());
        }
        if (other.hasRadiantTeamName()) {
          bitField0_ |= 0x00040000;
          radiantTeamName_ = other.radiantTeamName_;
          onChanged();
        }
        if (other.hasDireTeamName()) {
          bitField0_ |= 0x00080000;
          direTeamName_ = other.direTeamName_;
          onChanged();
        }
        if (other.hasRadiantTeamLogo()) {
          setRadiantTeamLogo(other.getRadiantTeamLogo());
        }
        if (other.hasDireTeamLogo()) {
          setDireTeamLogo(other.getDireTeamLogo());
        }
        if (other.hasRadiantTeamLogoUrl()) {
          bitField0_ |= 0x00400000;
          radiantTeamLogoUrl_ = other.radiantTeamLogoUrl_;
          onChanged();
        }
        if (other.hasDireTeamLogoUrl()) {
          bitField0_ |= 0x00800000;
          direTeamLogoUrl_ = other.direTeamLogoUrl_;
          onChanged();
        }
        if (other.hasRadiantTeamComplete()) {
          setRadiantTeamComplete(other.getRadiantTeamComplete());
        }
        if (other.hasDireTeamComplete()) {
          setDireTeamComplete(other.getDireTeamComplete());
        }
        if (other.hasPositiveVotes()) {
          setPositiveVotes(other.getPositiveVotes());
        }
        if (other.hasNegativeVotes()) {
          setNegativeVotes(other.getNegativeVotes());
        }
        if (other.hasGameMode()) {
          setGameMode(other.getGameMode());
        }
        if (picksBansBuilder_ == null) {
          if (!other.picksBans_.isEmpty()) {
            if (picksBans_.isEmpty()) {
              picksBans_ = other.picksBans_;
              bitField0_ = (bitField0_ & ~0x20000000);
            } else {
              ensurePicksBansIsMutable();
              picksBans_.addAll(other.picksBans_);
            }
            onChanged();
          }
        } else {
          if (!other.picksBans_.isEmpty()) {
            if (picksBansBuilder_.isEmpty()) {
              picksBansBuilder_.dispose();
              picksBansBuilder_ = null;
              picksBans_ = other.picksBans_;
              bitField0_ = (bitField0_ & ~0x20000000);
              picksBansBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPicksBansFieldBuilder() : null;
            } else {
              picksBansBuilder_.addAllMessages(other.picksBans_);
            }
          }
        }
        if (other.hasMatchSeqNum()) {
          setMatchSeqNum(other.getMatchSeqNum());
        }
        if (other.hasReplayState()) {
          setReplayState(other.getReplayState());
        }
        if (other.hasRadiantGuildId()) {
          setRadiantGuildId(other.getRadiantGuildId());
        }
        if (other.hasDireGuildId()) {
          setDireGuildId(other.getDireGuildId());
        }
        if (other.hasRadiantTeamTag()) {
          bitField1_ |= 0x00000004;
          radiantTeamTag_ = other.radiantTeamTag_;
          onChanged();
        }
        if (other.hasDireTeamTag()) {
          bitField1_ |= 0x00000008;
          direTeamTag_ = other.direTeamTag_;
          onChanged();
        }
        if (other.hasSeriesId()) {
          setSeriesId(other.getSeriesId());
        }
        if (other.hasSeriesType()) {
          setSeriesType(other.getSeriesType());
        }
        if (broadcasterChannelsBuilder_ == null) {
          if (!other.broadcasterChannels_.isEmpty()) {
            if (broadcasterChannels_.isEmpty()) {
              broadcasterChannels_ = other.broadcasterChannels_;
              bitField1_ = (bitField1_ & ~0x00000040);
            } else {
              ensureBroadcasterChannelsIsMutable();
              broadcasterChannels_.addAll(other.broadcasterChannels_);
            }
            onChanged();
          }
        } else {
          if (!other.broadcasterChannels_.isEmpty()) {
            if (broadcasterChannelsBuilder_.isEmpty()) {
              broadcasterChannelsBuilder_.dispose();
              broadcasterChannelsBuilder_ = null;
              broadcasterChannels_ = other.broadcasterChannels_;
              bitField1_ = (bitField1_ & ~0x00000040);
              broadcasterChannelsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBroadcasterChannelsFieldBuilder() : null;
            } else {
              broadcasterChannelsBuilder_.addAllMessages(other.broadcasterChannels_);
            }
          }
        }
        if (other.hasEngine()) {
          setEngine(other.getEngine());
        }
        if (other.hasCustomGameData()) {
          mergeCustomGameData(other.getCustomGameData());
        }
        if (other.hasMatchFlags()) {
          setMatchFlags(other.getMatchFlags());
        }
        if (other.hasPrivateMetadataKey()) {
          setPrivateMetadataKey(other.getPrivateMetadataKey());
        }
        if (other.hasRadiantTeamScore()) {
          setRadiantTeamScore(other.getRadiantTeamScore());
        }
        if (other.hasDireTeamScore()) {
          setDireTeamScore(other.getDireTeamScore());
        }
        if (other.hasMatchOutcome()) {
          setMatchOutcome(other.getMatchOutcome());
        }
        if (other.hasTournamentId()) {
          setTournamentId(other.getTournamentId());
        }
        if (other.hasTournamentRound()) {
          setTournamentRound(other.getTournamentRound());
        }
        if (other.hasPreGameDuration()) {
          setPreGameDuration(other.getPreGameDuration());
        }
        if (coachesBuilder_ == null) {
          if (!other.coaches_.isEmpty()) {
            if (coaches_.isEmpty()) {
              coaches_ = other.coaches_;
              bitField1_ = (bitField1_ & ~0x00020000);
            } else {
              ensureCoachesIsMutable();
              coaches_.addAll(other.coaches_);
            }
            onChanged();
          }
        } else {
          if (!other.coaches_.isEmpty()) {
            if (coachesBuilder_.isEmpty()) {
              coachesBuilder_.dispose();
              coachesBuilder_ = null;
              coaches_ = other.coaches_;
              bitField1_ = (bitField1_ & ~0x00020000);
              coachesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getCoachesFieldBuilder() : null;
            } else {
              coachesBuilder_.addAllMessages(other.coaches_);
            }
          }
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private int duration_ ;
      /**
       * optional uint32 duration = 3;
       */
      public boolean hasDuration() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 duration = 3;
       */
      public int getDuration() {
        return duration_;
      }
      /**
       * optional uint32 duration = 3;
       */
      public Builder setDuration(int value) {
        bitField0_ |= 0x00000001;
        duration_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 duration = 3;
       */
      public Builder clearDuration() {
        bitField0_ = (bitField0_ & ~0x00000001);
        duration_ = 0;
        onChanged();
        return this;
      }

      private int starttime_ ;
      /**
       * optional fixed32 starttime = 4;
       */
      public boolean hasStarttime() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional fixed32 starttime = 4;
       */
      public int getStarttime() {
        return starttime_;
      }
      /**
       * optional fixed32 starttime = 4;
       */
      public Builder setStarttime(int value) {
        bitField0_ |= 0x00000002;
        starttime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed32 starttime = 4;
       */
      public Builder clearStarttime() {
        bitField0_ = (bitField0_ & ~0x00000002);
        starttime_ = 0;
        onChanged();
        return this;
      }

      private java.util.List players_ =
        java.util.Collections.emptyList();
      private void ensurePlayersIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          players_ = new java.util.ArrayList(players_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder> playersBuilder_;

      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public java.util.List getPlayersList() {
        if (playersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(players_);
        } else {
          return playersBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public int getPlayersCount() {
        if (playersBuilder_ == null) {
          return players_.size();
        } else {
          return playersBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player getPlayers(int index) {
        if (playersBuilder_ == null) {
          return players_.get(index);
        } else {
          return playersBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder setPlayers(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.set(index, value);
          onChanged();
        } else {
          playersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder setPlayers(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.set(index, builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder addPlayers(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.add(value);
          onChanged();
        } else {
          playersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder addPlayers(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player value) {
        if (playersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePlayersIsMutable();
          players_.add(index, value);
          onChanged();
        } else {
          playersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder addPlayers(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.add(builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder addPlayers(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder builderForValue) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.add(index, builderForValue.build());
          onChanged();
        } else {
          playersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder addAllPlayers(
          java.lang.Iterable values) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, players_);
          onChanged();
        } else {
          playersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder clearPlayers() {
        if (playersBuilder_ == null) {
          players_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          playersBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public Builder removePlayers(int index) {
        if (playersBuilder_ == null) {
          ensurePlayersIsMutable();
          players_.remove(index);
          onChanged();
        } else {
          playersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder getPlayersBuilder(
          int index) {
        return getPlayersFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        if (playersBuilder_ == null) {
          return players_.get(index);  } else {
          return playersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public java.util.List 
           getPlayersOrBuilderList() {
        if (playersBuilder_ != null) {
          return playersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(players_);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder addPlayersBuilder() {
        return getPlayersFieldBuilder().addBuilder(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder addPlayersBuilder(
          int index) {
        return getPlayersFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.Player players = 5;
       */
      public java.util.List 
           getPlayersBuilderList() {
        return getPlayersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder> 
          getPlayersFieldBuilder() {
        if (playersBuilder_ == null) {
          playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Player.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.PlayerOrBuilder>(
                  players_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          players_ = null;
        }
        return playersBuilder_;
      }

      private long matchId_ ;
      /**
       * optional uint64 match_id = 6;
       */
      public boolean hasMatchId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint64 match_id = 6;
       */
      public long getMatchId() {
        return matchId_;
      }
      /**
       * optional uint64 match_id = 6;
       */
      public Builder setMatchId(long value) {
        bitField0_ |= 0x00000008;
        matchId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 match_id = 6;
       */
      public Builder clearMatchId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        matchId_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List towerStatus_ = java.util.Collections.emptyList();
      private void ensureTowerStatusIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          towerStatus_ = new java.util.ArrayList(towerStatus_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public java.util.List
          getTowerStatusList() {
        return java.util.Collections.unmodifiableList(towerStatus_);
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public int getTowerStatusCount() {
        return towerStatus_.size();
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public int getTowerStatus(int index) {
        return towerStatus_.get(index);
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public Builder setTowerStatus(
          int index, int value) {
        ensureTowerStatusIsMutable();
        towerStatus_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public Builder addTowerStatus(int value) {
        ensureTowerStatusIsMutable();
        towerStatus_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public Builder addAllTowerStatus(
          java.lang.Iterable values) {
        ensureTowerStatusIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, towerStatus_);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 tower_status = 8;
       */
      public Builder clearTowerStatus() {
        towerStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private java.util.List barracksStatus_ = java.util.Collections.emptyList();
      private void ensureBarracksStatusIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          barracksStatus_ = new java.util.ArrayList(barracksStatus_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public java.util.List
          getBarracksStatusList() {
        return java.util.Collections.unmodifiableList(barracksStatus_);
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public int getBarracksStatusCount() {
        return barracksStatus_.size();
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public int getBarracksStatus(int index) {
        return barracksStatus_.get(index);
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public Builder setBarracksStatus(
          int index, int value) {
        ensureBarracksStatusIsMutable();
        barracksStatus_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public Builder addBarracksStatus(int value) {
        ensureBarracksStatusIsMutable();
        barracksStatus_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public Builder addAllBarracksStatus(
          java.lang.Iterable values) {
        ensureBarracksStatusIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, barracksStatus_);
        onChanged();
        return this;
      }
      /**
       * repeated uint32 barracks_status = 9;
       */
      public Builder clearBarracksStatus() {
        barracksStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private int cluster_ ;
      /**
       * optional uint32 cluster = 10;
       */
      public boolean hasCluster() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional uint32 cluster = 10;
       */
      public int getCluster() {
        return cluster_;
      }
      /**
       * optional uint32 cluster = 10;
       */
      public Builder setCluster(int value) {
        bitField0_ |= 0x00000040;
        cluster_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 cluster = 10;
       */
      public Builder clearCluster() {
        bitField0_ = (bitField0_ & ~0x00000040);
        cluster_ = 0;
        onChanged();
        return this;
      }

      private int firstBloodTime_ ;
      /**
       * optional uint32 first_blood_time = 12;
       */
      public boolean hasFirstBloodTime() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional uint32 first_blood_time = 12;
       */
      public int getFirstBloodTime() {
        return firstBloodTime_;
      }
      /**
       * optional uint32 first_blood_time = 12;
       */
      public Builder setFirstBloodTime(int value) {
        bitField0_ |= 0x00000080;
        firstBloodTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 first_blood_time = 12;
       */
      public Builder clearFirstBloodTime() {
        bitField0_ = (bitField0_ & ~0x00000080);
        firstBloodTime_ = 0;
        onChanged();
        return this;
      }

      private int replaySalt_ ;
      /**
       * optional fixed32 replay_salt = 13;
       */
      public boolean hasReplaySalt() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional fixed32 replay_salt = 13;
       */
      public int getReplaySalt() {
        return replaySalt_;
      }
      /**
       * optional fixed32 replay_salt = 13;
       */
      public Builder setReplaySalt(int value) {
        bitField0_ |= 0x00000100;
        replaySalt_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed32 replay_salt = 13;
       */
      public Builder clearReplaySalt() {
        bitField0_ = (bitField0_ & ~0x00000100);
        replaySalt_ = 0;
        onChanged();
        return this;
      }

      private int serverIp_ ;
      /**
       * optional fixed32 server_ip = 14;
       */
      public boolean hasServerIp() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional fixed32 server_ip = 14;
       */
      public int getServerIp() {
        return serverIp_;
      }
      /**
       * optional fixed32 server_ip = 14;
       */
      public Builder setServerIp(int value) {
        bitField0_ |= 0x00000200;
        serverIp_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed32 server_ip = 14;
       */
      public Builder clearServerIp() {
        bitField0_ = (bitField0_ & ~0x00000200);
        serverIp_ = 0;
        onChanged();
        return this;
      }

      private int serverPort_ ;
      /**
       * optional uint32 server_port = 15;
       */
      public boolean hasServerPort() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional uint32 server_port = 15;
       */
      public int getServerPort() {
        return serverPort_;
      }
      /**
       * optional uint32 server_port = 15;
       */
      public Builder setServerPort(int value) {
        bitField0_ |= 0x00000400;
        serverPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 server_port = 15;
       */
      public Builder clearServerPort() {
        bitField0_ = (bitField0_ & ~0x00000400);
        serverPort_ = 0;
        onChanged();
        return this;
      }

      private int lobbyType_ ;
      /**
       * optional uint32 lobby_type = 16;
       */
      public boolean hasLobbyType() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional uint32 lobby_type = 16;
       */
      public int getLobbyType() {
        return lobbyType_;
      }
      /**
       * optional uint32 lobby_type = 16;
       */
      public Builder setLobbyType(int value) {
        bitField0_ |= 0x00000800;
        lobbyType_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 lobby_type = 16;
       */
      public Builder clearLobbyType() {
        bitField0_ = (bitField0_ & ~0x00000800);
        lobbyType_ = 0;
        onChanged();
        return this;
      }

      private int humanPlayers_ ;
      /**
       * optional uint32 human_players = 17;
       */
      public boolean hasHumanPlayers() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * optional uint32 human_players = 17;
       */
      public int getHumanPlayers() {
        return humanPlayers_;
      }
      /**
       * optional uint32 human_players = 17;
       */
      public Builder setHumanPlayers(int value) {
        bitField0_ |= 0x00001000;
        humanPlayers_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 human_players = 17;
       */
      public Builder clearHumanPlayers() {
        bitField0_ = (bitField0_ & ~0x00001000);
        humanPlayers_ = 0;
        onChanged();
        return this;
      }

      private int averageSkill_ ;
      /**
       * optional uint32 average_skill = 18;
       */
      public boolean hasAverageSkill() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * optional uint32 average_skill = 18;
       */
      public int getAverageSkill() {
        return averageSkill_;
      }
      /**
       * optional uint32 average_skill = 18;
       */
      public Builder setAverageSkill(int value) {
        bitField0_ |= 0x00002000;
        averageSkill_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 average_skill = 18;
       */
      public Builder clearAverageSkill() {
        bitField0_ = (bitField0_ & ~0x00002000);
        averageSkill_ = 0;
        onChanged();
        return this;
      }

      private float gameBalance_ ;
      /**
       * optional float game_balance = 19;
       */
      public boolean hasGameBalance() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      /**
       * optional float game_balance = 19;
       */
      public float getGameBalance() {
        return gameBalance_;
      }
      /**
       * optional float game_balance = 19;
       */
      public Builder setGameBalance(float value) {
        bitField0_ |= 0x00004000;
        gameBalance_ = value;
        onChanged();
        return this;
      }
      /**
       * optional float game_balance = 19;
       */
      public Builder clearGameBalance() {
        bitField0_ = (bitField0_ & ~0x00004000);
        gameBalance_ = 0F;
        onChanged();
        return this;
      }

      private int radiantTeamId_ ;
      /**
       * optional uint32 radiant_team_id = 20;
       */
      public boolean hasRadiantTeamId() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * optional uint32 radiant_team_id = 20;
       */
      public int getRadiantTeamId() {
        return radiantTeamId_;
      }
      /**
       * optional uint32 radiant_team_id = 20;
       */
      public Builder setRadiantTeamId(int value) {
        bitField0_ |= 0x00008000;
        radiantTeamId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 radiant_team_id = 20;
       */
      public Builder clearRadiantTeamId() {
        bitField0_ = (bitField0_ & ~0x00008000);
        radiantTeamId_ = 0;
        onChanged();
        return this;
      }

      private int direTeamId_ ;
      /**
       * optional uint32 dire_team_id = 21;
       */
      public boolean hasDireTeamId() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      /**
       * optional uint32 dire_team_id = 21;
       */
      public int getDireTeamId() {
        return direTeamId_;
      }
      /**
       * optional uint32 dire_team_id = 21;
       */
      public Builder setDireTeamId(int value) {
        bitField0_ |= 0x00010000;
        direTeamId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 dire_team_id = 21;
       */
      public Builder clearDireTeamId() {
        bitField0_ = (bitField0_ & ~0x00010000);
        direTeamId_ = 0;
        onChanged();
        return this;
      }

      private int leagueid_ ;
      /**
       * optional uint32 leagueid = 22;
       */
      public boolean hasLeagueid() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      /**
       * optional uint32 leagueid = 22;
       */
      public int getLeagueid() {
        return leagueid_;
      }
      /**
       * optional uint32 leagueid = 22;
       */
      public Builder setLeagueid(int value) {
        bitField0_ |= 0x00020000;
        leagueid_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 leagueid = 22;
       */
      public Builder clearLeagueid() {
        bitField0_ = (bitField0_ & ~0x00020000);
        leagueid_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object radiantTeamName_ = "";
      /**
       * optional string radiant_team_name = 23;
       */
      public boolean hasRadiantTeamName() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      /**
       * optional string radiant_team_name = 23;
       */
      public java.lang.String getRadiantTeamName() {
        java.lang.Object ref = radiantTeamName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            radiantTeamName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string radiant_team_name = 23;
       */
      public com.google.protobuf.ByteString
          getRadiantTeamNameBytes() {
        java.lang.Object ref = radiantTeamName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          radiantTeamName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string radiant_team_name = 23;
       */
      public Builder setRadiantTeamName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00040000;
        radiantTeamName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_name = 23;
       */
      public Builder clearRadiantTeamName() {
        bitField0_ = (bitField0_ & ~0x00040000);
        radiantTeamName_ = getDefaultInstance().getRadiantTeamName();
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_name = 23;
       */
      public Builder setRadiantTeamNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00040000;
        radiantTeamName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object direTeamName_ = "";
      /**
       * optional string dire_team_name = 24;
       */
      public boolean hasDireTeamName() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      /**
       * optional string dire_team_name = 24;
       */
      public java.lang.String getDireTeamName() {
        java.lang.Object ref = direTeamName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            direTeamName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string dire_team_name = 24;
       */
      public com.google.protobuf.ByteString
          getDireTeamNameBytes() {
        java.lang.Object ref = direTeamName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          direTeamName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string dire_team_name = 24;
       */
      public Builder setDireTeamName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00080000;
        direTeamName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_name = 24;
       */
      public Builder clearDireTeamName() {
        bitField0_ = (bitField0_ & ~0x00080000);
        direTeamName_ = getDefaultInstance().getDireTeamName();
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_name = 24;
       */
      public Builder setDireTeamNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00080000;
        direTeamName_ = value;
        onChanged();
        return this;
      }

      private long radiantTeamLogo_ ;
      /**
       * optional uint64 radiant_team_logo = 25;
       */
      public boolean hasRadiantTeamLogo() {
        return ((bitField0_ & 0x00100000) == 0x00100000);
      }
      /**
       * optional uint64 radiant_team_logo = 25;
       */
      public long getRadiantTeamLogo() {
        return radiantTeamLogo_;
      }
      /**
       * optional uint64 radiant_team_logo = 25;
       */
      public Builder setRadiantTeamLogo(long value) {
        bitField0_ |= 0x00100000;
        radiantTeamLogo_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 radiant_team_logo = 25;
       */
      public Builder clearRadiantTeamLogo() {
        bitField0_ = (bitField0_ & ~0x00100000);
        radiantTeamLogo_ = 0L;
        onChanged();
        return this;
      }

      private long direTeamLogo_ ;
      /**
       * optional uint64 dire_team_logo = 26;
       */
      public boolean hasDireTeamLogo() {
        return ((bitField0_ & 0x00200000) == 0x00200000);
      }
      /**
       * optional uint64 dire_team_logo = 26;
       */
      public long getDireTeamLogo() {
        return direTeamLogo_;
      }
      /**
       * optional uint64 dire_team_logo = 26;
       */
      public Builder setDireTeamLogo(long value) {
        bitField0_ |= 0x00200000;
        direTeamLogo_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 dire_team_logo = 26;
       */
      public Builder clearDireTeamLogo() {
        bitField0_ = (bitField0_ & ~0x00200000);
        direTeamLogo_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object radiantTeamLogoUrl_ = "";
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public boolean hasRadiantTeamLogoUrl() {
        return ((bitField0_ & 0x00400000) == 0x00400000);
      }
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public java.lang.String getRadiantTeamLogoUrl() {
        java.lang.Object ref = radiantTeamLogoUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            radiantTeamLogoUrl_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public com.google.protobuf.ByteString
          getRadiantTeamLogoUrlBytes() {
        java.lang.Object ref = radiantTeamLogoUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          radiantTeamLogoUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public Builder setRadiantTeamLogoUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00400000;
        radiantTeamLogoUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public Builder clearRadiantTeamLogoUrl() {
        bitField0_ = (bitField0_ & ~0x00400000);
        radiantTeamLogoUrl_ = getDefaultInstance().getRadiantTeamLogoUrl();
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_logo_url = 54;
       */
      public Builder setRadiantTeamLogoUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00400000;
        radiantTeamLogoUrl_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object direTeamLogoUrl_ = "";
      /**
       * optional string dire_team_logo_url = 55;
       */
      public boolean hasDireTeamLogoUrl() {
        return ((bitField0_ & 0x00800000) == 0x00800000);
      }
      /**
       * optional string dire_team_logo_url = 55;
       */
      public java.lang.String getDireTeamLogoUrl() {
        java.lang.Object ref = direTeamLogoUrl_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            direTeamLogoUrl_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string dire_team_logo_url = 55;
       */
      public com.google.protobuf.ByteString
          getDireTeamLogoUrlBytes() {
        java.lang.Object ref = direTeamLogoUrl_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          direTeamLogoUrl_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string dire_team_logo_url = 55;
       */
      public Builder setDireTeamLogoUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        direTeamLogoUrl_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_logo_url = 55;
       */
      public Builder clearDireTeamLogoUrl() {
        bitField0_ = (bitField0_ & ~0x00800000);
        direTeamLogoUrl_ = getDefaultInstance().getDireTeamLogoUrl();
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_logo_url = 55;
       */
      public Builder setDireTeamLogoUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        direTeamLogoUrl_ = value;
        onChanged();
        return this;
      }

      private int radiantTeamComplete_ ;
      /**
       * optional uint32 radiant_team_complete = 27;
       */
      public boolean hasRadiantTeamComplete() {
        return ((bitField0_ & 0x01000000) == 0x01000000);
      }
      /**
       * optional uint32 radiant_team_complete = 27;
       */
      public int getRadiantTeamComplete() {
        return radiantTeamComplete_;
      }
      /**
       * optional uint32 radiant_team_complete = 27;
       */
      public Builder setRadiantTeamComplete(int value) {
        bitField0_ |= 0x01000000;
        radiantTeamComplete_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 radiant_team_complete = 27;
       */
      public Builder clearRadiantTeamComplete() {
        bitField0_ = (bitField0_ & ~0x01000000);
        radiantTeamComplete_ = 0;
        onChanged();
        return this;
      }

      private int direTeamComplete_ ;
      /**
       * optional uint32 dire_team_complete = 28;
       */
      public boolean hasDireTeamComplete() {
        return ((bitField0_ & 0x02000000) == 0x02000000);
      }
      /**
       * optional uint32 dire_team_complete = 28;
       */
      public int getDireTeamComplete() {
        return direTeamComplete_;
      }
      /**
       * optional uint32 dire_team_complete = 28;
       */
      public Builder setDireTeamComplete(int value) {
        bitField0_ |= 0x02000000;
        direTeamComplete_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 dire_team_complete = 28;
       */
      public Builder clearDireTeamComplete() {
        bitField0_ = (bitField0_ & ~0x02000000);
        direTeamComplete_ = 0;
        onChanged();
        return this;
      }

      private int positiveVotes_ ;
      /**
       * optional uint32 positive_votes = 29;
       */
      public boolean hasPositiveVotes() {
        return ((bitField0_ & 0x04000000) == 0x04000000);
      }
      /**
       * optional uint32 positive_votes = 29;
       */
      public int getPositiveVotes() {
        return positiveVotes_;
      }
      /**
       * optional uint32 positive_votes = 29;
       */
      public Builder setPositiveVotes(int value) {
        bitField0_ |= 0x04000000;
        positiveVotes_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 positive_votes = 29;
       */
      public Builder clearPositiveVotes() {
        bitField0_ = (bitField0_ & ~0x04000000);
        positiveVotes_ = 0;
        onChanged();
        return this;
      }

      private int negativeVotes_ ;
      /**
       * optional uint32 negative_votes = 30;
       */
      public boolean hasNegativeVotes() {
        return ((bitField0_ & 0x08000000) == 0x08000000);
      }
      /**
       * optional uint32 negative_votes = 30;
       */
      public int getNegativeVotes() {
        return negativeVotes_;
      }
      /**
       * optional uint32 negative_votes = 30;
       */
      public Builder setNegativeVotes(int value) {
        bitField0_ |= 0x08000000;
        negativeVotes_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 negative_votes = 30;
       */
      public Builder clearNegativeVotes() {
        bitField0_ = (bitField0_ & ~0x08000000);
        negativeVotes_ = 0;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode gameMode_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode.DOTA_GAMEMODE_NONE;
      /**
       * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
       */
      public boolean hasGameMode() {
        return ((bitField0_ & 0x10000000) == 0x10000000);
      }
      /**
       * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode getGameMode() {
        return gameMode_;
      }
      /**
       * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
       */
      public Builder setGameMode(skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x10000000;
        gameMode_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .DOTA_GameMode game_mode = 31 [default = DOTA_GAMEMODE_NONE];
       */
      public Builder clearGameMode() {
        bitField0_ = (bitField0_ & ~0x10000000);
        gameMode_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.DOTA_GameMode.DOTA_GAMEMODE_NONE;
        onChanged();
        return this;
      }

      private java.util.List picksBans_ =
        java.util.Collections.emptyList();
      private void ensurePicksBansIsMutable() {
        if (!((bitField0_ & 0x20000000) == 0x20000000)) {
          picksBans_ = new java.util.ArrayList(picksBans_);
          bitField0_ |= 0x20000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder> picksBansBuilder_;

      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public java.util.List getPicksBansList() {
        if (picksBansBuilder_ == null) {
          return java.util.Collections.unmodifiableList(picksBans_);
        } else {
          return picksBansBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public int getPicksBansCount() {
        if (picksBansBuilder_ == null) {
          return picksBans_.size();
        } else {
          return picksBansBuilder_.getCount();
        }
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent getPicksBans(int index) {
        if (picksBansBuilder_ == null) {
          return picksBans_.get(index);
        } else {
          return picksBansBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder setPicksBans(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent value) {
        if (picksBansBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePicksBansIsMutable();
          picksBans_.set(index, value);
          onChanged();
        } else {
          picksBansBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder setPicksBans(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder builderForValue) {
        if (picksBansBuilder_ == null) {
          ensurePicksBansIsMutable();
          picksBans_.set(index, builderForValue.build());
          onChanged();
        } else {
          picksBansBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder addPicksBans(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent value) {
        if (picksBansBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePicksBansIsMutable();
          picksBans_.add(value);
          onChanged();
        } else {
          picksBansBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder addPicksBans(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent value) {
        if (picksBansBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePicksBansIsMutable();
          picksBans_.add(index, value);
          onChanged();
        } else {
          picksBansBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder addPicksBans(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder builderForValue) {
        if (picksBansBuilder_ == null) {
          ensurePicksBansIsMutable();
          picksBans_.add(builderForValue.build());
          onChanged();
        } else {
          picksBansBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder addPicksBans(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder builderForValue) {
        if (picksBansBuilder_ == null) {
          ensurePicksBansIsMutable();
          picksBans_.add(index, builderForValue.build());
          onChanged();
        } else {
          picksBansBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder addAllPicksBans(
          java.lang.Iterable values) {
        if (picksBansBuilder_ == null) {
          ensurePicksBansIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, picksBans_);
          onChanged();
        } else {
          picksBansBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder clearPicksBans() {
        if (picksBansBuilder_ == null) {
          picksBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x20000000);
          onChanged();
        } else {
          picksBansBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public Builder removePicksBans(int index) {
        if (picksBansBuilder_ == null) {
          ensurePicksBansIsMutable();
          picksBans_.remove(index);
          onChanged();
        } else {
          picksBansBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder getPicksBansBuilder(
          int index) {
        return getPicksBansFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder getPicksBansOrBuilder(
          int index) {
        if (picksBansBuilder_ == null) {
          return picksBans_.get(index);  } else {
          return picksBansBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public java.util.List 
           getPicksBansOrBuilderList() {
        if (picksBansBuilder_ != null) {
          return picksBansBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(picksBans_);
        }
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder addPicksBansBuilder() {
        return getPicksBansFieldBuilder().addBuilder(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.getDefaultInstance());
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder addPicksBansBuilder(
          int index) {
        return getPicksBansFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.getDefaultInstance());
      }
      /**
       * repeated .CMatchHeroSelectEvent picks_bans = 32;
       */
      public java.util.List 
           getPicksBansBuilderList() {
        return getPicksBansFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder> 
          getPicksBansFieldBuilder() {
        if (picksBansBuilder_ == null) {
          picksBansBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEvent.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMatchHeroSelectEventOrBuilder>(
                  picksBans_,
                  ((bitField0_ & 0x20000000) == 0x20000000),
                  getParentForChildren(),
                  isClean());
          picksBans_ = null;
        }
        return picksBansBuilder_;
      }

      private long matchSeqNum_ ;
      /**
       * optional uint64 match_seq_num = 33;
       */
      public boolean hasMatchSeqNum() {
        return ((bitField0_ & 0x40000000) == 0x40000000);
      }
      /**
       * optional uint64 match_seq_num = 33;
       */
      public long getMatchSeqNum() {
        return matchSeqNum_;
      }
      /**
       * optional uint64 match_seq_num = 33;
       */
      public Builder setMatchSeqNum(long value) {
        bitField0_ |= 0x40000000;
        matchSeqNum_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 match_seq_num = 33;
       */
      public Builder clearMatchSeqNum() {
        bitField0_ = (bitField0_ & ~0x40000000);
        matchSeqNum_ = 0L;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState replayState_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState.REPLAY_AVAILABLE;
      /**
       * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
       */
      public boolean hasReplayState() {
        return ((bitField0_ & 0x80000000) == 0x80000000);
      }
      /**
       * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState getReplayState() {
        return replayState_;
      }
      /**
       * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
       */
      public Builder setReplayState(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x80000000;
        replayState_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .CMsgDOTAMatch.ReplayState replay_state = 34 [default = REPLAY_AVAILABLE];
       */
      public Builder clearReplayState() {
        bitField0_ = (bitField0_ & ~0x80000000);
        replayState_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.ReplayState.REPLAY_AVAILABLE;
        onChanged();
        return this;
      }

      private int radiantGuildId_ ;
      /**
       * optional uint32 radiant_guild_id = 35;
       */
      public boolean hasRadiantGuildId() {
        return ((bitField1_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 radiant_guild_id = 35;
       */
      public int getRadiantGuildId() {
        return radiantGuildId_;
      }
      /**
       * optional uint32 radiant_guild_id = 35;
       */
      public Builder setRadiantGuildId(int value) {
        bitField1_ |= 0x00000001;
        radiantGuildId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 radiant_guild_id = 35;
       */
      public Builder clearRadiantGuildId() {
        bitField1_ = (bitField1_ & ~0x00000001);
        radiantGuildId_ = 0;
        onChanged();
        return this;
      }

      private int direGuildId_ ;
      /**
       * optional uint32 dire_guild_id = 36;
       */
      public boolean hasDireGuildId() {
        return ((bitField1_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 dire_guild_id = 36;
       */
      public int getDireGuildId() {
        return direGuildId_;
      }
      /**
       * optional uint32 dire_guild_id = 36;
       */
      public Builder setDireGuildId(int value) {
        bitField1_ |= 0x00000002;
        direGuildId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 dire_guild_id = 36;
       */
      public Builder clearDireGuildId() {
        bitField1_ = (bitField1_ & ~0x00000002);
        direGuildId_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object radiantTeamTag_ = "";
      /**
       * optional string radiant_team_tag = 37;
       */
      public boolean hasRadiantTeamTag() {
        return ((bitField1_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional string radiant_team_tag = 37;
       */
      public java.lang.String getRadiantTeamTag() {
        java.lang.Object ref = radiantTeamTag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            radiantTeamTag_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string radiant_team_tag = 37;
       */
      public com.google.protobuf.ByteString
          getRadiantTeamTagBytes() {
        java.lang.Object ref = radiantTeamTag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          radiantTeamTag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string radiant_team_tag = 37;
       */
      public Builder setRadiantTeamTag(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000004;
        radiantTeamTag_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_tag = 37;
       */
      public Builder clearRadiantTeamTag() {
        bitField1_ = (bitField1_ & ~0x00000004);
        radiantTeamTag_ = getDefaultInstance().getRadiantTeamTag();
        onChanged();
        return this;
      }
      /**
       * optional string radiant_team_tag = 37;
       */
      public Builder setRadiantTeamTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000004;
        radiantTeamTag_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object direTeamTag_ = "";
      /**
       * optional string dire_team_tag = 38;
       */
      public boolean hasDireTeamTag() {
        return ((bitField1_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional string dire_team_tag = 38;
       */
      public java.lang.String getDireTeamTag() {
        java.lang.Object ref = direTeamTag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            direTeamTag_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string dire_team_tag = 38;
       */
      public com.google.protobuf.ByteString
          getDireTeamTagBytes() {
        java.lang.Object ref = direTeamTag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          direTeamTag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string dire_team_tag = 38;
       */
      public Builder setDireTeamTag(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        direTeamTag_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_tag = 38;
       */
      public Builder clearDireTeamTag() {
        bitField1_ = (bitField1_ & ~0x00000008);
        direTeamTag_ = getDefaultInstance().getDireTeamTag();
        onChanged();
        return this;
      }
      /**
       * optional string dire_team_tag = 38;
       */
      public Builder setDireTeamTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField1_ |= 0x00000008;
        direTeamTag_ = value;
        onChanged();
        return this;
      }

      private int seriesId_ ;
      /**
       * optional uint32 series_id = 39;
       */
      public boolean hasSeriesId() {
        return ((bitField1_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 series_id = 39;
       */
      public int getSeriesId() {
        return seriesId_;
      }
      /**
       * optional uint32 series_id = 39;
       */
      public Builder setSeriesId(int value) {
        bitField1_ |= 0x00000010;
        seriesId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 series_id = 39;
       */
      public Builder clearSeriesId() {
        bitField1_ = (bitField1_ & ~0x00000010);
        seriesId_ = 0;
        onChanged();
        return this;
      }

      private int seriesType_ ;
      /**
       * optional uint32 series_type = 40;
       */
      public boolean hasSeriesType() {
        return ((bitField1_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 series_type = 40;
       */
      public int getSeriesType() {
        return seriesType_;
      }
      /**
       * optional uint32 series_type = 40;
       */
      public Builder setSeriesType(int value) {
        bitField1_ |= 0x00000020;
        seriesType_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 series_type = 40;
       */
      public Builder clearSeriesType() {
        bitField1_ = (bitField1_ & ~0x00000020);
        seriesType_ = 0;
        onChanged();
        return this;
      }

      private java.util.List broadcasterChannels_ =
        java.util.Collections.emptyList();
      private void ensureBroadcasterChannelsIsMutable() {
        if (!((bitField1_ & 0x00000040) == 0x00000040)) {
          broadcasterChannels_ = new java.util.ArrayList(broadcasterChannels_);
          bitField1_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder> broadcasterChannelsBuilder_;

      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public java.util.List getBroadcasterChannelsList() {
        if (broadcasterChannelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(broadcasterChannels_);
        } else {
          return broadcasterChannelsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public int getBroadcasterChannelsCount() {
        if (broadcasterChannelsBuilder_ == null) {
          return broadcasterChannels_.size();
        } else {
          return broadcasterChannelsBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel getBroadcasterChannels(int index) {
        if (broadcasterChannelsBuilder_ == null) {
          return broadcasterChannels_.get(index);
        } else {
          return broadcasterChannelsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder setBroadcasterChannels(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel value) {
        if (broadcasterChannelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.set(index, value);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder setBroadcasterChannels(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder builderForValue) {
        if (broadcasterChannelsBuilder_ == null) {
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.set(index, builderForValue.build());
          onChanged();
        } else {
          broadcasterChannelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder addBroadcasterChannels(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel value) {
        if (broadcasterChannelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.add(value);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder addBroadcasterChannels(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel value) {
        if (broadcasterChannelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.add(index, value);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder addBroadcasterChannels(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder builderForValue) {
        if (broadcasterChannelsBuilder_ == null) {
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.add(builderForValue.build());
          onChanged();
        } else {
          broadcasterChannelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder addBroadcasterChannels(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder builderForValue) {
        if (broadcasterChannelsBuilder_ == null) {
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.add(index, builderForValue.build());
          onChanged();
        } else {
          broadcasterChannelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder addAllBroadcasterChannels(
          java.lang.Iterable values) {
        if (broadcasterChannelsBuilder_ == null) {
          ensureBroadcasterChannelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, broadcasterChannels_);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder clearBroadcasterChannels() {
        if (broadcasterChannelsBuilder_ == null) {
          broadcasterChannels_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000040);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public Builder removeBroadcasterChannels(int index) {
        if (broadcasterChannelsBuilder_ == null) {
          ensureBroadcasterChannelsIsMutable();
          broadcasterChannels_.remove(index);
          onChanged();
        } else {
          broadcasterChannelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder getBroadcasterChannelsBuilder(
          int index) {
        return getBroadcasterChannelsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder getBroadcasterChannelsOrBuilder(
          int index) {
        if (broadcasterChannelsBuilder_ == null) {
          return broadcasterChannels_.get(index);  } else {
          return broadcasterChannelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public java.util.List 
           getBroadcasterChannelsOrBuilderList() {
        if (broadcasterChannelsBuilder_ != null) {
          return broadcasterChannelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(broadcasterChannels_);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder addBroadcasterChannelsBuilder() {
        return getBroadcasterChannelsFieldBuilder().addBuilder(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder addBroadcasterChannelsBuilder(
          int index) {
        return getBroadcasterChannelsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.BroadcasterChannel broadcaster_channels = 43;
       */
      public java.util.List 
           getBroadcasterChannelsBuilderList() {
        return getBroadcasterChannelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder> 
          getBroadcasterChannelsFieldBuilder() {
        if (broadcasterChannelsBuilder_ == null) {
          broadcasterChannelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannel.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.BroadcasterChannelOrBuilder>(
                  broadcasterChannels_,
                  ((bitField1_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          broadcasterChannels_ = null;
        }
        return broadcasterChannelsBuilder_;
      }

      private int engine_ ;
      /**
       * optional uint32 engine = 44;
       */
      public boolean hasEngine() {
        return ((bitField1_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional uint32 engine = 44;
       */
      public int getEngine() {
        return engine_;
      }
      /**
       * optional uint32 engine = 44;
       */
      public Builder setEngine(int value) {
        bitField1_ |= 0x00000080;
        engine_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 engine = 44;
       */
      public Builder clearEngine() {
        bitField1_ = (bitField1_ & ~0x00000080);
        engine_ = 0;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder> customGameDataBuilder_;
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public boolean hasCustomGameData() {
        return ((bitField1_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData getCustomGameData() {
        if (customGameDataBuilder_ == null) {
          return customGameData_;
        } else {
          return customGameDataBuilder_.getMessage();
        }
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public Builder setCustomGameData(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData value) {
        if (customGameDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          customGameData_ = value;
          onChanged();
        } else {
          customGameDataBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public Builder setCustomGameData(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder builderForValue) {
        if (customGameDataBuilder_ == null) {
          customGameData_ = builderForValue.build();
          onChanged();
        } else {
          customGameDataBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public Builder mergeCustomGameData(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData value) {
        if (customGameDataBuilder_ == null) {
          if (((bitField1_ & 0x00000100) == 0x00000100) &&
              customGameData_ != skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance()) {
            customGameData_ =
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.newBuilder(customGameData_).mergeFrom(value).buildPartial();
          } else {
            customGameData_ = value;
          }
          onChanged();
        } else {
          customGameDataBuilder_.mergeFrom(value);
        }
        bitField1_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public Builder clearCustomGameData() {
        if (customGameDataBuilder_ == null) {
          customGameData_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.getDefaultInstance();
          onChanged();
        } else {
          customGameDataBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000100);
        return this;
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder getCustomGameDataBuilder() {
        bitField1_ |= 0x00000100;
        onChanged();
        return getCustomGameDataFieldBuilder().getBuilder();
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder getCustomGameDataOrBuilder() {
        if (customGameDataBuilder_ != null) {
          return customGameDataBuilder_.getMessageOrBuilder();
        } else {
          return customGameData_;
        }
      }
      /**
       * optional .CMsgDOTAMatch.CustomGameData custom_game_data = 45;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder> 
          getCustomGameDataFieldBuilder() {
        if (customGameDataBuilder_ == null) {
          customGameDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameData.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CustomGameDataOrBuilder>(
                  getCustomGameData(),
                  getParentForChildren(),
                  isClean());
          customGameData_ = null;
        }
        return customGameDataBuilder_;
      }

      private int matchFlags_ ;
      /**
       * optional uint32 match_flags = 46;
       */
      public boolean hasMatchFlags() {
        return ((bitField1_ & 0x00000200) == 0x00000200);
      }
      /**
       * optional uint32 match_flags = 46;
       */
      public int getMatchFlags() {
        return matchFlags_;
      }
      /**
       * optional uint32 match_flags = 46;
       */
      public Builder setMatchFlags(int value) {
        bitField1_ |= 0x00000200;
        matchFlags_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 match_flags = 46;
       */
      public Builder clearMatchFlags() {
        bitField1_ = (bitField1_ & ~0x00000200);
        matchFlags_ = 0;
        onChanged();
        return this;
      }

      private int privateMetadataKey_ ;
      /**
       * optional fixed32 private_metadata_key = 47;
       */
      public boolean hasPrivateMetadataKey() {
        return ((bitField1_ & 0x00000400) == 0x00000400);
      }
      /**
       * optional fixed32 private_metadata_key = 47;
       */
      public int getPrivateMetadataKey() {
        return privateMetadataKey_;
      }
      /**
       * optional fixed32 private_metadata_key = 47;
       */
      public Builder setPrivateMetadataKey(int value) {
        bitField1_ |= 0x00000400;
        privateMetadataKey_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed32 private_metadata_key = 47;
       */
      public Builder clearPrivateMetadataKey() {
        bitField1_ = (bitField1_ & ~0x00000400);
        privateMetadataKey_ = 0;
        onChanged();
        return this;
      }

      private int radiantTeamScore_ ;
      /**
       * optional uint32 radiant_team_score = 48;
       */
      public boolean hasRadiantTeamScore() {
        return ((bitField1_ & 0x00000800) == 0x00000800);
      }
      /**
       * optional uint32 radiant_team_score = 48;
       */
      public int getRadiantTeamScore() {
        return radiantTeamScore_;
      }
      /**
       * optional uint32 radiant_team_score = 48;
       */
      public Builder setRadiantTeamScore(int value) {
        bitField1_ |= 0x00000800;
        radiantTeamScore_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 radiant_team_score = 48;
       */
      public Builder clearRadiantTeamScore() {
        bitField1_ = (bitField1_ & ~0x00000800);
        radiantTeamScore_ = 0;
        onChanged();
        return this;
      }

      private int direTeamScore_ ;
      /**
       * optional uint32 dire_team_score = 49;
       */
      public boolean hasDireTeamScore() {
        return ((bitField1_ & 0x00001000) == 0x00001000);
      }
      /**
       * optional uint32 dire_team_score = 49;
       */
      public int getDireTeamScore() {
        return direTeamScore_;
      }
      /**
       * optional uint32 dire_team_score = 49;
       */
      public Builder setDireTeamScore(int value) {
        bitField1_ |= 0x00001000;
        direTeamScore_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 dire_team_score = 49;
       */
      public Builder clearDireTeamScore() {
        bitField1_ = (bitField1_ & ~0x00001000);
        direTeamScore_ = 0;
        onChanged();
        return this;
      }

      private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome matchOutcome_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome.k_EMatchOutcome_Unknown;
      /**
       * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
       */
      public boolean hasMatchOutcome() {
        return ((bitField1_ & 0x00002000) == 0x00002000);
      }
      /**
       * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome getMatchOutcome() {
        return matchOutcome_;
      }
      /**
       * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
       */
      public Builder setMatchOutcome(skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField1_ |= 0x00002000;
        matchOutcome_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .EMatchOutcome match_outcome = 50 [default = k_EMatchOutcome_Unknown];
       */
      public Builder clearMatchOutcome() {
        bitField1_ = (bitField1_ & ~0x00002000);
        matchOutcome_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EMatchOutcome.k_EMatchOutcome_Unknown;
        onChanged();
        return this;
      }

      private int tournamentId_ ;
      /**
       * optional uint32 tournament_id = 51;
       */
      public boolean hasTournamentId() {
        return ((bitField1_ & 0x00004000) == 0x00004000);
      }
      /**
       * optional uint32 tournament_id = 51;
       */
      public int getTournamentId() {
        return tournamentId_;
      }
      /**
       * optional uint32 tournament_id = 51;
       */
      public Builder setTournamentId(int value) {
        bitField1_ |= 0x00004000;
        tournamentId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 tournament_id = 51;
       */
      public Builder clearTournamentId() {
        bitField1_ = (bitField1_ & ~0x00004000);
        tournamentId_ = 0;
        onChanged();
        return this;
      }

      private int tournamentRound_ ;
      /**
       * optional uint32 tournament_round = 52;
       */
      public boolean hasTournamentRound() {
        return ((bitField1_ & 0x00008000) == 0x00008000);
      }
      /**
       * optional uint32 tournament_round = 52;
       */
      public int getTournamentRound() {
        return tournamentRound_;
      }
      /**
       * optional uint32 tournament_round = 52;
       */
      public Builder setTournamentRound(int value) {
        bitField1_ |= 0x00008000;
        tournamentRound_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 tournament_round = 52;
       */
      public Builder clearTournamentRound() {
        bitField1_ = (bitField1_ & ~0x00008000);
        tournamentRound_ = 0;
        onChanged();
        return this;
      }

      private int preGameDuration_ ;
      /**
       * optional uint32 pre_game_duration = 53;
       */
      public boolean hasPreGameDuration() {
        return ((bitField1_ & 0x00010000) == 0x00010000);
      }
      /**
       * optional uint32 pre_game_duration = 53;
       */
      public int getPreGameDuration() {
        return preGameDuration_;
      }
      /**
       * optional uint32 pre_game_duration = 53;
       */
      public Builder setPreGameDuration(int value) {
        bitField1_ |= 0x00010000;
        preGameDuration_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 pre_game_duration = 53;
       */
      public Builder clearPreGameDuration() {
        bitField1_ = (bitField1_ & ~0x00010000);
        preGameDuration_ = 0;
        onChanged();
        return this;
      }

      private java.util.List coaches_ =
        java.util.Collections.emptyList();
      private void ensureCoachesIsMutable() {
        if (!((bitField1_ & 0x00020000) == 0x00020000)) {
          coaches_ = new java.util.ArrayList(coaches_);
          bitField1_ |= 0x00020000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder> coachesBuilder_;

      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public java.util.List getCoachesList() {
        if (coachesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(coaches_);
        } else {
          return coachesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public int getCoachesCount() {
        if (coachesBuilder_ == null) {
          return coaches_.size();
        } else {
          return coachesBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach getCoaches(int index) {
        if (coachesBuilder_ == null) {
          return coaches_.get(index);
        } else {
          return coachesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder setCoaches(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach value) {
        if (coachesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCoachesIsMutable();
          coaches_.set(index, value);
          onChanged();
        } else {
          coachesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder setCoaches(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder builderForValue) {
        if (coachesBuilder_ == null) {
          ensureCoachesIsMutable();
          coaches_.set(index, builderForValue.build());
          onChanged();
        } else {
          coachesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder addCoaches(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach value) {
        if (coachesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCoachesIsMutable();
          coaches_.add(value);
          onChanged();
        } else {
          coachesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder addCoaches(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach value) {
        if (coachesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCoachesIsMutable();
          coaches_.add(index, value);
          onChanged();
        } else {
          coachesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder addCoaches(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder builderForValue) {
        if (coachesBuilder_ == null) {
          ensureCoachesIsMutable();
          coaches_.add(builderForValue.build());
          onChanged();
        } else {
          coachesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder addCoaches(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder builderForValue) {
        if (coachesBuilder_ == null) {
          ensureCoachesIsMutable();
          coaches_.add(index, builderForValue.build());
          onChanged();
        } else {
          coachesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder addAllCoaches(
          java.lang.Iterable values) {
        if (coachesBuilder_ == null) {
          ensureCoachesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, coaches_);
          onChanged();
        } else {
          coachesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder clearCoaches() {
        if (coachesBuilder_ == null) {
          coaches_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00020000);
          onChanged();
        } else {
          coachesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public Builder removeCoaches(int index) {
        if (coachesBuilder_ == null) {
          ensureCoachesIsMutable();
          coaches_.remove(index);
          onChanged();
        } else {
          coachesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder getCoachesBuilder(
          int index) {
        return getCoachesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder getCoachesOrBuilder(
          int index) {
        if (coachesBuilder_ == null) {
          return coaches_.get(index);  } else {
          return coachesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public java.util.List 
           getCoachesOrBuilderList() {
        if (coachesBuilder_ != null) {
          return coachesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(coaches_);
        }
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder addCoachesBuilder() {
        return getCoachesFieldBuilder().addBuilder(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder addCoachesBuilder(
          int index) {
        return getCoachesFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.getDefaultInstance());
      }
      /**
       * repeated .CMsgDOTAMatch.Coach coaches = 57;
       */
      public java.util.List 
           getCoachesBuilderList() {
        return getCoachesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder> 
          getCoachesFieldBuilder() {
        if (coachesBuilder_ == null) {
          coachesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.Coach.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgDOTAMatch.CoachOrBuilder>(
                  coaches_,
                  ((bitField1_ & 0x00020000) == 0x00020000),
                  getParentForChildren(),
                  isClean());
          coaches_ = null;
        }
        return coachesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CMsgDOTAMatch)
    }

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

    // @@protoc_insertion_point(class_scope:CMsgDOTAMatch)
  }

  public interface CMsgMatchTipsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMsgMatchTips)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
     */
    boolean hasEventId();
    /**
     * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent getEventId();

    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    java.util.List 
        getTipsList();
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip getTips(int index);
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    int getTipsCount();
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    java.util.List 
        getTipsOrBuilderList();
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder getTipsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code CMsgMatchTips}
   */
  public static final class CMsgMatchTips extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMsgMatchTips)
      CMsgMatchTipsOrBuilder {
    // Use CMsgMatchTips.newBuilder() to construct.
    private CMsgMatchTips(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMsgMatchTips(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMsgMatchTips getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMsgMatchTips(
        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();
              skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent value = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                eventId_ = value;
              }
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                tips_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              tips_.add(input.readMessage(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.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_ & 0x00000002) == 0x00000002)) {
          tips_ = java.util.Collections.unmodifiableList(tips_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.Builder.class);
    }

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

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

    public interface SingleTipOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CMsgMatchTips.SingleTip)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 source_account_id = 1;
       */
      boolean hasSourceAccountId();
      /**
       * optional uint32 source_account_id = 1;
       */
      int getSourceAccountId();

      /**
       * optional uint32 target_account_id = 2;
       */
      boolean hasTargetAccountId();
      /**
       * optional uint32 target_account_id = 2;
       */
      int getTargetAccountId();

      /**
       * optional uint32 tip_amount = 3;
       */
      boolean hasTipAmount();
      /**
       * optional uint32 tip_amount = 3;
       */
      int getTipAmount();
    }
    /**
     * Protobuf type {@code CMsgMatchTips.SingleTip}
     */
    public static final class SingleTip extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CMsgMatchTips.SingleTip)
        SingleTipOrBuilder {
      // Use SingleTip.newBuilder() to construct.
      private SingleTip(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private SingleTip(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public SingleTip getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private SingleTip(
          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;
                sourceAccountId_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                targetAccountId_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                tipAmount_ = input.readUInt32();
                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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_SingleTip_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_SingleTip_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder.class);
      }

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

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

      private int bitField0_;
      public static final int SOURCE_ACCOUNT_ID_FIELD_NUMBER = 1;
      private int sourceAccountId_;
      /**
       * optional uint32 source_account_id = 1;
       */
      public boolean hasSourceAccountId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 source_account_id = 1;
       */
      public int getSourceAccountId() {
        return sourceAccountId_;
      }

      public static final int TARGET_ACCOUNT_ID_FIELD_NUMBER = 2;
      private int targetAccountId_;
      /**
       * optional uint32 target_account_id = 2;
       */
      public boolean hasTargetAccountId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional uint32 target_account_id = 2;
       */
      public int getTargetAccountId() {
        return targetAccountId_;
      }

      public static final int TIP_AMOUNT_FIELD_NUMBER = 3;
      private int tipAmount_;
      /**
       * optional uint32 tip_amount = 3;
       */
      public boolean hasTipAmount() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 tip_amount = 3;
       */
      public int getTipAmount() {
        return tipAmount_;
      }

      private void initFields() {
        sourceAccountId_ = 0;
        targetAccountId_ = 0;
        tipAmount_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, sourceAccountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, targetAccountId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, tipAmount_);
        }
        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
            .computeUInt32Size(1, sourceAccountId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, targetAccountId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, tipAmount_);
        }
        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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip 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 CMsgMatchTips.SingleTip}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CMsgMatchTips.SingleTip)
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_SingleTip_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_SingleTip_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder.class);
        }

        // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.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();
          sourceAccountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          targetAccountId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          tipAmount_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_SingleTip_descriptor;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip getDefaultInstanceForType() {
          return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.getDefaultInstance();
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip build() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip buildPartial() {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.sourceAccountId_ = sourceAccountId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.targetAccountId_ = targetAccountId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.tipAmount_ = tipAmount_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip) {
            return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip other) {
          if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.getDefaultInstance()) return this;
          if (other.hasSourceAccountId()) {
            setSourceAccountId(other.getSourceAccountId());
          }
          if (other.hasTargetAccountId()) {
            setTargetAccountId(other.getTargetAccountId());
          }
          if (other.hasTipAmount()) {
            setTipAmount(other.getTipAmount());
          }
          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 {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int sourceAccountId_ ;
        /**
         * optional uint32 source_account_id = 1;
         */
        public boolean hasSourceAccountId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 source_account_id = 1;
         */
        public int getSourceAccountId() {
          return sourceAccountId_;
        }
        /**
         * optional uint32 source_account_id = 1;
         */
        public Builder setSourceAccountId(int value) {
          bitField0_ |= 0x00000001;
          sourceAccountId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 source_account_id = 1;
         */
        public Builder clearSourceAccountId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sourceAccountId_ = 0;
          onChanged();
          return this;
        }

        private int targetAccountId_ ;
        /**
         * optional uint32 target_account_id = 2;
         */
        public boolean hasTargetAccountId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 target_account_id = 2;
         */
        public int getTargetAccountId() {
          return targetAccountId_;
        }
        /**
         * optional uint32 target_account_id = 2;
         */
        public Builder setTargetAccountId(int value) {
          bitField0_ |= 0x00000002;
          targetAccountId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 target_account_id = 2;
         */
        public Builder clearTargetAccountId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          targetAccountId_ = 0;
          onChanged();
          return this;
        }

        private int tipAmount_ ;
        /**
         * optional uint32 tip_amount = 3;
         */
        public boolean hasTipAmount() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 tip_amount = 3;
         */
        public int getTipAmount() {
          return tipAmount_;
        }
        /**
         * optional uint32 tip_amount = 3;
         */
        public Builder setTipAmount(int value) {
          bitField0_ |= 0x00000004;
          tipAmount_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 tip_amount = 3;
         */
        public Builder clearTipAmount() {
          bitField0_ = (bitField0_ & ~0x00000004);
          tipAmount_ = 0;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CMsgMatchTips.SingleTip)
      }

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

      // @@protoc_insertion_point(class_scope:CMsgMatchTips.SingleTip)
    }

    private int bitField0_;
    public static final int EVENT_ID_FIELD_NUMBER = 1;
    private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent eventId_;
    /**
     * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
     */
    public boolean hasEventId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent getEventId() {
      return eventId_;
    }

    public static final int TIPS_FIELD_NUMBER = 2;
    private java.util.List tips_;
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    public java.util.List getTipsList() {
      return tips_;
    }
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    public java.util.List 
        getTipsOrBuilderList() {
      return tips_;
    }
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    public int getTipsCount() {
      return tips_.size();
    }
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip getTips(int index) {
      return tips_.get(index);
    }
    /**
     * repeated .CMsgMatchTips.SingleTip tips = 2;
     */
    public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder getTipsOrBuilder(
        int index) {
      return tips_.get(index);
    }

    private void initFields() {
      eventId_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent.EVENT_ID_NONE;
      tips_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, eventId_.getNumber());
      }
      for (int i = 0; i < tips_.size(); i++) {
        output.writeMessage(2, tips_.get(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, eventId_.getNumber());
      }
      for (int i = 0; i < tips_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, tips_.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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips 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 CMsgMatchTips}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMsgMatchTips)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTipsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        eventId_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent.EVENT_ID_NONE;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (tipsBuilder_ == null) {
          tips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          tipsBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgMatchTips_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.eventId_ = eventId_;
        if (tipsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            tips_ = java.util.Collections.unmodifiableList(tips_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.tips_ = tips_;
        } else {
          result.tips_ = tipsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.getDefaultInstance()) return this;
        if (other.hasEventId()) {
          setEventId(other.getEventId());
        }
        if (tipsBuilder_ == null) {
          if (!other.tips_.isEmpty()) {
            if (tips_.isEmpty()) {
              tips_ = other.tips_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTipsIsMutable();
              tips_.addAll(other.tips_);
            }
            onChanged();
          }
        } else {
          if (!other.tips_.isEmpty()) {
            if (tipsBuilder_.isEmpty()) {
              tipsBuilder_.dispose();
              tipsBuilder_ = null;
              tips_ = other.tips_;
              bitField0_ = (bitField0_ & ~0x00000002);
              tipsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTipsFieldBuilder() : null;
            } else {
              tipsBuilder_.addAllMessages(other.tips_);
            }
          }
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent eventId_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent.EVENT_ID_NONE;
      /**
       * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
       */
      public boolean hasEventId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent getEventId() {
        return eventId_;
      }
      /**
       * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
       */
      public Builder setEventId(skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        eventId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional .EEvent event_id = 1 [default = EVENT_ID_NONE];
       */
      public Builder clearEventId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        eventId_ = skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.EEvent.EVENT_ID_NONE;
        onChanged();
        return this;
      }

      private java.util.List tips_ =
        java.util.Collections.emptyList();
      private void ensureTipsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          tips_ = new java.util.ArrayList(tips_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder> tipsBuilder_;

      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public java.util.List getTipsList() {
        if (tipsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(tips_);
        } else {
          return tipsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public int getTipsCount() {
        if (tipsBuilder_ == null) {
          return tips_.size();
        } else {
          return tipsBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip getTips(int index) {
        if (tipsBuilder_ == null) {
          return tips_.get(index);
        } else {
          return tipsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder setTips(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip value) {
        if (tipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTipsIsMutable();
          tips_.set(index, value);
          onChanged();
        } else {
          tipsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder setTips(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder builderForValue) {
        if (tipsBuilder_ == null) {
          ensureTipsIsMutable();
          tips_.set(index, builderForValue.build());
          onChanged();
        } else {
          tipsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder addTips(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip value) {
        if (tipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTipsIsMutable();
          tips_.add(value);
          onChanged();
        } else {
          tipsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder addTips(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip value) {
        if (tipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTipsIsMutable();
          tips_.add(index, value);
          onChanged();
        } else {
          tipsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder addTips(
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder builderForValue) {
        if (tipsBuilder_ == null) {
          ensureTipsIsMutable();
          tips_.add(builderForValue.build());
          onChanged();
        } else {
          tipsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder addTips(
          int index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder builderForValue) {
        if (tipsBuilder_ == null) {
          ensureTipsIsMutable();
          tips_.add(index, builderForValue.build());
          onChanged();
        } else {
          tipsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder addAllTips(
          java.lang.Iterable values) {
        if (tipsBuilder_ == null) {
          ensureTipsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tips_);
          onChanged();
        } else {
          tipsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder clearTips() {
        if (tipsBuilder_ == null) {
          tips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          tipsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public Builder removeTips(int index) {
        if (tipsBuilder_ == null) {
          ensureTipsIsMutable();
          tips_.remove(index);
          onChanged();
        } else {
          tipsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder getTipsBuilder(
          int index) {
        return getTipsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder getTipsOrBuilder(
          int index) {
        if (tipsBuilder_ == null) {
          return tips_.get(index);  } else {
          return tipsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public java.util.List 
           getTipsOrBuilderList() {
        if (tipsBuilder_ != null) {
          return tipsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(tips_);
        }
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder addTipsBuilder() {
        return getTipsFieldBuilder().addBuilder(
            skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder addTipsBuilder(
          int index) {
        return getTipsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips.SingleTip tips = 2;
       */
      public java.util.List 
           getTipsBuilderList() {
        return getTipsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder> 
          getTipsFieldBuilder() {
        if (tipsBuilder_ == null) {
          tipsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTip.Builder, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgMatchTips.SingleTipOrBuilder>(
                  tips_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          tips_ = null;
        }
        return tipsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CMsgMatchTips)
    }

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

    // @@protoc_insertion_point(class_scope:CMsgMatchTips)
  }

  public interface CMsgTrackedStatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:CMsgTrackedStat)
      com.google.protobuf.MessageOrBuilder {

    /**
     * optional uint32 tracked_stat_id = 1;
     */
    boolean hasTrackedStatId();
    /**
     * optional uint32 tracked_stat_id = 1;
     */
    int getTrackedStatId();

    /**
     * optional int32 tracked_stat_value = 2;
     */
    boolean hasTrackedStatValue();
    /**
     * optional int32 tracked_stat_value = 2;
     */
    int getTrackedStatValue();
  }
  /**
   * Protobuf type {@code CMsgTrackedStat}
   */
  public static final class CMsgTrackedStat extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMsgTrackedStat)
      CMsgTrackedStatOrBuilder {
    // Use CMsgTrackedStat.newBuilder() to construct.
    private CMsgTrackedStat(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMsgTrackedStat(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMsgTrackedStat getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMsgTrackedStat(
        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;
              trackedStatId_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              trackedStatValue_ = input.readInt32();
              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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgTrackedStat_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgTrackedStat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int TRACKED_STAT_ID_FIELD_NUMBER = 1;
    private int trackedStatId_;
    /**
     * optional uint32 tracked_stat_id = 1;
     */
    public boolean hasTrackedStatId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional uint32 tracked_stat_id = 1;
     */
    public int getTrackedStatId() {
      return trackedStatId_;
    }

    public static final int TRACKED_STAT_VALUE_FIELD_NUMBER = 2;
    private int trackedStatValue_;
    /**
     * optional int32 tracked_stat_value = 2;
     */
    public boolean hasTrackedStatValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional int32 tracked_stat_value = 2;
     */
    public int getTrackedStatValue() {
      return trackedStatValue_;
    }

    private void initFields() {
      trackedStatId_ = 0;
      trackedStatValue_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, trackedStatId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, trackedStatValue_);
      }
      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
          .computeUInt32Size(1, trackedStatId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, trackedStatValue_);
      }
      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 skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat 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(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat 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 CMsgTrackedStat}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMsgTrackedStat)
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgTrackedStat_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgTrackedStat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.class, skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.Builder.class);
      }

      // Construct using skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.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();
        trackedStatId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        trackedStatValue_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.internal_static_CMsgTrackedStat_descriptor;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat getDefaultInstanceForType() {
        return skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.getDefaultInstance();
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat build() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat buildPartial() {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat result = new skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.trackedStatId_ = trackedStatId_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.trackedStatValue_ = trackedStatValue_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat) {
          return mergeFrom((skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat other) {
        if (other == skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat.getDefaultInstance()) return this;
        if (other.hasTrackedStatId()) {
          setTrackedStatId(other.getTrackedStatId());
        }
        if (other.hasTrackedStatValue()) {
          setTrackedStatValue(other.getTrackedStatValue());
        }
        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 {
        skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.dota.s2.proto.DOTAS2GcMessagesCommon.CMsgTrackedStat) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int trackedStatId_ ;
      /**
       * optional uint32 tracked_stat_id = 1;
       */
      public boolean hasTrackedStatId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 tracked_stat_id = 1;
       */
      public int getTrackedStatId() {
        return trackedStatId_;
      }
      /**
       * optional uint32 tracked_stat_id = 1;
       */
      public Builder setTrackedStatId(int value) {
        bitField0_ |= 0x00000001;
        trackedStatId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 tracked_stat_id = 1;
       */
      public Builder clearTrackedStatId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        trackedStatId_ = 0;
        onChanged();
        return this;
      }

      private int trackedStatValue_ ;
      /**
       * optional int32 tracked_stat_value = 2;
       */
      public boolean hasTrackedStatValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional int32 tracked_stat_value = 2;
       */
      public int getTrackedStatValue() {
        return trackedStatValue_;
      }
      /**
       * optional int32 tracked_stat_value = 2;
       */
      public Builder setTrackedStatValue(int value) {
        bitField0_ |= 0x00000002;
        trackedStatValue_ = value;
        onChanged();
        return this;
      }
      /**
       * optional int32 tracked_stat_value = 2;
       */
      public Builder clearTrackedStatValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        trackedStatValue_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CMsgTrackedStat)
    }

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

    // @@protoc_insertion_point(class_scope:CMsgTrackedStat)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMatchPlayerAbilityUpgrade_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMatchPlayerAbilityUpgrade_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMatchAdditionalUnitInventory_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMatchAdditionalUnitInventory_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMatchPlayerPermanentBuff_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMatchPlayerPermanentBuff_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMatchHeroSelectEvent_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMatchHeroSelectEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_Player_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_Player_CustomGameData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_BroadcasterInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_BroadcasterChannel_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_Coach_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_Coach_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTAMatch_CustomGameData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTAMatch_CustomGameData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgMatchTips_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgMatchTips_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgMatchTips_SingleTip_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgMatchTips_SingleTip_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgTrackedStat_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgTrackedStat_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\034dota_gcmessages_common.proto\032\027dota_sha" +
      "red_enums.proto\";\n\032CMatchPlayerAbilityUp" +
      "grade\022\017\n\007ability\030\001 \001(\r\022\014\n\004time\030\002 \001(\r\"A\n\035" +
      "CMatchAdditionalUnitInventory\022\021\n\tunit_na" +
      "me\030\001 \001(\t\022\r\n\005items\030\002 \003(\005\"H\n\031CMatchPlayerP" +
      "ermanentBuff\022\026\n\016permanent_buff\030\001 \001(\r\022\023\n\013" +
      "stack_count\030\002 \001(\r\"G\n\025CMatchHeroSelectEve" +
      "nt\022\017\n\007is_pick\030\001 \001(\010\022\014\n\004team\030\002 \001(\r\022\017\n\007her" +
      "o_id\030\003 \001(\005\"\325 \n\rCMsgDOTAMatch\022\020\n\010duration" +
      "\030\003 \001(\r\022\021\n\tstarttime\030\004 \001(\007\022&\n\007players\030\005 \003",
      "(\0132\025.CMsgDOTAMatch.Player\022\020\n\010match_id\030\006 " +
      "\001(\004\022\024\n\014tower_status\030\010 \003(\r\022\027\n\017barracks_st" +
      "atus\030\t \003(\r\022\017\n\007cluster\030\n \001(\r\022\030\n\020first_blo" +
      "od_time\030\014 \001(\r\022\023\n\013replay_salt\030\r \001(\007\022\021\n\tse" +
      "rver_ip\030\016 \001(\007\022\023\n\013server_port\030\017 \001(\r\022\022\n\nlo" +
      "bby_type\030\020 \001(\r\022\025\n\rhuman_players\030\021 \001(\r\022\025\n" +
      "\raverage_skill\030\022 \001(\r\022\024\n\014game_balance\030\023 \001" +
      "(\002\022\027\n\017radiant_team_id\030\024 \001(\r\022\024\n\014dire_team" +
      "_id\030\025 \001(\r\022\020\n\010leagueid\030\026 \001(\r\022\031\n\021radiant_t" +
      "eam_name\030\027 \001(\t\022\026\n\016dire_team_name\030\030 \001(\t\022\031",
      "\n\021radiant_team_logo\030\031 \001(\004\022\026\n\016dire_team_l" +
      "ogo\030\032 \001(\004\022\035\n\025radiant_team_logo_url\0306 \001(\t" +
      "\022\032\n\022dire_team_logo_url\0307 \001(\t\022\035\n\025radiant_" +
      "team_complete\030\033 \001(\r\022\032\n\022dire_team_complet" +
      "e\030\034 \001(\r\022\026\n\016positive_votes\030\035 \001(\r\022\026\n\016negat" +
      "ive_votes\030\036 \001(\r\0225\n\tgame_mode\030\037 \001(\0162\016.DOT" +
      "A_GameMode:\022DOTA_GAMEMODE_NONE\022*\n\npicks_" +
      "bans\030  \003(\0132\026.CMatchHeroSelectEvent\022\025\n\rma" +
      "tch_seq_num\030! \001(\004\022B\n\014replay_state\030\" \001(\0162" +
      "\032.CMsgDOTAMatch.ReplayState:\020REPLAY_AVAI",
      "LABLE\022\030\n\020radiant_guild_id\030# \001(\r\022\025\n\rdire_" +
      "guild_id\030$ \001(\r\022\030\n\020radiant_team_tag\030% \001(\t" +
      "\022\025\n\rdire_team_tag\030& \001(\t\022\021\n\tseries_id\030\' \001" +
      "(\r\022\023\n\013series_type\030( \001(\r\022?\n\024broadcaster_c" +
      "hannels\030+ \003(\0132!.CMsgDOTAMatch.Broadcaste" +
      "rChannel\022\016\n\006engine\030, \001(\r\0227\n\020custom_game_" +
      "data\030- \001(\0132\035.CMsgDOTAMatch.CustomGameDat" +
      "a\022\023\n\013match_flags\030. \001(\r\022\034\n\024private_metada" +
      "ta_key\030/ \001(\007\022\032\n\022radiant_team_score\0300 \001(\r" +
      "\022\027\n\017dire_team_score\0301 \001(\r\022>\n\rmatch_outco",
      "me\0302 \001(\0162\016.EMatchOutcome:\027k_EMatchOutcom" +
      "e_Unknown\022\025\n\rtournament_id\0303 \001(\r\022\030\n\020tour" +
      "nament_round\0304 \001(\r\022\031\n\021pre_game_duration\030" +
      "5 \001(\r\022%\n\007coaches\0309 \003(\0132\024.CMsgDOTAMatch.C" +
      "oach\032\326\021\n\006Player\022\022\n\naccount_id\030\001 \001(\r\022\023\n\013p" +
      "layer_slot\030\002 \001(\r\022\017\n\007hero_id\030\003 \001(\005\022\022\n\006ite" +
      "m_0\030\004 \001(\005:\002-1\022\022\n\006item_1\030\005 \001(\005:\002-1\022\022\n\006ite" +
      "m_2\030\006 \001(\005:\002-1\022\022\n\006item_3\030\007 \001(\005:\002-1\022\022\n\006ite" +
      "m_4\030\010 \001(\005:\002-1\022\022\n\006item_5\030\t \001(\005:\002-1\022\022\n\006ite" +
      "m_6\030; \001(\005:\002-1\022\022\n\006item_7\030< \001(\005:\002-1\022\022\n\006ite",
      "m_8\030= \001(\005:\002-1\022\022\n\006item_9\030L \001(\005:\002-1\022\"\n\032exp" +
      "ected_team_contribution\030\n \001(\002\022\025\n\rscaled_" +
      "metric\030\013 \001(\002\022\025\n\rprevious_rank\030\014 \001(\r\022\023\n\013r" +
      "ank_change\030\r \001(\021\022\020\n\010mmr_type\030J \001(\r\022\r\n\005ki" +
      "lls\030\016 \001(\r\022\016\n\006deaths\030\017 \001(\r\022\017\n\007assists\030\020 \001" +
      "(\r\022\025\n\rleaver_status\030\021 \001(\r\022\014\n\004gold\030\022 \001(\r\022" +
      "\021\n\tlast_hits\030\023 \001(\r\022\016\n\006denies\030\024 \001(\r\022\024\n\014go" +
      "ld_per_min\030\025 \001(\r\022\022\n\nxp_per_min\030\026 \001(\r\022\022\n\n" +
      "gold_spent\030\027 \001(\r\022\023\n\013hero_damage\030\030 \001(\r\022\024\n" +
      "\014tower_damage\030\031 \001(\r\022\024\n\014hero_healing\030\032 \001(",
      "\r\022\r\n\005level\030\033 \001(\r\022\026\n\016time_last_seen\030\034 \001(\r" +
      "\022\023\n\013player_name\030\035 \001(\t\022\035\n\025support_ability" +
      "_value\030\036 \001(\r\022\030\n\020feeding_detected\030  \001(\010\022\023" +
      "\n\013search_rank\030\" \001(\r\022\037\n\027search_rank_uncer" +
      "tainty\030# \001(\r\022\037\n\027rank_uncertainty_change\030" +
      "$ \001(\005\022\027\n\017hero_play_count\030% \001(\r\022\020\n\010party_" +
      "id\030& \001(\006\022\032\n\022scaled_hero_damage\0306 \001(\r\022\033\n\023" +
      "scaled_tower_damage\0307 \001(\r\022\033\n\023scaled_hero" +
      "_healing\0308 \001(\r\022\024\n\014scaled_kills\030\' \001(\002\022\025\n\r" +
      "scaled_deaths\030( \001(\002\022\026\n\016scaled_assists\030) ",
      "\001(\002\022\031\n\021claimed_farm_gold\030* \001(\r\022\024\n\014suppor" +
      "t_gold\030+ \001(\r\022\026\n\016claimed_denies\030, \001(\r\022\026\n\016" +
      "claimed_misses\030- \001(\r\022\016\n\006misses\030. \001(\r\0225\n\020" +
      "ability_upgrades\030/ \003(\0132\033.CMatchPlayerAbi" +
      "lityUpgrade\022B\n\032additional_units_inventor" +
      "y\0300 \003(\0132\036.CMatchAdditionalUnitInventory\022" +
      "3\n\017permanent_buffs\0309 \003(\0132\032.CMatchPlayerP" +
      "ermanentBuff\022\020\n\010pro_name\030H \001(\t\022\021\n\treal_n" +
      "ame\030I \001(\t\022>\n\020custom_game_data\0302 \001(\0132$.CM" +
      "sgDOTAMatch.Player.CustomGameData\022 \n\030act",
      "ive_plus_subscription\0303 \001(\010\022\021\n\tnet_worth" +
      "\0304 \001(\r\022\026\n\016bot_difficulty\030: \001(\r\022\027\n\017hero_p" +
      "ick_order\030? \001(\r\022\031\n\021hero_was_randomed\030@ \001" +
      "(\010\022%\n\035hero_was_dota_plus_suggestion\030E \001(" +
      "\010\022F\n\024hero_damage_received\030C \003(\0132(.CMsgDO" +
      "TAMatch.Player.HeroDamageReceived\022C\n\021her" +
      "o_damage_dealt\030O \003(\0132(.CMsgDOTAMatch.Pla" +
      "yer.HeroDamageReceived\022\024\n\014seconds_dead\030F" +
      " \001(\r\022\032\n\022gold_lost_to_death\030G \001(\r\022\034\n\024lane" +
      "_selection_flags\030K \001(\r\022\024\n\014bounty_runes\030M",
      " \001(\r\022\031\n\021outposts_captured\030N \001(\r\022:\n\013team_" +
      "number\030P \001(\0162\r.DOTA_GC_TEAM:\026DOTA_GC_TEA" +
      "M_GOOD_GUYS\022\021\n\tteam_slot\030Q \001(\r\022\026\n\016select" +
      "ed_facet\030R \001(\r\0323\n\016CustomGameData\022\021\n\tdota" +
      "_team\030\001 \001(\r\022\016\n\006winner\030\002 \001(\010\032\224\001\n\022HeroDama" +
      "geReceived\022\025\n\rpre_reduction\030\001 \001(\r\022\026\n\016pos" +
      "t_reduction\030\002 \001(\r\022O\n\013damage_type\030\003 \001(\0162$" +
      ".CMsgDOTAMatch.Player.HeroDamageType:\024HE" +
      "RO_DAMAGE_PHYSICAL\"Y\n\016HeroDamageType\022\030\n\024" +
      "HERO_DAMAGE_PHYSICAL\020\000\022\027\n\023HERO_DAMAGE_MA",
      "GICAL\020\001\022\024\n\020HERO_DAMAGE_PURE\020\002\0323\n\017Broadca" +
      "sterInfo\022\022\n\naccount_id\030\001 \001(\r\022\014\n\004name\030\002 \001" +
      "(\t\032\221\001\n\022BroadcasterChannel\022\024\n\014country_cod" +
      "e\030\001 \001(\t\022\023\n\013description\030\002 \001(\t\0229\n\021broadcas" +
      "ter_infos\030\003 \003(\0132\036.CMsgDOTAMatch.Broadcas" +
      "terInfo\022\025\n\rlanguage_code\030\004 \001(\t\032\213\001\n\005Coach" +
      "\022\022\n\naccount_id\030\001 \001(\r\022\022\n\ncoach_name\030\002 \001(\t" +
      "\022\024\n\014coach_rating\030\003 \001(\r\022\022\n\ncoach_team\030\004 \001" +
      "(\r\022\026\n\016coach_party_id\030\005 \001(\004\022\030\n\020is_private" +
      "_coach\030\006 \001(\010\032:\n\016CustomGameData\022\026\n\016custom",
      "_game_id\030\001 \001(\004\022\020\n\010map_name\030\002 \001(\t\"P\n\013Repl" +
      "ayState\022\024\n\020REPLAY_AVAILABLE\020\000\022\027\n\023REPLAY_" +
      "NOT_RECORDED\020\001\022\022\n\016REPLAY_EXPIRED\020\002\"\270\001\n\rC" +
      "MsgMatchTips\022(\n\010event_id\030\001 \001(\0162\007.EEvent:" +
      "\rEVENT_ID_NONE\022&\n\004tips\030\002 \003(\0132\030.CMsgMatch" +
      "Tips.SingleTip\032U\n\tSingleTip\022\031\n\021source_ac" +
      "count_id\030\001 \001(\r\022\031\n\021target_account_id\030\002 \001(" +
      "\r\022\022\n\ntip_amount\030\003 \001(\r\"F\n\017CMsgTrackedStat" +
      "\022\027\n\017tracked_stat_id\030\001 \001(\r\022\032\n\022tracked_sta" +
      "t_value\030\002 \001(\005B?\n%skadistats.clarity.wire",
      ".dota.s2.protoB\026DOTAS2GcMessagesCommon"
    };
    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;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.getDescriptor(),
        }, assigner);
    internal_static_CMatchPlayerAbilityUpgrade_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_CMatchPlayerAbilityUpgrade_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMatchPlayerAbilityUpgrade_descriptor,
        new java.lang.String[] { "Ability", "Time", });
    internal_static_CMatchAdditionalUnitInventory_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_CMatchAdditionalUnitInventory_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMatchAdditionalUnitInventory_descriptor,
        new java.lang.String[] { "UnitName", "Items", });
    internal_static_CMatchPlayerPermanentBuff_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_CMatchPlayerPermanentBuff_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMatchPlayerPermanentBuff_descriptor,
        new java.lang.String[] { "PermanentBuff", "StackCount", });
    internal_static_CMatchHeroSelectEvent_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_CMatchHeroSelectEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMatchHeroSelectEvent_descriptor,
        new java.lang.String[] { "IsPick", "Team", "HeroId", });
    internal_static_CMsgDOTAMatch_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_CMsgDOTAMatch_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_descriptor,
        new java.lang.String[] { "Duration", "Starttime", "Players", "MatchId", "TowerStatus", "BarracksStatus", "Cluster", "FirstBloodTime", "ReplaySalt", "ServerIp", "ServerPort", "LobbyType", "HumanPlayers", "AverageSkill", "GameBalance", "RadiantTeamId", "DireTeamId", "Leagueid", "RadiantTeamName", "DireTeamName", "RadiantTeamLogo", "DireTeamLogo", "RadiantTeamLogoUrl", "DireTeamLogoUrl", "RadiantTeamComplete", "DireTeamComplete", "PositiveVotes", "NegativeVotes", "GameMode", "PicksBans", "MatchSeqNum", "ReplayState", "RadiantGuildId", "DireGuildId", "RadiantTeamTag", "DireTeamTag", "SeriesId", "SeriesType", "BroadcasterChannels", "Engine", "CustomGameData", "MatchFlags", "PrivateMetadataKey", "RadiantTeamScore", "DireTeamScore", "MatchOutcome", "TournamentId", "TournamentRound", "PreGameDuration", "Coaches", });
    internal_static_CMsgDOTAMatch_Player_descriptor =
      internal_static_CMsgDOTAMatch_descriptor.getNestedTypes().get(0);
    internal_static_CMsgDOTAMatch_Player_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_Player_descriptor,
        new java.lang.String[] { "AccountId", "PlayerSlot", "HeroId", "Item0", "Item1", "Item2", "Item3", "Item4", "Item5", "Item6", "Item7", "Item8", "Item9", "ExpectedTeamContribution", "ScaledMetric", "PreviousRank", "RankChange", "MmrType", "Kills", "Deaths", "Assists", "LeaverStatus", "Gold", "LastHits", "Denies", "GoldPerMin", "XpPerMin", "GoldSpent", "HeroDamage", "TowerDamage", "HeroHealing", "Level", "TimeLastSeen", "PlayerName", "SupportAbilityValue", "FeedingDetected", "SearchRank", "SearchRankUncertainty", "RankUncertaintyChange", "HeroPlayCount", "PartyId", "ScaledHeroDamage", "ScaledTowerDamage", "ScaledHeroHealing", "ScaledKills", "ScaledDeaths", "ScaledAssists", "ClaimedFarmGold", "SupportGold", "ClaimedDenies", "ClaimedMisses", "Misses", "AbilityUpgrades", "AdditionalUnitsInventory", "PermanentBuffs", "ProName", "RealName", "CustomGameData", "ActivePlusSubscription", "NetWorth", "BotDifficulty", "HeroPickOrder", "HeroWasRandomed", "HeroWasDotaPlusSuggestion", "HeroDamageReceived", "HeroDamageDealt", "SecondsDead", "GoldLostToDeath", "LaneSelectionFlags", "BountyRunes", "OutpostsCaptured", "TeamNumber", "TeamSlot", "SelectedFacet", });
    internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor =
      internal_static_CMsgDOTAMatch_Player_descriptor.getNestedTypes().get(0);
    internal_static_CMsgDOTAMatch_Player_CustomGameData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_Player_CustomGameData_descriptor,
        new java.lang.String[] { "DotaTeam", "Winner", });
    internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor =
      internal_static_CMsgDOTAMatch_Player_descriptor.getNestedTypes().get(1);
    internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_Player_HeroDamageReceived_descriptor,
        new java.lang.String[] { "PreReduction", "PostReduction", "DamageType", });
    internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor =
      internal_static_CMsgDOTAMatch_descriptor.getNestedTypes().get(1);
    internal_static_CMsgDOTAMatch_BroadcasterInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_BroadcasterInfo_descriptor,
        new java.lang.String[] { "AccountId", "Name", });
    internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor =
      internal_static_CMsgDOTAMatch_descriptor.getNestedTypes().get(2);
    internal_static_CMsgDOTAMatch_BroadcasterChannel_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_BroadcasterChannel_descriptor,
        new java.lang.String[] { "CountryCode", "Description", "BroadcasterInfos", "LanguageCode", });
    internal_static_CMsgDOTAMatch_Coach_descriptor =
      internal_static_CMsgDOTAMatch_descriptor.getNestedTypes().get(3);
    internal_static_CMsgDOTAMatch_Coach_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_Coach_descriptor,
        new java.lang.String[] { "AccountId", "CoachName", "CoachRating", "CoachTeam", "CoachPartyId", "IsPrivateCoach", });
    internal_static_CMsgDOTAMatch_CustomGameData_descriptor =
      internal_static_CMsgDOTAMatch_descriptor.getNestedTypes().get(4);
    internal_static_CMsgDOTAMatch_CustomGameData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTAMatch_CustomGameData_descriptor,
        new java.lang.String[] { "CustomGameId", "MapName", });
    internal_static_CMsgMatchTips_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_CMsgMatchTips_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgMatchTips_descriptor,
        new java.lang.String[] { "EventId", "Tips", });
    internal_static_CMsgMatchTips_SingleTip_descriptor =
      internal_static_CMsgMatchTips_descriptor.getNestedTypes().get(0);
    internal_static_CMsgMatchTips_SingleTip_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgMatchTips_SingleTip_descriptor,
        new java.lang.String[] { "SourceAccountId", "TargetAccountId", "TipAmount", });
    internal_static_CMsgTrackedStat_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_CMsgTrackedStat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgTrackedStat_descriptor,
        new java.lang.String[] { "TrackedStatId", "TrackedStatValue", });
    skadistats.clarity.wire.dota.s2.proto.DOTAS2SharedEnums.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy