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

skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata 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.

There is a newer version: 5.3
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: s2_dota_match_metadata.proto

package skadistats.clarity.wire.s2.proto;

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

    /**
     * required int32 version = 1;
     */
    boolean hasVersion();
    /**
     * required int32 version = 1;
     */
    int getVersion();

    /**
     * required uint64 match_id = 2;
     */
    boolean hasMatchId();
    /**
     * required uint64 match_id = 2;
     */
    long getMatchId();

    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    boolean hasMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder();

    /**
     * optional bytes private_metadata = 5;
     */
    boolean hasPrivateMetadata();
    /**
     * optional bytes private_metadata = 5;
     */
    com.google.protobuf.ByteString getPrivateMetadata();
  }
  /**
   * Protobuf type {@code CDOTAMatchMetadataFile}
   */
  public static final class CDOTAMatchMetadataFile extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchMetadataFile)
      CDOTAMatchMetadataFileOrBuilder {
    // Use CDOTAMatchMetadataFile.newBuilder() to construct.
    private CDOTAMatchMetadataFile(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchMetadataFile(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CDOTAMatchMetadataFile getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchMetadataFile(
        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;
              version_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              matchId_ = input.readUInt64();
              break;
            }
            case 26: {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 42: {
              bitField0_ |= 0x00000008;
              privateMetadata_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * required int32 version = 1;
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * required int32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

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

    public static final int METADATA_FIELD_NUMBER = 3;
    private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_;
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
      return metadata_;
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
      return metadata_;
    }

    public static final int PRIVATE_METADATA_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString privateMetadata_;
    /**
     * optional bytes private_metadata = 5;
     */
    public boolean hasPrivateMetadata() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional bytes private_metadata = 5;
     */
    public com.google.protobuf.ByteString getPrivateMetadata() {
      return privateMetadata_;
    }

    private void initFields() {
      version_ = 0;
      matchId_ = 0L;
      metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMatchId()) {
        memoizedIsInitialized = 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.writeInt32(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, matchId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, metadata_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(5, privateMetadata_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, version_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, matchId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, metadata_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, privateMetadata_);
      }
      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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile 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 CDOTAMatchMetadataFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadataFile)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        matchId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadataFile_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.getDefaultInstance();
      }

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

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.version_ = version_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.matchId_ = matchId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.privateMetadata_ = privateMetadata_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataFile.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (other.hasMatchId()) {
          setMatchId(other.getMatchId());
        }
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasPrivateMetadata()) {
          setPrivateMetadata(other.getPrivateMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasVersion()) {
          
          return false;
        }
        if (!hasMatchId()) {
          
          return false;
        }
        return true;
      }

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

      private int version_ ;
      /**
       * required int32 version = 1;
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * required int32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * required int32 version = 1;
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * required int32 version = 1;
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0;
        onChanged();
        return this;
      }

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

      private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> metadataBuilder_;
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder setMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder setMetadata(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder mergeMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              metadata_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance()) {
            metadata_ =
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_;
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private com.google.protobuf.ByteString privateMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes private_metadata = 5;
       */
      public boolean hasPrivateMetadata() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public com.google.protobuf.ByteString getPrivateMetadata() {
        return privateMetadata_;
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public Builder setPrivateMetadata(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        privateMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes private_metadata = 5;
       */
      public Builder clearPrivateMetadata() {
        bitField0_ = (bitField0_ & ~0x00000008);
        privateMetadata_ = getDefaultInstance().getPrivateMetadata();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadataFile)
    }

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

    // @@protoc_insertion_point(class_scope:CDOTAMatchMetadataFile)
  }

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

    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsList();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index);
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    int getTeamsCount();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsOrBuilderList();
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index);

    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    java.util.List 
        getItemRewardsList();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails getItemRewards(int index);
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    int getItemRewardsCount();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    java.util.List 
        getItemRewardsOrBuilderList();
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
        int index);

    /**
     * optional fixed64 lobby_id = 3;
     */
    boolean hasLobbyId();
    /**
     * optional fixed64 lobby_id = 3;
     */
    long getLobbyId();

    /**
     * optional fixed64 report_until_time = 4;
     */
    boolean hasReportUntilTime();
    /**
     * optional fixed64 report_until_time = 4;
     */
    long getReportUntilTime();

    /**
     * optional bytes event_game_custom_table = 5;
     */
    boolean hasEventGameCustomTable();
    /**
     * optional bytes event_game_custom_table = 5;
     */
    com.google.protobuf.ByteString getEventGameCustomTable();

    /**
     * optional uint32 primary_event_id = 6;
     */
    boolean hasPrimaryEventId();
    /**
     * optional uint32 primary_event_id = 6;
     */
    int getPrimaryEventId();

    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    java.util.List 
        getMatchTipsList();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index);
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    int getMatchTipsCount();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    java.util.List 
        getMatchTipsOrBuilderList();
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
        int index);

    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    boolean hasMatchmakingStats();
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats getMatchmakingStats();
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder();

    /**
     * optional .CMvpData mvp_data = 9;
     */
    boolean hasMvpData();
    /**
     * optional .CMvpData mvp_data = 9;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData getMvpData();
    /**
     * optional .CMvpData mvp_data = 9;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder getMvpDataOrBuilder();

    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    java.util.List 
        getGuildChallengeProgressList();
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress getGuildChallengeProgress(int index);
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    int getGuildChallengeProgressCount();
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    java.util.List 
        getGuildChallengeProgressOrBuilderList();
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder getGuildChallengeProgressOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code CDOTAMatchMetadata}
   */
  public static final class CDOTAMatchMetadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata)
      CDOTAMatchMetadataOrBuilder {
    // Use CDOTAMatchMetadata.newBuilder() to construct.
    private CDOTAMatchMetadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchMetadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CDOTAMatchMetadata getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchMetadata(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                teams_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              teams_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                itemRewards_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              itemRewards_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.PARSER, extensionRegistry));
              break;
            }
            case 25: {
              bitField0_ |= 0x00000001;
              lobbyId_ = input.readFixed64();
              break;
            }
            case 33: {
              bitField0_ |= 0x00000002;
              reportUntilTime_ = input.readFixed64();
              break;
            }
            case 42: {
              bitField0_ |= 0x00000004;
              eventGameCustomTable_ = input.readBytes();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000008;
              primaryEventId_ = input.readUInt32();
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                matchTips_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              matchTips_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.PARSER, extensionRegistry));
              break;
            }
            case 66: {
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = matchmakingStats_.toBuilder();
              }
              matchmakingStats_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(matchmakingStats_);
                matchmakingStats_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 74: {
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = mvpData_.toBuilder();
              }
              mvpData_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(mvpData_);
                mvpData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                guildChallengeProgress_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000200;
              }
              guildChallengeProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = java.util.Collections.unmodifiableList(teams_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          itemRewards_ = java.util.Collections.unmodifiableList(itemRewards_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          matchTips_ = java.util.Collections.unmodifiableList(matchTips_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          guildChallengeProgress_ = java.util.Collections.unmodifiableList(guildChallengeProgress_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder.class);
    }

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

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

    public interface TeamOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersList();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index);
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      int getPlayersCount();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersOrBuilderList();
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index);

      /**
       * repeated float graph_experience = 3;
       */
      java.util.List getGraphExperienceList();
      /**
       * repeated float graph_experience = 3;
       */
      int getGraphExperienceCount();
      /**
       * repeated float graph_experience = 3;
       */
      float getGraphExperience(int index);

      /**
       * repeated float graph_gold_earned = 4;
       */
      java.util.List getGraphGoldEarnedList();
      /**
       * repeated float graph_gold_earned = 4;
       */
      int getGraphGoldEarnedCount();
      /**
       * repeated float graph_gold_earned = 4;
       */
      float getGraphGoldEarned(int index);

      /**
       * repeated float graph_net_worth = 5;
       */
      java.util.List getGraphNetWorthList();
      /**
       * repeated float graph_net_worth = 5;
       */
      int getGraphNetWorthCount();
      /**
       * repeated float graph_net_worth = 5;
       */
      float getGraphNetWorth(int index);

      /**
       * optional bool cm_first_pick = 6;
       */
      boolean hasCmFirstPick();
      /**
       * optional bool cm_first_pick = 6;
       */
      boolean getCmFirstPick();

      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      boolean hasCmCaptainPlayerId();
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      int getCmCaptainPlayerId();

      /**
       * repeated uint32 cm_bans = 8;
       */
      java.util.List getCmBansList();
      /**
       * repeated uint32 cm_bans = 8;
       */
      int getCmBansCount();
      /**
       * repeated uint32 cm_bans = 8;
       */
      int getCmBans(int index);

      /**
       * repeated uint32 cm_picks = 9;
       */
      java.util.List getCmPicksList();
      /**
       * repeated uint32 cm_picks = 9;
       */
      int getCmPicksCount();
      /**
       * repeated uint32 cm_picks = 9;
       */
      int getCmPicks(int index);

      /**
       * optional uint32 cm_penalty = 10;
       */
      boolean hasCmPenalty();
      /**
       * optional uint32 cm_penalty = 10;
       */
      int getCmPenalty();
    }
    /**
     * Protobuf type {@code CDOTAMatchMetadata.Team}
     */
    public static final class Team extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team)
        TeamOrBuilder {
      // Use Team.newBuilder() to construct.
      private Team(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Team(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public Team getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Team(
          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 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  players_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000002;
                }
                players_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.PARSER, extensionRegistry));
                break;
              }
              case 29: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  graphExperience_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                graphExperience_.add(input.readFloat());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  graphExperience_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphExperience_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 37: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  graphGoldEarned_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000008;
                }
                graphGoldEarned_.add(input.readFloat());
                break;
              }
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                  graphGoldEarned_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000008;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphGoldEarned_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 45: {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  graphNetWorth_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000010;
                }
                graphNetWorth_.add(input.readFloat());
                break;
              }
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                  graphNetWorth_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000010;
                }
                while (input.getBytesUntilLimit() > 0) {
                  graphNetWorth_.add(input.readFloat());
                }
                input.popLimit(limit);
                break;
              }
              case 48: {
                bitField0_ |= 0x00000002;
                cmFirstPick_ = input.readBool();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000004;
                cmCaptainPlayerId_ = input.readUInt32();
                break;
              }
              case 64: {
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                  cmBans_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000080;
                }
                cmBans_.add(input.readUInt32());
                break;
              }
              case 66: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                  cmBans_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000080;
                }
                while (input.getBytesUntilLimit() > 0) {
                  cmBans_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 72: {
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                  cmPicks_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000100;
                }
                cmPicks_.add(input.readUInt32());
                break;
              }
              case 74: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                  cmPicks_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000100;
                }
                while (input.getBytesUntilLimit() > 0) {
                  cmPicks_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 80: {
                bitField0_ |= 0x00000008;
                cmPenalty_ = 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_bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = java.util.Collections.unmodifiableList(players_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = java.util.Collections.unmodifiableList(graphExperience_);
          }
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = java.util.Collections.unmodifiableList(graphGoldEarned_);
          }
          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
          }
          if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = java.util.Collections.unmodifiableList(cmBans_);
          }
          if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = java.util.Collections.unmodifiableList(cmPicks_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder.class);
      }

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

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

      public interface PlayerKillOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.PlayerKill)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 victim_slot = 1;
         */
        boolean hasVictimSlot();
        /**
         * optional uint32 victim_slot = 1;
         */
        int getVictimSlot();

        /**
         * optional uint32 count = 2;
         */
        boolean hasCount();
        /**
         * optional uint32 count = 2;
         */
        int getCount();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.PlayerKill}
       */
      public static final class PlayerKill extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.PlayerKill)
          PlayerKillOrBuilder {
        // Use PlayerKill.newBuilder() to construct.
        private PlayerKill(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private PlayerKill(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public PlayerKill getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private PlayerKill(
            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;
                  victimSlot_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  count_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int VICTIM_SLOT_FIELD_NUMBER = 1;
        private int victimSlot_;
        /**
         * optional uint32 victim_slot = 1;
         */
        public boolean hasVictimSlot() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 victim_slot = 1;
         */
        public int getVictimSlot() {
          return victimSlot_;
        }

        public static final int COUNT_FIELD_NUMBER = 2;
        private int count_;
        /**
         * optional uint32 count = 2;
         */
        public boolean hasCount() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 count = 2;
         */
        public int getCount() {
          return count_;
        }

        private void initFields() {
          victimSlot_ = 0;
          count_ = 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, victimSlot_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, count_);
          }
          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, victimSlot_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, count_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill 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 CDOTAMatchMetadata.Team.PlayerKill}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.PlayerKill)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.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();
            victimSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            count_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.victimSlot_ = victimSlot_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.count_ = count_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance()) return this;
            if (other.hasVictimSlot()) {
              setVictimSlot(other.getVictimSlot());
            }
            if (other.hasCount()) {
              setCount(other.getCount());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int victimSlot_ ;
          /**
           * optional uint32 victim_slot = 1;
           */
          public boolean hasVictimSlot() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public int getVictimSlot() {
            return victimSlot_;
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public Builder setVictimSlot(int value) {
            bitField0_ |= 0x00000001;
            victimSlot_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 victim_slot = 1;
           */
          public Builder clearVictimSlot() {
            bitField0_ = (bitField0_ & ~0x00000001);
            victimSlot_ = 0;
            onChanged();
            return this;
          }

          private int count_ ;
          /**
           * optional uint32 count = 2;
           */
          public boolean hasCount() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 count = 2;
           */
          public int getCount() {
            return count_;
          }
          /**
           * optional uint32 count = 2;
           */
          public Builder setCount(int value) {
            bitField0_ |= 0x00000002;
            count_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 count = 2;
           */
          public Builder clearCount() {
            bitField0_ = (bitField0_ & ~0x00000002);
            count_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.PlayerKill)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.PlayerKill)
      }

      public interface ItemPurchaseOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.ItemPurchase)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 item_id = 1;
         */
        boolean hasItemId();
        /**
         * optional uint32 item_id = 1;
         */
        int getItemId();

        /**
         * optional int32 purchase_time = 2;
         */
        boolean hasPurchaseTime();
        /**
         * optional int32 purchase_time = 2;
         */
        int getPurchaseTime();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.ItemPurchase}
       */
      public static final class ItemPurchase extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.ItemPurchase)
          ItemPurchaseOrBuilder {
        // Use ItemPurchase.newBuilder() to construct.
        private ItemPurchase(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private ItemPurchase(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public ItemPurchase getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private ItemPurchase(
            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;
                  itemId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  purchaseTime_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private int itemId_;
        /**
         * optional uint32 item_id = 1;
         */
        public boolean hasItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 item_id = 1;
         */
        public int getItemId() {
          return itemId_;
        }

        public static final int PURCHASE_TIME_FIELD_NUMBER = 2;
        private int purchaseTime_;
        /**
         * optional int32 purchase_time = 2;
         */
        public boolean hasPurchaseTime() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional int32 purchase_time = 2;
         */
        public int getPurchaseTime() {
          return purchaseTime_;
        }

        private void initFields() {
          itemId_ = 0;
          purchaseTime_ = 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, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeInt32(2, purchaseTime_);
          }
          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, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, purchaseTime_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase 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 CDOTAMatchMetadata.Team.ItemPurchase}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.ItemPurchase)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.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();
            itemId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            purchaseTime_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.purchaseTime_ = purchaseTime_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance()) return this;
            if (other.hasItemId()) {
              setItemId(other.getItemId());
            }
            if (other.hasPurchaseTime()) {
              setPurchaseTime(other.getPurchaseTime());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int itemId_ ;
          /**
           * optional uint32 item_id = 1;
           */
          public boolean hasItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 item_id = 1;
           */
          public int getItemId() {
            return itemId_;
          }
          /**
           * optional uint32 item_id = 1;
           */
          public Builder setItemId(int value) {
            bitField0_ |= 0x00000001;
            itemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 item_id = 1;
           */
          public Builder clearItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            itemId_ = 0;
            onChanged();
            return this;
          }

          private int purchaseTime_ ;
          /**
           * optional int32 purchase_time = 2;
           */
          public boolean hasPurchaseTime() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public int getPurchaseTime() {
            return purchaseTime_;
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public Builder setPurchaseTime(int value) {
            bitField0_ |= 0x00000002;
            purchaseTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional int32 purchase_time = 2;
           */
          public Builder clearPurchaseTime() {
            bitField0_ = (bitField0_ & ~0x00000002);
            purchaseTime_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.ItemPurchase)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.ItemPurchase)
      }

      public interface InventorySnapshotOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.InventorySnapshot)
          com.google.protobuf.MessageOrBuilder {

        /**
         * repeated uint32 item_id = 1;
         */
        java.util.List getItemIdList();
        /**
         * repeated uint32 item_id = 1;
         */
        int getItemIdCount();
        /**
         * repeated uint32 item_id = 1;
         */
        int getItemId(int index);

        /**
         * optional int32 game_time = 2;
         */
        boolean hasGameTime();
        /**
         * optional int32 game_time = 2;
         */
        int getGameTime();

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

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

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

        /**
         * optional uint32 level = 6;
         */
        boolean hasLevel();
        /**
         * optional uint32 level = 6;
         */
        int getLevel();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.InventorySnapshot}
       */
      public static final class InventorySnapshot extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.InventorySnapshot)
          InventorySnapshotOrBuilder {
        // Use InventorySnapshot.newBuilder() to construct.
        private InventorySnapshot(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private InventorySnapshot(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public InventorySnapshot getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private InventorySnapshot(
            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: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    itemId_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  itemId_.add(input.readUInt32());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    itemId_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    itemId_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000001;
                  gameTime_ = input.readInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000002;
                  kills_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000004;
                  deaths_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000008;
                  assists_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000010;
                  level_ = 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_bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = java.util.Collections.unmodifiableList(itemId_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private java.util.List itemId_;
        /**
         * repeated uint32 item_id = 1;
         */
        public java.util.List
            getItemIdList() {
          return itemId_;
        }
        /**
         * repeated uint32 item_id = 1;
         */
        public int getItemIdCount() {
          return itemId_.size();
        }
        /**
         * repeated uint32 item_id = 1;
         */
        public int getItemId(int index) {
          return itemId_.get(index);
        }

        public static final int GAME_TIME_FIELD_NUMBER = 2;
        private int gameTime_;
        /**
         * optional int32 game_time = 2;
         */
        public boolean hasGameTime() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional int32 game_time = 2;
         */
        public int getGameTime() {
          return gameTime_;
        }

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

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

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

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

        private void initFields() {
          itemId_ = java.util.Collections.emptyList();
          gameTime_ = 0;
          kills_ = 0;
          deaths_ = 0;
          assists_ = 0;
          level_ = 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();
          for (int i = 0; i < itemId_.size(); i++) {
            output.writeUInt32(1, itemId_.get(i));
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeInt32(2, gameTime_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(3, kills_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(4, deaths_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(5, assists_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(6, level_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < itemId_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(itemId_.get(i));
            }
            size += dataSize;
            size += 1 * getItemIdList().size();
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, gameTime_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, kills_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, deaths_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, assists_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(6, level_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot 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 CDOTAMatchMetadata.Team.InventorySnapshot}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.InventorySnapshot)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.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();
            itemId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            gameTime_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            kills_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            deaths_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            assists_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            level_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = java.util.Collections.unmodifiableList(itemId_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000001;
            }
            result.gameTime_ = gameTime_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000002;
            }
            result.kills_ = kills_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000004;
            }
            result.deaths_ = deaths_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000008;
            }
            result.assists_ = assists_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000010;
            }
            result.level_ = level_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance()) return this;
            if (!other.itemId_.isEmpty()) {
              if (itemId_.isEmpty()) {
                itemId_ = other.itemId_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureItemIdIsMutable();
                itemId_.addAll(other.itemId_);
              }
              onChanged();
            }
            if (other.hasGameTime()) {
              setGameTime(other.getGameTime());
            }
            if (other.hasKills()) {
              setKills(other.getKills());
            }
            if (other.hasDeaths()) {
              setDeaths(other.getDeaths());
            }
            if (other.hasAssists()) {
              setAssists(other.getAssists());
            }
            if (other.hasLevel()) {
              setLevel(other.getLevel());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private java.util.List itemId_ = java.util.Collections.emptyList();
          private void ensureItemIdIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              itemId_ = new java.util.ArrayList(itemId_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public java.util.List
              getItemIdList() {
            return java.util.Collections.unmodifiableList(itemId_);
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public int getItemIdCount() {
            return itemId_.size();
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public int getItemId(int index) {
            return itemId_.get(index);
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder setItemId(
              int index, int value) {
            ensureItemIdIsMutable();
            itemId_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder addItemId(int value) {
            ensureItemIdIsMutable();
            itemId_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder addAllItemId(
              java.lang.Iterable values) {
            ensureItemIdIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, itemId_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 item_id = 1;
           */
          public Builder clearItemId() {
            itemId_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }

          private int gameTime_ ;
          /**
           * optional int32 game_time = 2;
           */
          public boolean hasGameTime() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional int32 game_time = 2;
           */
          public int getGameTime() {
            return gameTime_;
          }
          /**
           * optional int32 game_time = 2;
           */
          public Builder setGameTime(int value) {
            bitField0_ |= 0x00000002;
            gameTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional int32 game_time = 2;
           */
          public Builder clearGameTime() {
            bitField0_ = (bitField0_ & ~0x00000002);
            gameTime_ = 0;
            onChanged();
            return this;
          }

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

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

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

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

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.InventorySnapshot)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.InventorySnapshot)
      }

      public interface AutoStyleCriteriaOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.AutoStyleCriteria)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 name_token = 1;
         */
        boolean hasNameToken();
        /**
         * optional uint32 name_token = 1;
         */
        int getNameToken();

        /**
         * optional float value = 2;
         */
        boolean hasValue();
        /**
         * optional float value = 2;
         */
        float getValue();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.AutoStyleCriteria}
       */
      public static final class AutoStyleCriteria extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.AutoStyleCriteria)
          AutoStyleCriteriaOrBuilder {
        // Use AutoStyleCriteria.newBuilder() to construct.
        private AutoStyleCriteria(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private AutoStyleCriteria(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public AutoStyleCriteria getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private AutoStyleCriteria(
            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;
                  nameToken_ = input.readUInt32();
                  break;
                }
                case 21: {
                  bitField0_ |= 0x00000002;
                  value_ = input.readFloat();
                  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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int NAME_TOKEN_FIELD_NUMBER = 1;
        private int nameToken_;
        /**
         * optional uint32 name_token = 1;
         */
        public boolean hasNameToken() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 name_token = 1;
         */
        public int getNameToken() {
          return nameToken_;
        }

        public static final int VALUE_FIELD_NUMBER = 2;
        private float value_;
        /**
         * optional float value = 2;
         */
        public boolean hasValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional float value = 2;
         */
        public float getValue() {
          return value_;
        }

        private void initFields() {
          nameToken_ = 0;
          value_ = 0F;
        }
        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, nameToken_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeFloat(2, value_);
          }
          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, nameToken_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(2, value_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria 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 CDOTAMatchMetadata.Team.AutoStyleCriteria}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.AutoStyleCriteria)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.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();
            nameToken_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            value_ = 0F;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.nameToken_ = nameToken_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.value_ = value_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance()) return this;
            if (other.hasNameToken()) {
              setNameToken(other.getNameToken());
            }
            if (other.hasValue()) {
              setValue(other.getValue());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int nameToken_ ;
          /**
           * optional uint32 name_token = 1;
           */
          public boolean hasNameToken() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 name_token = 1;
           */
          public int getNameToken() {
            return nameToken_;
          }
          /**
           * optional uint32 name_token = 1;
           */
          public Builder setNameToken(int value) {
            bitField0_ |= 0x00000001;
            nameToken_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 name_token = 1;
           */
          public Builder clearNameToken() {
            bitField0_ = (bitField0_ & ~0x00000001);
            nameToken_ = 0;
            onChanged();
            return this;
          }

          private float value_ ;
          /**
           * optional float value = 2;
           */
          public boolean hasValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional float value = 2;
           */
          public float getValue() {
            return value_;
          }
          /**
           * optional float value = 2;
           */
          public Builder setValue(float value) {
            bitField0_ |= 0x00000002;
            value_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float value = 2;
           */
          public Builder clearValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            value_ = 0F;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.AutoStyleCriteria)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.AutoStyleCriteria)
      }

      public interface StrangeGemProgressOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.StrangeGemProgress)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 kill_eater_type = 1;
         */
        boolean hasKillEaterType();
        /**
         * optional uint32 kill_eater_type = 1;
         */
        int getKillEaterType();

        /**
         * optional uint32 gem_item_def_index = 2;
         */
        boolean hasGemItemDefIndex();
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        int getGemItemDefIndex();

        /**
         * optional uint32 required_hero_id = 3;
         */
        boolean hasRequiredHeroId();
        /**
         * optional uint32 required_hero_id = 3;
         */
        int getRequiredHeroId();

        /**
         * optional uint32 starting_value = 4;
         */
        boolean hasStartingValue();
        /**
         * optional uint32 starting_value = 4;
         */
        int getStartingValue();

        /**
         * optional uint32 ending_value = 5;
         */
        boolean hasEndingValue();
        /**
         * optional uint32 ending_value = 5;
         */
        int getEndingValue();

        /**
         * optional uint32 owner_item_def_index = 6;
         */
        boolean hasOwnerItemDefIndex();
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        int getOwnerItemDefIndex();

        /**
         * optional uint64 owner_item_id = 7;
         */
        boolean hasOwnerItemId();
        /**
         * optional uint64 owner_item_id = 7;
         */
        long getOwnerItemId();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.StrangeGemProgress}
       */
      public static final class StrangeGemProgress extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.StrangeGemProgress)
          StrangeGemProgressOrBuilder {
        // Use StrangeGemProgress.newBuilder() to construct.
        private StrangeGemProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private StrangeGemProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public StrangeGemProgress getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private StrangeGemProgress(
            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;
                  killEaterType_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  gemItemDefIndex_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  requiredHeroId_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  startingValue_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  endingValue_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  ownerItemDefIndex_ = input.readUInt32();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  ownerItemId_ = input.readUInt64();
                  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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int KILL_EATER_TYPE_FIELD_NUMBER = 1;
        private int killEaterType_;
        /**
         * optional uint32 kill_eater_type = 1;
         */
        public boolean hasKillEaterType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 kill_eater_type = 1;
         */
        public int getKillEaterType() {
          return killEaterType_;
        }

        public static final int GEM_ITEM_DEF_INDEX_FIELD_NUMBER = 2;
        private int gemItemDefIndex_;
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        public boolean hasGemItemDefIndex() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 gem_item_def_index = 2;
         */
        public int getGemItemDefIndex() {
          return gemItemDefIndex_;
        }

        public static final int REQUIRED_HERO_ID_FIELD_NUMBER = 3;
        private int requiredHeroId_;
        /**
         * optional uint32 required_hero_id = 3;
         */
        public boolean hasRequiredHeroId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 required_hero_id = 3;
         */
        public int getRequiredHeroId() {
          return requiredHeroId_;
        }

        public static final int STARTING_VALUE_FIELD_NUMBER = 4;
        private int startingValue_;
        /**
         * optional uint32 starting_value = 4;
         */
        public boolean hasStartingValue() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 starting_value = 4;
         */
        public int getStartingValue() {
          return startingValue_;
        }

        public static final int ENDING_VALUE_FIELD_NUMBER = 5;
        private int endingValue_;
        /**
         * optional uint32 ending_value = 5;
         */
        public boolean hasEndingValue() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 ending_value = 5;
         */
        public int getEndingValue() {
          return endingValue_;
        }

        public static final int OWNER_ITEM_DEF_INDEX_FIELD_NUMBER = 6;
        private int ownerItemDefIndex_;
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        public boolean hasOwnerItemDefIndex() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 owner_item_def_index = 6;
         */
        public int getOwnerItemDefIndex() {
          return ownerItemDefIndex_;
        }

        public static final int OWNER_ITEM_ID_FIELD_NUMBER = 7;
        private long ownerItemId_;
        /**
         * optional uint64 owner_item_id = 7;
         */
        public boolean hasOwnerItemId() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint64 owner_item_id = 7;
         */
        public long getOwnerItemId() {
          return ownerItemId_;
        }

        private void initFields() {
          killEaterType_ = 0;
          gemItemDefIndex_ = 0;
          requiredHeroId_ = 0;
          startingValue_ = 0;
          endingValue_ = 0;
          ownerItemDefIndex_ = 0;
          ownerItemId_ = 0L;
        }
        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, killEaterType_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, gemItemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, requiredHeroId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, startingValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(5, endingValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeUInt32(6, ownerItemDefIndex_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt64(7, ownerItemId_);
          }
          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, killEaterType_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, gemItemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, requiredHeroId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, startingValue_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, endingValue_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(6, ownerItemDefIndex_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(7, ownerItemId_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress 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 CDOTAMatchMetadata.Team.StrangeGemProgress}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.StrangeGemProgress)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.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();
            killEaterType_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            gemItemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            requiredHeroId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            startingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            endingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            ownerItemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            ownerItemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.killEaterType_ = killEaterType_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.gemItemDefIndex_ = gemItemDefIndex_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.requiredHeroId_ = requiredHeroId_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.startingValue_ = startingValue_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.endingValue_ = endingValue_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.ownerItemDefIndex_ = ownerItemDefIndex_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.ownerItemId_ = ownerItemId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance()) return this;
            if (other.hasKillEaterType()) {
              setKillEaterType(other.getKillEaterType());
            }
            if (other.hasGemItemDefIndex()) {
              setGemItemDefIndex(other.getGemItemDefIndex());
            }
            if (other.hasRequiredHeroId()) {
              setRequiredHeroId(other.getRequiredHeroId());
            }
            if (other.hasStartingValue()) {
              setStartingValue(other.getStartingValue());
            }
            if (other.hasEndingValue()) {
              setEndingValue(other.getEndingValue());
            }
            if (other.hasOwnerItemDefIndex()) {
              setOwnerItemDefIndex(other.getOwnerItemDefIndex());
            }
            if (other.hasOwnerItemId()) {
              setOwnerItemId(other.getOwnerItemId());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int killEaterType_ ;
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public boolean hasKillEaterType() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public int getKillEaterType() {
            return killEaterType_;
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public Builder setKillEaterType(int value) {
            bitField0_ |= 0x00000001;
            killEaterType_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 kill_eater_type = 1;
           */
          public Builder clearKillEaterType() {
            bitField0_ = (bitField0_ & ~0x00000001);
            killEaterType_ = 0;
            onChanged();
            return this;
          }

          private int gemItemDefIndex_ ;
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public boolean hasGemItemDefIndex() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public int getGemItemDefIndex() {
            return gemItemDefIndex_;
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public Builder setGemItemDefIndex(int value) {
            bitField0_ |= 0x00000002;
            gemItemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 gem_item_def_index = 2;
           */
          public Builder clearGemItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000002);
            gemItemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private int requiredHeroId_ ;
          /**
           * optional uint32 required_hero_id = 3;
           */
          public boolean hasRequiredHeroId() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public int getRequiredHeroId() {
            return requiredHeroId_;
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public Builder setRequiredHeroId(int value) {
            bitField0_ |= 0x00000004;
            requiredHeroId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 required_hero_id = 3;
           */
          public Builder clearRequiredHeroId() {
            bitField0_ = (bitField0_ & ~0x00000004);
            requiredHeroId_ = 0;
            onChanged();
            return this;
          }

          private int startingValue_ ;
          /**
           * optional uint32 starting_value = 4;
           */
          public boolean hasStartingValue() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public int getStartingValue() {
            return startingValue_;
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public Builder setStartingValue(int value) {
            bitField0_ |= 0x00000008;
            startingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 starting_value = 4;
           */
          public Builder clearStartingValue() {
            bitField0_ = (bitField0_ & ~0x00000008);
            startingValue_ = 0;
            onChanged();
            return this;
          }

          private int endingValue_ ;
          /**
           * optional uint32 ending_value = 5;
           */
          public boolean hasEndingValue() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public int getEndingValue() {
            return endingValue_;
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public Builder setEndingValue(int value) {
            bitField0_ |= 0x00000010;
            endingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 ending_value = 5;
           */
          public Builder clearEndingValue() {
            bitField0_ = (bitField0_ & ~0x00000010);
            endingValue_ = 0;
            onChanged();
            return this;
          }

          private int ownerItemDefIndex_ ;
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public boolean hasOwnerItemDefIndex() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public int getOwnerItemDefIndex() {
            return ownerItemDefIndex_;
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public Builder setOwnerItemDefIndex(int value) {
            bitField0_ |= 0x00000020;
            ownerItemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 owner_item_def_index = 6;
           */
          public Builder clearOwnerItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000020);
            ownerItemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private long ownerItemId_ ;
          /**
           * optional uint64 owner_item_id = 7;
           */
          public boolean hasOwnerItemId() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public long getOwnerItemId() {
            return ownerItemId_;
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public Builder setOwnerItemId(long value) {
            bitField0_ |= 0x00000040;
            ownerItemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint64 owner_item_id = 7;
           */
          public Builder clearOwnerItemId() {
            bitField0_ = (bitField0_ & ~0x00000040);
            ownerItemId_ = 0L;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.StrangeGemProgress)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.StrangeGemProgress)
      }

      public interface VictoryPredictionOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.VictoryPrediction)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint64 item_id = 1;
         */
        boolean hasItemId();
        /**
         * optional uint64 item_id = 1;
         */
        long getItemId();

        /**
         * optional uint32 item_def_index = 2;
         */
        boolean hasItemDefIndex();
        /**
         * optional uint32 item_def_index = 2;
         */
        int getItemDefIndex();

        /**
         * optional uint32 starting_value = 3;
         */
        boolean hasStartingValue();
        /**
         * optional uint32 starting_value = 3;
         */
        int getStartingValue();

        /**
         * optional bool is_victory = 4;
         */
        boolean hasIsVictory();
        /**
         * optional bool is_victory = 4;
         */
        boolean getIsVictory();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.VictoryPrediction}
       */
      public static final class VictoryPrediction extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.VictoryPrediction)
          VictoryPredictionOrBuilder {
        // Use VictoryPrediction.newBuilder() to construct.
        private VictoryPrediction(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private VictoryPrediction(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public VictoryPrediction getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private VictoryPrediction(
            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;
                  itemId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  itemDefIndex_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  startingValue_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  isVictory_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ITEM_ID_FIELD_NUMBER = 1;
        private long itemId_;
        /**
         * optional uint64 item_id = 1;
         */
        public boolean hasItemId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint64 item_id = 1;
         */
        public long getItemId() {
          return itemId_;
        }

        public static final int ITEM_DEF_INDEX_FIELD_NUMBER = 2;
        private int itemDefIndex_;
        /**
         * optional uint32 item_def_index = 2;
         */
        public boolean hasItemDefIndex() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 item_def_index = 2;
         */
        public int getItemDefIndex() {
          return itemDefIndex_;
        }

        public static final int STARTING_VALUE_FIELD_NUMBER = 3;
        private int startingValue_;
        /**
         * optional uint32 starting_value = 3;
         */
        public boolean hasStartingValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 starting_value = 3;
         */
        public int getStartingValue() {
          return startingValue_;
        }

        public static final int IS_VICTORY_FIELD_NUMBER = 4;
        private boolean isVictory_;
        /**
         * optional bool is_victory = 4;
         */
        public boolean hasIsVictory() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional bool is_victory = 4;
         */
        public boolean getIsVictory() {
          return isVictory_;
        }

        private void initFields() {
          itemId_ = 0L;
          itemDefIndex_ = 0;
          startingValue_ = 0;
          isVictory_ = 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.writeUInt64(1, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, itemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, startingValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(4, isVictory_);
          }
          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, itemId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, itemDefIndex_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, startingValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, isVictory_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction 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 CDOTAMatchMetadata.Team.VictoryPrediction}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.VictoryPrediction)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.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();
            itemId_ = 0L;
            bitField0_ = (bitField0_ & ~0x00000001);
            itemDefIndex_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            startingValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            isVictory_ = false;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.itemId_ = itemId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.itemDefIndex_ = itemDefIndex_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.startingValue_ = startingValue_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.isVictory_ = isVictory_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance()) return this;
            if (other.hasItemId()) {
              setItemId(other.getItemId());
            }
            if (other.hasItemDefIndex()) {
              setItemDefIndex(other.getItemDefIndex());
            }
            if (other.hasStartingValue()) {
              setStartingValue(other.getStartingValue());
            }
            if (other.hasIsVictory()) {
              setIsVictory(other.getIsVictory());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private long itemId_ ;
          /**
           * optional uint64 item_id = 1;
           */
          public boolean hasItemId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint64 item_id = 1;
           */
          public long getItemId() {
            return itemId_;
          }
          /**
           * optional uint64 item_id = 1;
           */
          public Builder setItemId(long value) {
            bitField0_ |= 0x00000001;
            itemId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint64 item_id = 1;
           */
          public Builder clearItemId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            itemId_ = 0L;
            onChanged();
            return this;
          }

          private int itemDefIndex_ ;
          /**
           * optional uint32 item_def_index = 2;
           */
          public boolean hasItemDefIndex() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public int getItemDefIndex() {
            return itemDefIndex_;
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public Builder setItemDefIndex(int value) {
            bitField0_ |= 0x00000002;
            itemDefIndex_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 item_def_index = 2;
           */
          public Builder clearItemDefIndex() {
            bitField0_ = (bitField0_ & ~0x00000002);
            itemDefIndex_ = 0;
            onChanged();
            return this;
          }

          private int startingValue_ ;
          /**
           * optional uint32 starting_value = 3;
           */
          public boolean hasStartingValue() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public int getStartingValue() {
            return startingValue_;
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public Builder setStartingValue(int value) {
            bitField0_ |= 0x00000004;
            startingValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 starting_value = 3;
           */
          public Builder clearStartingValue() {
            bitField0_ = (bitField0_ & ~0x00000004);
            startingValue_ = 0;
            onChanged();
            return this;
          }

          private boolean isVictory_ ;
          /**
           * optional bool is_victory = 4;
           */
          public boolean hasIsVictory() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional bool is_victory = 4;
           */
          public boolean getIsVictory() {
            return isVictory_;
          }
          /**
           * optional bool is_victory = 4;
           */
          public Builder setIsVictory(boolean value) {
            bitField0_ |= 0x00000008;
            isVictory_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool is_victory = 4;
           */
          public Builder clearIsVictory() {
            bitField0_ = (bitField0_ & ~0x00000008);
            isVictory_ = false;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.VictoryPrediction)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.VictoryPrediction)
      }

      public interface SubChallengeOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.SubChallenge)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 slot_id = 1;
         */
        boolean hasSlotId();
        /**
         * optional uint32 slot_id = 1;
         */
        int getSlotId();

        /**
         * optional uint32 start_value = 2;
         */
        boolean hasStartValue();
        /**
         * optional uint32 start_value = 2;
         */
        int getStartValue();

        /**
         * optional uint32 end_value = 3;
         */
        boolean hasEndValue();
        /**
         * optional uint32 end_value = 3;
         */
        int getEndValue();

        /**
         * optional bool completed = 4;
         */
        boolean hasCompleted();
        /**
         * optional bool completed = 4;
         */
        boolean getCompleted();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.SubChallenge}
       */
      public static final class SubChallenge extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.SubChallenge)
          SubChallengeOrBuilder {
        // Use SubChallenge.newBuilder() to construct.
        private SubChallenge(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private SubChallenge(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public SubChallenge getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private SubChallenge(
            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;
                  slotId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  startValue_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  endValue_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  completed_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int SLOT_ID_FIELD_NUMBER = 1;
        private int slotId_;
        /**
         * optional uint32 slot_id = 1;
         */
        public boolean hasSlotId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 slot_id = 1;
         */
        public int getSlotId() {
          return slotId_;
        }

        public static final int START_VALUE_FIELD_NUMBER = 2;
        private int startValue_;
        /**
         * optional uint32 start_value = 2;
         */
        public boolean hasStartValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 start_value = 2;
         */
        public int getStartValue() {
          return startValue_;
        }

        public static final int END_VALUE_FIELD_NUMBER = 3;
        private int endValue_;
        /**
         * optional uint32 end_value = 3;
         */
        public boolean hasEndValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 end_value = 3;
         */
        public int getEndValue() {
          return endValue_;
        }

        public static final int COMPLETED_FIELD_NUMBER = 4;
        private boolean completed_;
        /**
         * optional bool completed = 4;
         */
        public boolean hasCompleted() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional bool completed = 4;
         */
        public boolean getCompleted() {
          return completed_;
        }

        private void initFields() {
          slotId_ = 0;
          startValue_ = 0;
          endValue_ = 0;
          completed_ = 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, slotId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, startValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, endValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(4, completed_);
          }
          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, slotId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, startValue_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, endValue_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, completed_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge 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 CDOTAMatchMetadata.Team.SubChallenge}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.SubChallenge)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.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();
            slotId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            startValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            endValue_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            completed_ = false;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.slotId_ = slotId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.startValue_ = startValue_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.endValue_ = endValue_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.completed_ = completed_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance()) return this;
            if (other.hasSlotId()) {
              setSlotId(other.getSlotId());
            }
            if (other.hasStartValue()) {
              setStartValue(other.getStartValue());
            }
            if (other.hasEndValue()) {
              setEndValue(other.getEndValue());
            }
            if (other.hasCompleted()) {
              setCompleted(other.getCompleted());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int slotId_ ;
          /**
           * optional uint32 slot_id = 1;
           */
          public boolean hasSlotId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public int getSlotId() {
            return slotId_;
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public Builder setSlotId(int value) {
            bitField0_ |= 0x00000001;
            slotId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 slot_id = 1;
           */
          public Builder clearSlotId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            slotId_ = 0;
            onChanged();
            return this;
          }

          private int startValue_ ;
          /**
           * optional uint32 start_value = 2;
           */
          public boolean hasStartValue() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 start_value = 2;
           */
          public int getStartValue() {
            return startValue_;
          }
          /**
           * optional uint32 start_value = 2;
           */
          public Builder setStartValue(int value) {
            bitField0_ |= 0x00000002;
            startValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 start_value = 2;
           */
          public Builder clearStartValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            startValue_ = 0;
            onChanged();
            return this;
          }

          private int endValue_ ;
          /**
           * optional uint32 end_value = 3;
           */
          public boolean hasEndValue() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 end_value = 3;
           */
          public int getEndValue() {
            return endValue_;
          }
          /**
           * optional uint32 end_value = 3;
           */
          public Builder setEndValue(int value) {
            bitField0_ |= 0x00000004;
            endValue_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 end_value = 3;
           */
          public Builder clearEndValue() {
            bitField0_ = (bitField0_ & ~0x00000004);
            endValue_ = 0;
            onChanged();
            return this;
          }

          private boolean completed_ ;
          /**
           * optional bool completed = 4;
           */
          public boolean hasCompleted() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional bool completed = 4;
           */
          public boolean getCompleted() {
            return completed_;
          }
          /**
           * optional bool completed = 4;
           */
          public Builder setCompleted(boolean value) {
            bitField0_ |= 0x00000008;
            completed_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool completed = 4;
           */
          public Builder clearCompleted() {
            bitField0_ = (bitField0_ & ~0x00000008);
            completed_ = false;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.SubChallenge)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.SubChallenge)
      }

      public interface CavernChallengeResultOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.CavernChallengeResult)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 completed_path_id = 1;
         */
        boolean hasCompletedPathId();
        /**
         * optional uint32 completed_path_id = 1;
         */
        int getCompletedPathId();

        /**
         * optional uint32 claimed_room_id = 2;
         */
        boolean hasClaimedRoomId();
        /**
         * optional uint32 claimed_room_id = 2;
         */
        int getClaimedRoomId();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.CavernChallengeResult}
       */
      public static final class CavernChallengeResult extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.CavernChallengeResult)
          CavernChallengeResultOrBuilder {
        // Use CavernChallengeResult.newBuilder() to construct.
        private CavernChallengeResult(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private CavernChallengeResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public CavernChallengeResult getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private CavernChallengeResult(
            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;
                  completedPathId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  claimedRoomId_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int COMPLETED_PATH_ID_FIELD_NUMBER = 1;
        private int completedPathId_;
        /**
         * optional uint32 completed_path_id = 1;
         */
        public boolean hasCompletedPathId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 completed_path_id = 1;
         */
        public int getCompletedPathId() {
          return completedPathId_;
        }

        public static final int CLAIMED_ROOM_ID_FIELD_NUMBER = 2;
        private int claimedRoomId_;
        /**
         * optional uint32 claimed_room_id = 2;
         */
        public boolean hasClaimedRoomId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 claimed_room_id = 2;
         */
        public int getClaimedRoomId() {
          return claimedRoomId_;
        }

        private void initFields() {
          completedPathId_ = 0;
          claimedRoomId_ = 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, completedPathId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, claimedRoomId_);
          }
          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, completedPathId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, claimedRoomId_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult 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 CDOTAMatchMetadata.Team.CavernChallengeResult}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.CavernChallengeResult)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.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();
            completedPathId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            claimedRoomId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.completedPathId_ = completedPathId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.claimedRoomId_ = claimedRoomId_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance()) return this;
            if (other.hasCompletedPathId()) {
              setCompletedPathId(other.getCompletedPathId());
            }
            if (other.hasClaimedRoomId()) {
              setClaimedRoomId(other.getClaimedRoomId());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int completedPathId_ ;
          /**
           * optional uint32 completed_path_id = 1;
           */
          public boolean hasCompletedPathId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public int getCompletedPathId() {
            return completedPathId_;
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public Builder setCompletedPathId(int value) {
            bitField0_ |= 0x00000001;
            completedPathId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 completed_path_id = 1;
           */
          public Builder clearCompletedPathId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            completedPathId_ = 0;
            onChanged();
            return this;
          }

          private int claimedRoomId_ ;
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public boolean hasClaimedRoomId() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public int getClaimedRoomId() {
            return claimedRoomId_;
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public Builder setClaimedRoomId(int value) {
            bitField0_ |= 0x00000002;
            claimedRoomId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 claimed_room_id = 2;
           */
          public Builder clearClaimedRoomId() {
            bitField0_ = (bitField0_ & ~0x00000002);
            claimedRoomId_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.CavernChallengeResult)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.CavernChallengeResult)
      }

      public interface ActionGrantOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.ActionGrant)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 action_id = 1;
         */
        boolean hasActionId();
        /**
         * optional uint32 action_id = 1;
         */
        int getActionId();

        /**
         * optional uint32 quantity = 2;
         */
        boolean hasQuantity();
        /**
         * optional uint32 quantity = 2;
         */
        int getQuantity();

        /**
         * optional uint32 audit = 3;
         */
        boolean hasAudit();
        /**
         * optional uint32 audit = 3;
         */
        int getAudit();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.ActionGrant}
       */
      public static final class ActionGrant extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.ActionGrant)
          ActionGrantOrBuilder {
        // Use ActionGrant.newBuilder() to construct.
        private ActionGrant(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private ActionGrant(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public ActionGrant getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private ActionGrant(
            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;
                  actionId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  quantity_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  audit_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int ACTION_ID_FIELD_NUMBER = 1;
        private int actionId_;
        /**
         * optional uint32 action_id = 1;
         */
        public boolean hasActionId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 action_id = 1;
         */
        public int getActionId() {
          return actionId_;
        }

        public static final int QUANTITY_FIELD_NUMBER = 2;
        private int quantity_;
        /**
         * optional uint32 quantity = 2;
         */
        public boolean hasQuantity() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 quantity = 2;
         */
        public int getQuantity() {
          return quantity_;
        }

        public static final int AUDIT_FIELD_NUMBER = 3;
        private int audit_;
        /**
         * optional uint32 audit = 3;
         */
        public boolean hasAudit() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 audit = 3;
         */
        public int getAudit() {
          return audit_;
        }

        private void initFields() {
          actionId_ = 0;
          quantity_ = 0;
          audit_ = 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, actionId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, quantity_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, audit_);
          }
          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, actionId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, quantity_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, audit_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant 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 CDOTAMatchMetadata.Team.ActionGrant}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.ActionGrant)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.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();
            actionId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            quantity_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            audit_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.actionId_ = actionId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.quantity_ = quantity_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.audit_ = audit_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance()) return this;
            if (other.hasActionId()) {
              setActionId(other.getActionId());
            }
            if (other.hasQuantity()) {
              setQuantity(other.getQuantity());
            }
            if (other.hasAudit()) {
              setAudit(other.getAudit());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int actionId_ ;
          /**
           * optional uint32 action_id = 1;
           */
          public boolean hasActionId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 action_id = 1;
           */
          public int getActionId() {
            return actionId_;
          }
          /**
           * optional uint32 action_id = 1;
           */
          public Builder setActionId(int value) {
            bitField0_ |= 0x00000001;
            actionId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 action_id = 1;
           */
          public Builder clearActionId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            actionId_ = 0;
            onChanged();
            return this;
          }

          private int quantity_ ;
          /**
           * optional uint32 quantity = 2;
           */
          public boolean hasQuantity() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 quantity = 2;
           */
          public int getQuantity() {
            return quantity_;
          }
          /**
           * optional uint32 quantity = 2;
           */
          public Builder setQuantity(int value) {
            bitField0_ |= 0x00000002;
            quantity_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 quantity = 2;
           */
          public Builder clearQuantity() {
            bitField0_ = (bitField0_ & ~0x00000002);
            quantity_ = 0;
            onChanged();
            return this;
          }

          private int audit_ ;
          /**
           * optional uint32 audit = 3;
           */
          public boolean hasAudit() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 audit = 3;
           */
          public int getAudit() {
            return audit_;
          }
          /**
           * optional uint32 audit = 3;
           */
          public Builder setAudit(int value) {
            bitField0_ |= 0x00000004;
            audit_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 audit = 3;
           */
          public Builder clearAudit() {
            bitField0_ = (bitField0_ & ~0x00000004);
            audit_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.ActionGrant)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.ActionGrant)
      }

      public interface CandyGrantOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.CandyGrant)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 points = 1;
         */
        boolean hasPoints();
        /**
         * optional uint32 points = 1;
         */
        int getPoints();

        /**
         * optional uint32 reason = 2;
         */
        boolean hasReason();
        /**
         * optional uint32 reason = 2;
         */
        int getReason();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.CandyGrant}
       */
      public static final class CandyGrant extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.CandyGrant)
          CandyGrantOrBuilder {
        // Use CandyGrant.newBuilder() to construct.
        private CandyGrant(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private CandyGrant(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public CandyGrant getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private CandyGrant(
            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;
                  points_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  reason_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CandyGrant_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int POINTS_FIELD_NUMBER = 1;
        private int points_;
        /**
         * optional uint32 points = 1;
         */
        public boolean hasPoints() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 points = 1;
         */
        public int getPoints() {
          return points_;
        }

        public static final int REASON_FIELD_NUMBER = 2;
        private int reason_;
        /**
         * optional uint32 reason = 2;
         */
        public boolean hasReason() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 reason = 2;
         */
        public int getReason() {
          return reason_;
        }

        private void initFields() {
          points_ = 0;
          reason_ = 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, points_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, reason_);
          }
          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, points_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, reason_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant 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 CDOTAMatchMetadata.Team.CandyGrant}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.CandyGrant)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CandyGrant_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.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();
            points_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            reason_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.points_ = points_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.reason_ = reason_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.getDefaultInstance()) return this;
            if (other.hasPoints()) {
              setPoints(other.getPoints());
            }
            if (other.hasReason()) {
              setReason(other.getReason());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int points_ ;
          /**
           * optional uint32 points = 1;
           */
          public boolean hasPoints() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 points = 1;
           */
          public int getPoints() {
            return points_;
          }
          /**
           * optional uint32 points = 1;
           */
          public Builder setPoints(int value) {
            bitField0_ |= 0x00000001;
            points_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 points = 1;
           */
          public Builder clearPoints() {
            bitField0_ = (bitField0_ & ~0x00000001);
            points_ = 0;
            onChanged();
            return this;
          }

          private int reason_ ;
          /**
           * optional uint32 reason = 2;
           */
          public boolean hasReason() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 reason = 2;
           */
          public int getReason() {
            return reason_;
          }
          /**
           * optional uint32 reason = 2;
           */
          public Builder setReason(int value) {
            bitField0_ |= 0x00000002;
            reason_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 reason = 2;
           */
          public Builder clearReason() {
            bitField0_ = (bitField0_ & ~0x00000002);
            reason_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.CandyGrant)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.CandyGrant)
      }

      public interface EventDataOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.EventData)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 event_id = 1;
         */
        boolean hasEventId();
        /**
         * optional uint32 event_id = 1;
         */
        int getEventId();

        /**
         * optional uint32 event_points = 2;
         */
        boolean hasEventPoints();
        /**
         * optional uint32 event_points = 2;
         */
        int getEventPoints();

        /**
         * optional uint32 challenge_instance_id = 3;
         */
        boolean hasChallengeInstanceId();
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        int getChallengeInstanceId();

        /**
         * optional uint32 challenge_quest_id = 4;
         */
        boolean hasChallengeQuestId();
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        int getChallengeQuestId();

        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        boolean hasChallengeQuestChallengeId();
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        int getChallengeQuestChallengeId();

        /**
         * optional bool challenge_completed = 6;
         */
        boolean hasChallengeCompleted();
        /**
         * optional bool challenge_completed = 6;
         */
        boolean getChallengeCompleted();

        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        boolean hasChallengeRankCompleted();
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        int getChallengeRankCompleted();

        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        boolean hasChallengeRankPreviouslyCompleted();
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        int getChallengeRankPreviouslyCompleted();

        /**
         * optional bool event_owned = 9;
         */
        boolean hasEventOwned();
        /**
         * optional bool event_owned = 9;
         */
        boolean getEventOwned();

        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        java.util.List 
            getSubChallengesWithProgressList();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        int getSubChallengesWithProgressCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        java.util.List 
            getSubChallengesWithProgressOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
            int index);

        /**
         * optional uint32 wager_winnings = 11;
         */
        boolean hasWagerWinnings();
        /**
         * optional uint32 wager_winnings = 11;
         */
        int getWagerWinnings();

        /**
         * optional bool cavern_challenge_active = 12;
         */
        boolean hasCavernChallengeActive();
        /**
         * optional bool cavern_challenge_active = 12;
         */
        boolean getCavernChallengeActive();

        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        boolean hasCavernChallengeWinnings();
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        int getCavernChallengeWinnings();

        /**
         * optional uint32 amount_wagered = 14;
         */
        boolean hasAmountWagered();
        /**
         * optional uint32 amount_wagered = 14;
         */
        int getAmountWagered();

        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        boolean hasPeriodicPointAdjustments();
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        int getPeriodicPointAdjustments();

        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        java.util.List 
            getCavernChallengeMapResultsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        int getCavernChallengeMapResultsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        java.util.List 
            getCavernChallengeMapResultsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
            int index);

        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        boolean hasCavernChallengePlusShardWinnings();
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        int getCavernChallengePlusShardWinnings();

        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        java.util.List 
            getActionsGrantedList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        int getActionsGrantedCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        java.util.List 
            getActionsGrantedOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
            int index);

        /**
         * optional uint32 cavern_crawl_map_variant = 20;
         */
        boolean hasCavernCrawlMapVariant();
        /**
         * optional uint32 cavern_crawl_map_variant = 20;
         */
        int getCavernCrawlMapVariant();

        /**
         * optional uint32 team_wager_bonus_pct = 21;
         */
        boolean hasTeamWagerBonusPct();
        /**
         * optional uint32 team_wager_bonus_pct = 21;
         */
        int getTeamWagerBonusPct();

        /**
         * optional uint32 wager_streak_pct = 22;
         */
        boolean hasWagerStreakPct();
        /**
         * optional uint32 wager_streak_pct = 22;
         */
        int getWagerStreakPct();

        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        java.util.List 
            getCandyPointsGrantedList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant getCandyPointsGranted(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        int getCandyPointsGrantedCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        java.util.List 
            getCandyPointsGrantedOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder getCandyPointsGrantedOrBuilder(
            int index);
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.EventData}
       */
      public static final class EventData extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.EventData)
          EventDataOrBuilder {
        // Use EventData.newBuilder() to construct.
        private EventData(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private EventData(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public EventData getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private EventData(
            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;
                  eventId_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  eventPoints_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  challengeInstanceId_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  challengeQuestId_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  challengeQuestChallengeId_ = input.readUInt32();
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  challengeCompleted_ = input.readBool();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  challengeRankCompleted_ = input.readUInt32();
                  break;
                }
                case 64: {
                  bitField0_ |= 0x00000080;
                  challengeRankPreviouslyCompleted_ = input.readUInt32();
                  break;
                }
                case 72: {
                  bitField0_ |= 0x00000100;
                  eventOwned_ = input.readBool();
                  break;
                }
                case 82: {
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                    subChallengesWithProgress_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  subChallengesWithProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.PARSER, extensionRegistry));
                  break;
                }
                case 88: {
                  bitField0_ |= 0x00000200;
                  wagerWinnings_ = input.readUInt32();
                  break;
                }
                case 96: {
                  bitField0_ |= 0x00000400;
                  cavernChallengeActive_ = input.readBool();
                  break;
                }
                case 104: {
                  bitField0_ |= 0x00000800;
                  cavernChallengeWinnings_ = input.readUInt32();
                  break;
                }
                case 112: {
                  bitField0_ |= 0x00001000;
                  amountWagered_ = input.readUInt32();
                  break;
                }
                case 128: {
                  bitField0_ |= 0x00002000;
                  periodicPointAdjustments_ = input.readUInt32();
                  break;
                }
                case 138: {
                  if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                    cavernChallengeMapResults_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00008000;
                  }
                  cavernChallengeMapResults_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.PARSER, extensionRegistry));
                  break;
                }
                case 144: {
                  bitField0_ |= 0x00004000;
                  cavernChallengePlusShardWinnings_ = input.readUInt32();
                  break;
                }
                case 154: {
                  if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
                    actionsGranted_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00020000;
                  }
                  actionsGranted_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.PARSER, extensionRegistry));
                  break;
                }
                case 160: {
                  bitField0_ |= 0x00008000;
                  cavernCrawlMapVariant_ = input.readUInt32();
                  break;
                }
                case 168: {
                  bitField0_ |= 0x00010000;
                  teamWagerBonusPct_ = input.readUInt32();
                  break;
                }
                case 176: {
                  bitField0_ |= 0x00020000;
                  wagerStreakPct_ = input.readUInt32();
                  break;
                }
                case 186: {
                  if (!((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
                    candyPointsGranted_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00200000;
                  }
                  candyPointsGranted_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.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_ & 0x00000200) == 0x00000200)) {
              subChallengesWithProgress_ = java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            }
            if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
              cavernChallengeMapResults_ = java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            }
            if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
              actionsGranted_ = java.util.Collections.unmodifiableList(actionsGranted_);
            }
            if (((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
              candyPointsGranted_ = java.util.Collections.unmodifiableList(candyPointsGranted_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int EVENT_ID_FIELD_NUMBER = 1;
        private int eventId_;
        /**
         * optional uint32 event_id = 1;
         */
        public boolean hasEventId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 event_id = 1;
         */
        public int getEventId() {
          return eventId_;
        }

        public static final int EVENT_POINTS_FIELD_NUMBER = 2;
        private int eventPoints_;
        /**
         * optional uint32 event_points = 2;
         */
        public boolean hasEventPoints() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 event_points = 2;
         */
        public int getEventPoints() {
          return eventPoints_;
        }

        public static final int CHALLENGE_INSTANCE_ID_FIELD_NUMBER = 3;
        private int challengeInstanceId_;
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public boolean hasChallengeInstanceId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public int getChallengeInstanceId() {
          return challengeInstanceId_;
        }

        public static final int CHALLENGE_QUEST_ID_FIELD_NUMBER = 4;
        private int challengeQuestId_;
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        public boolean hasChallengeQuestId() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 challenge_quest_id = 4;
         */
        public int getChallengeQuestId() {
          return challengeQuestId_;
        }

        public static final int CHALLENGE_QUEST_CHALLENGE_ID_FIELD_NUMBER = 5;
        private int challengeQuestChallengeId_;
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        public boolean hasChallengeQuestChallengeId() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 challenge_quest_challenge_id = 5;
         */
        public int getChallengeQuestChallengeId() {
          return challengeQuestChallengeId_;
        }

        public static final int CHALLENGE_COMPLETED_FIELD_NUMBER = 6;
        private boolean challengeCompleted_;
        /**
         * optional bool challenge_completed = 6;
         */
        public boolean hasChallengeCompleted() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional bool challenge_completed = 6;
         */
        public boolean getChallengeCompleted() {
          return challengeCompleted_;
        }

        public static final int CHALLENGE_RANK_COMPLETED_FIELD_NUMBER = 7;
        private int challengeRankCompleted_;
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        public boolean hasChallengeRankCompleted() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 challenge_rank_completed = 7;
         */
        public int getChallengeRankCompleted() {
          return challengeRankCompleted_;
        }

        public static final int CHALLENGE_RANK_PREVIOUSLY_COMPLETED_FIELD_NUMBER = 8;
        private int challengeRankPreviouslyCompleted_;
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        public boolean hasChallengeRankPreviouslyCompleted() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional uint32 challenge_rank_previously_completed = 8;
         */
        public int getChallengeRankPreviouslyCompleted() {
          return challengeRankPreviouslyCompleted_;
        }

        public static final int EVENT_OWNED_FIELD_NUMBER = 9;
        private boolean eventOwned_;
        /**
         * optional bool event_owned = 9;
         */
        public boolean hasEventOwned() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional bool event_owned = 9;
         */
        public boolean getEventOwned() {
          return eventOwned_;
        }

        public static final int SUB_CHALLENGES_WITH_PROGRESS_FIELD_NUMBER = 10;
        private java.util.List subChallengesWithProgress_;
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public java.util.List getSubChallengesWithProgressList() {
          return subChallengesWithProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public java.util.List 
            getSubChallengesWithProgressOrBuilderList() {
          return subChallengesWithProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public int getSubChallengesWithProgressCount() {
          return subChallengesWithProgress_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index) {
          return subChallengesWithProgress_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
            int index) {
          return subChallengesWithProgress_.get(index);
        }

        public static final int WAGER_WINNINGS_FIELD_NUMBER = 11;
        private int wagerWinnings_;
        /**
         * optional uint32 wager_winnings = 11;
         */
        public boolean hasWagerWinnings() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 wager_winnings = 11;
         */
        public int getWagerWinnings() {
          return wagerWinnings_;
        }

        public static final int CAVERN_CHALLENGE_ACTIVE_FIELD_NUMBER = 12;
        private boolean cavernChallengeActive_;
        /**
         * optional bool cavern_challenge_active = 12;
         */
        public boolean hasCavernChallengeActive() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional bool cavern_challenge_active = 12;
         */
        public boolean getCavernChallengeActive() {
          return cavernChallengeActive_;
        }

        public static final int CAVERN_CHALLENGE_WINNINGS_FIELD_NUMBER = 13;
        private int cavernChallengeWinnings_;
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        public boolean hasCavernChallengeWinnings() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional uint32 cavern_challenge_winnings = 13;
         */
        public int getCavernChallengeWinnings() {
          return cavernChallengeWinnings_;
        }

        public static final int AMOUNT_WAGERED_FIELD_NUMBER = 14;
        private int amountWagered_;
        /**
         * optional uint32 amount_wagered = 14;
         */
        public boolean hasAmountWagered() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional uint32 amount_wagered = 14;
         */
        public int getAmountWagered() {
          return amountWagered_;
        }

        public static final int PERIODIC_POINT_ADJUSTMENTS_FIELD_NUMBER = 16;
        private int periodicPointAdjustments_;
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        public boolean hasPeriodicPointAdjustments() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional uint32 periodic_point_adjustments = 16;
         */
        public int getPeriodicPointAdjustments() {
          return periodicPointAdjustments_;
        }

        public static final int CAVERN_CHALLENGE_MAP_RESULTS_FIELD_NUMBER = 17;
        private java.util.List cavernChallengeMapResults_;
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public java.util.List getCavernChallengeMapResultsList() {
          return cavernChallengeMapResults_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public java.util.List 
            getCavernChallengeMapResultsOrBuilderList() {
          return cavernChallengeMapResults_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public int getCavernChallengeMapResultsCount() {
          return cavernChallengeMapResults_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index) {
          return cavernChallengeMapResults_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
            int index) {
          return cavernChallengeMapResults_.get(index);
        }

        public static final int CAVERN_CHALLENGE_PLUS_SHARD_WINNINGS_FIELD_NUMBER = 18;
        private int cavernChallengePlusShardWinnings_;
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        public boolean hasCavernChallengePlusShardWinnings() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional uint32 cavern_challenge_plus_shard_winnings = 18;
         */
        public int getCavernChallengePlusShardWinnings() {
          return cavernChallengePlusShardWinnings_;
        }

        public static final int ACTIONS_GRANTED_FIELD_NUMBER = 19;
        private java.util.List actionsGranted_;
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public java.util.List getActionsGrantedList() {
          return actionsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public java.util.List 
            getActionsGrantedOrBuilderList() {
          return actionsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public int getActionsGrantedCount() {
          return actionsGranted_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index) {
          return actionsGranted_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
            int index) {
          return actionsGranted_.get(index);
        }

        public static final int CAVERN_CRAWL_MAP_VARIANT_FIELD_NUMBER = 20;
        private int cavernCrawlMapVariant_;
        /**
         * optional uint32 cavern_crawl_map_variant = 20;
         */
        public boolean hasCavernCrawlMapVariant() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional uint32 cavern_crawl_map_variant = 20;
         */
        public int getCavernCrawlMapVariant() {
          return cavernCrawlMapVariant_;
        }

        public static final int TEAM_WAGER_BONUS_PCT_FIELD_NUMBER = 21;
        private int teamWagerBonusPct_;
        /**
         * optional uint32 team_wager_bonus_pct = 21;
         */
        public boolean hasTeamWagerBonusPct() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * optional uint32 team_wager_bonus_pct = 21;
         */
        public int getTeamWagerBonusPct() {
          return teamWagerBonusPct_;
        }

        public static final int WAGER_STREAK_PCT_FIELD_NUMBER = 22;
        private int wagerStreakPct_;
        /**
         * optional uint32 wager_streak_pct = 22;
         */
        public boolean hasWagerStreakPct() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * optional uint32 wager_streak_pct = 22;
         */
        public int getWagerStreakPct() {
          return wagerStreakPct_;
        }

        public static final int CANDY_POINTS_GRANTED_FIELD_NUMBER = 23;
        private java.util.List candyPointsGranted_;
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        public java.util.List getCandyPointsGrantedList() {
          return candyPointsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        public java.util.List 
            getCandyPointsGrantedOrBuilderList() {
          return candyPointsGranted_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        public int getCandyPointsGrantedCount() {
          return candyPointsGranted_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant getCandyPointsGranted(int index) {
          return candyPointsGranted_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder getCandyPointsGrantedOrBuilder(
            int index) {
          return candyPointsGranted_.get(index);
        }

        private void initFields() {
          eventId_ = 0;
          eventPoints_ = 0;
          challengeInstanceId_ = 0;
          challengeQuestId_ = 0;
          challengeQuestChallengeId_ = 0;
          challengeCompleted_ = false;
          challengeRankCompleted_ = 0;
          challengeRankPreviouslyCompleted_ = 0;
          eventOwned_ = false;
          subChallengesWithProgress_ = java.util.Collections.emptyList();
          wagerWinnings_ = 0;
          cavernChallengeActive_ = false;
          cavernChallengeWinnings_ = 0;
          amountWagered_ = 0;
          periodicPointAdjustments_ = 0;
          cavernChallengeMapResults_ = java.util.Collections.emptyList();
          cavernChallengePlusShardWinnings_ = 0;
          actionsGranted_ = java.util.Collections.emptyList();
          cavernCrawlMapVariant_ = 0;
          teamWagerBonusPct_ = 0;
          wagerStreakPct_ = 0;
          candyPointsGranted_ = 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(1, eventId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, eventPoints_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, challengeInstanceId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, challengeQuestId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(5, challengeQuestChallengeId_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeBool(6, challengeCompleted_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(7, challengeRankCompleted_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            output.writeUInt32(8, challengeRankPreviouslyCompleted_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            output.writeBool(9, eventOwned_);
          }
          for (int i = 0; i < subChallengesWithProgress_.size(); i++) {
            output.writeMessage(10, subChallengesWithProgress_.get(i));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            output.writeUInt32(11, wagerWinnings_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            output.writeBool(12, cavernChallengeActive_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            output.writeUInt32(13, cavernChallengeWinnings_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            output.writeUInt32(14, amountWagered_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            output.writeUInt32(16, periodicPointAdjustments_);
          }
          for (int i = 0; i < cavernChallengeMapResults_.size(); i++) {
            output.writeMessage(17, cavernChallengeMapResults_.get(i));
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            output.writeUInt32(18, cavernChallengePlusShardWinnings_);
          }
          for (int i = 0; i < actionsGranted_.size(); i++) {
            output.writeMessage(19, actionsGranted_.get(i));
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            output.writeUInt32(20, cavernCrawlMapVariant_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            output.writeUInt32(21, teamWagerBonusPct_);
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            output.writeUInt32(22, wagerStreakPct_);
          }
          for (int i = 0; i < candyPointsGranted_.size(); i++) {
            output.writeMessage(23, candyPointsGranted_.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(1, eventId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, eventPoints_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, challengeInstanceId_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, challengeQuestId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(5, challengeQuestChallengeId_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(6, challengeCompleted_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, challengeRankCompleted_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(8, challengeRankPreviouslyCompleted_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(9, eventOwned_);
          }
          for (int i = 0; i < subChallengesWithProgress_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(10, subChallengesWithProgress_.get(i));
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(11, wagerWinnings_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(12, cavernChallengeActive_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(13, cavernChallengeWinnings_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(14, amountWagered_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(16, periodicPointAdjustments_);
          }
          for (int i = 0; i < cavernChallengeMapResults_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(17, cavernChallengeMapResults_.get(i));
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(18, cavernChallengePlusShardWinnings_);
          }
          for (int i = 0; i < actionsGranted_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(19, actionsGranted_.get(i));
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(20, cavernCrawlMapVariant_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(21, teamWagerBonusPct_);
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(22, wagerStreakPct_);
          }
          for (int i = 0; i < candyPointsGranted_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(23, candyPointsGranted_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData 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 CDOTAMatchMetadata.Team.EventData}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.EventData)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }

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

          public Builder clear() {
            super.clear();
            eventId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            eventPoints_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            challengeInstanceId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            challengeQuestId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            challengeQuestChallengeId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000010);
            challengeCompleted_ = false;
            bitField0_ = (bitField0_ & ~0x00000020);
            challengeRankCompleted_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            challengeRankPreviouslyCompleted_ = 0;
            bitField0_ = (bitField0_ & ~0x00000080);
            eventOwned_ = false;
            bitField0_ = (bitField0_ & ~0x00000100);
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              subChallengesWithProgressBuilder_.clear();
            }
            wagerWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00000400);
            cavernChallengeActive_ = false;
            bitField0_ = (bitField0_ & ~0x00000800);
            cavernChallengeWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00001000);
            amountWagered_ = 0;
            bitField0_ = (bitField0_ & ~0x00002000);
            periodicPointAdjustments_ = 0;
            bitField0_ = (bitField0_ & ~0x00004000);
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResults_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              cavernChallengeMapResultsBuilder_.clear();
            }
            cavernChallengePlusShardWinnings_ = 0;
            bitField0_ = (bitField0_ & ~0x00010000);
            if (actionsGrantedBuilder_ == null) {
              actionsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00020000);
            } else {
              actionsGrantedBuilder_.clear();
            }
            cavernCrawlMapVariant_ = 0;
            bitField0_ = (bitField0_ & ~0x00040000);
            teamWagerBonusPct_ = 0;
            bitField0_ = (bitField0_ & ~0x00080000);
            wagerStreakPct_ = 0;
            bitField0_ = (bitField0_ & ~0x00100000);
            if (candyPointsGrantedBuilder_ == null) {
              candyPointsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00200000);
            } else {
              candyPointsGrantedBuilder_.clear();
            }
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.eventId_ = eventId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.eventPoints_ = eventPoints_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.challengeInstanceId_ = challengeInstanceId_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.challengeQuestId_ = challengeQuestId_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.challengeQuestChallengeId_ = challengeQuestChallengeId_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.challengeCompleted_ = challengeCompleted_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.challengeRankCompleted_ = challengeRankCompleted_;
            if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x00000080;
            }
            result.challengeRankPreviouslyCompleted_ = challengeRankPreviouslyCompleted_;
            if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x00000100;
            }
            result.eventOwned_ = eventOwned_;
            if (subChallengesWithProgressBuilder_ == null) {
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subChallengesWithProgress_ = java.util.Collections.unmodifiableList(subChallengesWithProgress_);
                bitField0_ = (bitField0_ & ~0x00000200);
              }
              result.subChallengesWithProgress_ = subChallengesWithProgress_;
            } else {
              result.subChallengesWithProgress_ = subChallengesWithProgressBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x00000200;
            }
            result.wagerWinnings_ = wagerWinnings_;
            if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
              to_bitField0_ |= 0x00000400;
            }
            result.cavernChallengeActive_ = cavernChallengeActive_;
            if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
              to_bitField0_ |= 0x00000800;
            }
            result.cavernChallengeWinnings_ = cavernChallengeWinnings_;
            if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
              to_bitField0_ |= 0x00001000;
            }
            result.amountWagered_ = amountWagered_;
            if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
              to_bitField0_ |= 0x00002000;
            }
            result.periodicPointAdjustments_ = periodicPointAdjustments_;
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (((bitField0_ & 0x00008000) == 0x00008000)) {
                cavernChallengeMapResults_ = java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
                bitField0_ = (bitField0_ & ~0x00008000);
              }
              result.cavernChallengeMapResults_ = cavernChallengeMapResults_;
            } else {
              result.cavernChallengeMapResults_ = cavernChallengeMapResultsBuilder_.build();
            }
            if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
              to_bitField0_ |= 0x00004000;
            }
            result.cavernChallengePlusShardWinnings_ = cavernChallengePlusShardWinnings_;
            if (actionsGrantedBuilder_ == null) {
              if (((bitField0_ & 0x00020000) == 0x00020000)) {
                actionsGranted_ = java.util.Collections.unmodifiableList(actionsGranted_);
                bitField0_ = (bitField0_ & ~0x00020000);
              }
              result.actionsGranted_ = actionsGranted_;
            } else {
              result.actionsGranted_ = actionsGrantedBuilder_.build();
            }
            if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
              to_bitField0_ |= 0x00008000;
            }
            result.cavernCrawlMapVariant_ = cavernCrawlMapVariant_;
            if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
              to_bitField0_ |= 0x00010000;
            }
            result.teamWagerBonusPct_ = teamWagerBonusPct_;
            if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
              to_bitField0_ |= 0x00020000;
            }
            result.wagerStreakPct_ = wagerStreakPct_;
            if (candyPointsGrantedBuilder_ == null) {
              if (((bitField0_ & 0x00200000) == 0x00200000)) {
                candyPointsGranted_ = java.util.Collections.unmodifiableList(candyPointsGranted_);
                bitField0_ = (bitField0_ & ~0x00200000);
              }
              result.candyPointsGranted_ = candyPointsGranted_;
            } else {
              result.candyPointsGranted_ = candyPointsGrantedBuilder_.build();
            }
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance()) return this;
            if (other.hasEventId()) {
              setEventId(other.getEventId());
            }
            if (other.hasEventPoints()) {
              setEventPoints(other.getEventPoints());
            }
            if (other.hasChallengeInstanceId()) {
              setChallengeInstanceId(other.getChallengeInstanceId());
            }
            if (other.hasChallengeQuestId()) {
              setChallengeQuestId(other.getChallengeQuestId());
            }
            if (other.hasChallengeQuestChallengeId()) {
              setChallengeQuestChallengeId(other.getChallengeQuestChallengeId());
            }
            if (other.hasChallengeCompleted()) {
              setChallengeCompleted(other.getChallengeCompleted());
            }
            if (other.hasChallengeRankCompleted()) {
              setChallengeRankCompleted(other.getChallengeRankCompleted());
            }
            if (other.hasChallengeRankPreviouslyCompleted()) {
              setChallengeRankPreviouslyCompleted(other.getChallengeRankPreviouslyCompleted());
            }
            if (other.hasEventOwned()) {
              setEventOwned(other.getEventOwned());
            }
            if (subChallengesWithProgressBuilder_ == null) {
              if (!other.subChallengesWithProgress_.isEmpty()) {
                if (subChallengesWithProgress_.isEmpty()) {
                  subChallengesWithProgress_ = other.subChallengesWithProgress_;
                  bitField0_ = (bitField0_ & ~0x00000200);
                } else {
                  ensureSubChallengesWithProgressIsMutable();
                  subChallengesWithProgress_.addAll(other.subChallengesWithProgress_);
                }
                onChanged();
              }
            } else {
              if (!other.subChallengesWithProgress_.isEmpty()) {
                if (subChallengesWithProgressBuilder_.isEmpty()) {
                  subChallengesWithProgressBuilder_.dispose();
                  subChallengesWithProgressBuilder_ = null;
                  subChallengesWithProgress_ = other.subChallengesWithProgress_;
                  bitField0_ = (bitField0_ & ~0x00000200);
                  subChallengesWithProgressBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getSubChallengesWithProgressFieldBuilder() : null;
                } else {
                  subChallengesWithProgressBuilder_.addAllMessages(other.subChallengesWithProgress_);
                }
              }
            }
            if (other.hasWagerWinnings()) {
              setWagerWinnings(other.getWagerWinnings());
            }
            if (other.hasCavernChallengeActive()) {
              setCavernChallengeActive(other.getCavernChallengeActive());
            }
            if (other.hasCavernChallengeWinnings()) {
              setCavernChallengeWinnings(other.getCavernChallengeWinnings());
            }
            if (other.hasAmountWagered()) {
              setAmountWagered(other.getAmountWagered());
            }
            if (other.hasPeriodicPointAdjustments()) {
              setPeriodicPointAdjustments(other.getPeriodicPointAdjustments());
            }
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (!other.cavernChallengeMapResults_.isEmpty()) {
                if (cavernChallengeMapResults_.isEmpty()) {
                  cavernChallengeMapResults_ = other.cavernChallengeMapResults_;
                  bitField0_ = (bitField0_ & ~0x00008000);
                } else {
                  ensureCavernChallengeMapResultsIsMutable();
                  cavernChallengeMapResults_.addAll(other.cavernChallengeMapResults_);
                }
                onChanged();
              }
            } else {
              if (!other.cavernChallengeMapResults_.isEmpty()) {
                if (cavernChallengeMapResultsBuilder_.isEmpty()) {
                  cavernChallengeMapResultsBuilder_.dispose();
                  cavernChallengeMapResultsBuilder_ = null;
                  cavernChallengeMapResults_ = other.cavernChallengeMapResults_;
                  bitField0_ = (bitField0_ & ~0x00008000);
                  cavernChallengeMapResultsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getCavernChallengeMapResultsFieldBuilder() : null;
                } else {
                  cavernChallengeMapResultsBuilder_.addAllMessages(other.cavernChallengeMapResults_);
                }
              }
            }
            if (other.hasCavernChallengePlusShardWinnings()) {
              setCavernChallengePlusShardWinnings(other.getCavernChallengePlusShardWinnings());
            }
            if (actionsGrantedBuilder_ == null) {
              if (!other.actionsGranted_.isEmpty()) {
                if (actionsGranted_.isEmpty()) {
                  actionsGranted_ = other.actionsGranted_;
                  bitField0_ = (bitField0_ & ~0x00020000);
                } else {
                  ensureActionsGrantedIsMutable();
                  actionsGranted_.addAll(other.actionsGranted_);
                }
                onChanged();
              }
            } else {
              if (!other.actionsGranted_.isEmpty()) {
                if (actionsGrantedBuilder_.isEmpty()) {
                  actionsGrantedBuilder_.dispose();
                  actionsGrantedBuilder_ = null;
                  actionsGranted_ = other.actionsGranted_;
                  bitField0_ = (bitField0_ & ~0x00020000);
                  actionsGrantedBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getActionsGrantedFieldBuilder() : null;
                } else {
                  actionsGrantedBuilder_.addAllMessages(other.actionsGranted_);
                }
              }
            }
            if (other.hasCavernCrawlMapVariant()) {
              setCavernCrawlMapVariant(other.getCavernCrawlMapVariant());
            }
            if (other.hasTeamWagerBonusPct()) {
              setTeamWagerBonusPct(other.getTeamWagerBonusPct());
            }
            if (other.hasWagerStreakPct()) {
              setWagerStreakPct(other.getWagerStreakPct());
            }
            if (candyPointsGrantedBuilder_ == null) {
              if (!other.candyPointsGranted_.isEmpty()) {
                if (candyPointsGranted_.isEmpty()) {
                  candyPointsGranted_ = other.candyPointsGranted_;
                  bitField0_ = (bitField0_ & ~0x00200000);
                } else {
                  ensureCandyPointsGrantedIsMutable();
                  candyPointsGranted_.addAll(other.candyPointsGranted_);
                }
                onChanged();
              }
            } else {
              if (!other.candyPointsGranted_.isEmpty()) {
                if (candyPointsGrantedBuilder_.isEmpty()) {
                  candyPointsGrantedBuilder_.dispose();
                  candyPointsGrantedBuilder_ = null;
                  candyPointsGranted_ = other.candyPointsGranted_;
                  bitField0_ = (bitField0_ & ~0x00200000);
                  candyPointsGrantedBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getCandyPointsGrantedFieldBuilder() : null;
                } else {
                  candyPointsGrantedBuilder_.addAllMessages(other.candyPointsGranted_);
                }
              }
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int eventId_ ;
          /**
           * optional uint32 event_id = 1;
           */
          public boolean hasEventId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 event_id = 1;
           */
          public int getEventId() {
            return eventId_;
          }
          /**
           * optional uint32 event_id = 1;
           */
          public Builder setEventId(int value) {
            bitField0_ |= 0x00000001;
            eventId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 event_id = 1;
           */
          public Builder clearEventId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            eventId_ = 0;
            onChanged();
            return this;
          }

          private int eventPoints_ ;
          /**
           * optional uint32 event_points = 2;
           */
          public boolean hasEventPoints() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 event_points = 2;
           */
          public int getEventPoints() {
            return eventPoints_;
          }
          /**
           * optional uint32 event_points = 2;
           */
          public Builder setEventPoints(int value) {
            bitField0_ |= 0x00000002;
            eventPoints_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 event_points = 2;
           */
          public Builder clearEventPoints() {
            bitField0_ = (bitField0_ & ~0x00000002);
            eventPoints_ = 0;
            onChanged();
            return this;
          }

          private int challengeInstanceId_ ;
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public boolean hasChallengeInstanceId() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public int getChallengeInstanceId() {
            return challengeInstanceId_;
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public Builder setChallengeInstanceId(int value) {
            bitField0_ |= 0x00000004;
            challengeInstanceId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public Builder clearChallengeInstanceId() {
            bitField0_ = (bitField0_ & ~0x00000004);
            challengeInstanceId_ = 0;
            onChanged();
            return this;
          }

          private int challengeQuestId_ ;
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public boolean hasChallengeQuestId() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public int getChallengeQuestId() {
            return challengeQuestId_;
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public Builder setChallengeQuestId(int value) {
            bitField0_ |= 0x00000008;
            challengeQuestId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_quest_id = 4;
           */
          public Builder clearChallengeQuestId() {
            bitField0_ = (bitField0_ & ~0x00000008);
            challengeQuestId_ = 0;
            onChanged();
            return this;
          }

          private int challengeQuestChallengeId_ ;
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public boolean hasChallengeQuestChallengeId() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public int getChallengeQuestChallengeId() {
            return challengeQuestChallengeId_;
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public Builder setChallengeQuestChallengeId(int value) {
            bitField0_ |= 0x00000010;
            challengeQuestChallengeId_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_quest_challenge_id = 5;
           */
          public Builder clearChallengeQuestChallengeId() {
            bitField0_ = (bitField0_ & ~0x00000010);
            challengeQuestChallengeId_ = 0;
            onChanged();
            return this;
          }

          private boolean challengeCompleted_ ;
          /**
           * optional bool challenge_completed = 6;
           */
          public boolean hasChallengeCompleted() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public boolean getChallengeCompleted() {
            return challengeCompleted_;
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public Builder setChallengeCompleted(boolean value) {
            bitField0_ |= 0x00000020;
            challengeCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool challenge_completed = 6;
           */
          public Builder clearChallengeCompleted() {
            bitField0_ = (bitField0_ & ~0x00000020);
            challengeCompleted_ = false;
            onChanged();
            return this;
          }

          private int challengeRankCompleted_ ;
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public boolean hasChallengeRankCompleted() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public int getChallengeRankCompleted() {
            return challengeRankCompleted_;
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public Builder setChallengeRankCompleted(int value) {
            bitField0_ |= 0x00000040;
            challengeRankCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_rank_completed = 7;
           */
          public Builder clearChallengeRankCompleted() {
            bitField0_ = (bitField0_ & ~0x00000040);
            challengeRankCompleted_ = 0;
            onChanged();
            return this;
          }

          private int challengeRankPreviouslyCompleted_ ;
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public boolean hasChallengeRankPreviouslyCompleted() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public int getChallengeRankPreviouslyCompleted() {
            return challengeRankPreviouslyCompleted_;
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public Builder setChallengeRankPreviouslyCompleted(int value) {
            bitField0_ |= 0x00000080;
            challengeRankPreviouslyCompleted_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 challenge_rank_previously_completed = 8;
           */
          public Builder clearChallengeRankPreviouslyCompleted() {
            bitField0_ = (bitField0_ & ~0x00000080);
            challengeRankPreviouslyCompleted_ = 0;
            onChanged();
            return this;
          }

          private boolean eventOwned_ ;
          /**
           * optional bool event_owned = 9;
           */
          public boolean hasEventOwned() {
            return ((bitField0_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional bool event_owned = 9;
           */
          public boolean getEventOwned() {
            return eventOwned_;
          }
          /**
           * optional bool event_owned = 9;
           */
          public Builder setEventOwned(boolean value) {
            bitField0_ |= 0x00000100;
            eventOwned_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool event_owned = 9;
           */
          public Builder clearEventOwned() {
            bitField0_ = (bitField0_ & ~0x00000100);
            eventOwned_ = false;
            onChanged();
            return this;
          }

          private java.util.List subChallengesWithProgress_ =
            java.util.Collections.emptyList();
          private void ensureSubChallengesWithProgressIsMutable() {
            if (!((bitField0_ & 0x00000200) == 0x00000200)) {
              subChallengesWithProgress_ = new java.util.ArrayList(subChallengesWithProgress_);
              bitField0_ |= 0x00000200;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder> subChallengesWithProgressBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List getSubChallengesWithProgressList() {
            if (subChallengesWithProgressBuilder_ == null) {
              return java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            } else {
              return subChallengesWithProgressBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public int getSubChallengesWithProgressCount() {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.size();
            } else {
              return subChallengesWithProgressBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge getSubChallengesWithProgress(int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.get(index);
            } else {
              return subChallengesWithProgressBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder setSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.set(index, value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder setSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.set(index, builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge value) {
            if (subChallengesWithProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(index, value);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addSubChallengesWithProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder builderForValue) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.add(index, builderForValue.build());
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder addAllSubChallengesWithProgress(
              java.lang.Iterable values) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, subChallengesWithProgress_);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder clearSubChallengesWithProgress() {
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000200);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public Builder removeSubChallengesWithProgress(int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              ensureSubChallengesWithProgressIsMutable();
              subChallengesWithProgress_.remove(index);
              onChanged();
            } else {
              subChallengesWithProgressBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder getSubChallengesWithProgressBuilder(
              int index) {
            return getSubChallengesWithProgressFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder getSubChallengesWithProgressOrBuilder(
              int index) {
            if (subChallengesWithProgressBuilder_ == null) {
              return subChallengesWithProgress_.get(index);  } else {
              return subChallengesWithProgressBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List 
               getSubChallengesWithProgressOrBuilderList() {
            if (subChallengesWithProgressBuilder_ != null) {
              return subChallengesWithProgressBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(subChallengesWithProgress_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder addSubChallengesWithProgressBuilder() {
            return getSubChallengesWithProgressFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder addSubChallengesWithProgressBuilder(
              int index) {
            return getSubChallengesWithProgressFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.SubChallenge sub_challenges_with_progress = 10;
           */
          public java.util.List 
               getSubChallengesWithProgressBuilderList() {
            return getSubChallengesWithProgressFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder> 
              getSubChallengesWithProgressFieldBuilder() {
            if (subChallengesWithProgressBuilder_ == null) {
              subChallengesWithProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallenge.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.SubChallengeOrBuilder>(
                      subChallengesWithProgress_,
                      ((bitField0_ & 0x00000200) == 0x00000200),
                      getParentForChildren(),
                      isClean());
              subChallengesWithProgress_ = null;
            }
            return subChallengesWithProgressBuilder_;
          }

          private int wagerWinnings_ ;
          /**
           * optional uint32 wager_winnings = 11;
           */
          public boolean hasWagerWinnings() {
            return ((bitField0_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public int getWagerWinnings() {
            return wagerWinnings_;
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public Builder setWagerWinnings(int value) {
            bitField0_ |= 0x00000400;
            wagerWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 wager_winnings = 11;
           */
          public Builder clearWagerWinnings() {
            bitField0_ = (bitField0_ & ~0x00000400);
            wagerWinnings_ = 0;
            onChanged();
            return this;
          }

          private boolean cavernChallengeActive_ ;
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public boolean hasCavernChallengeActive() {
            return ((bitField0_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public boolean getCavernChallengeActive() {
            return cavernChallengeActive_;
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public Builder setCavernChallengeActive(boolean value) {
            bitField0_ |= 0x00000800;
            cavernChallengeActive_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool cavern_challenge_active = 12;
           */
          public Builder clearCavernChallengeActive() {
            bitField0_ = (bitField0_ & ~0x00000800);
            cavernChallengeActive_ = false;
            onChanged();
            return this;
          }

          private int cavernChallengeWinnings_ ;
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public boolean hasCavernChallengeWinnings() {
            return ((bitField0_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public int getCavernChallengeWinnings() {
            return cavernChallengeWinnings_;
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public Builder setCavernChallengeWinnings(int value) {
            bitField0_ |= 0x00001000;
            cavernChallengeWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 cavern_challenge_winnings = 13;
           */
          public Builder clearCavernChallengeWinnings() {
            bitField0_ = (bitField0_ & ~0x00001000);
            cavernChallengeWinnings_ = 0;
            onChanged();
            return this;
          }

          private int amountWagered_ ;
          /**
           * optional uint32 amount_wagered = 14;
           */
          public boolean hasAmountWagered() {
            return ((bitField0_ & 0x00002000) == 0x00002000);
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public int getAmountWagered() {
            return amountWagered_;
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public Builder setAmountWagered(int value) {
            bitField0_ |= 0x00002000;
            amountWagered_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 amount_wagered = 14;
           */
          public Builder clearAmountWagered() {
            bitField0_ = (bitField0_ & ~0x00002000);
            amountWagered_ = 0;
            onChanged();
            return this;
          }

          private int periodicPointAdjustments_ ;
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public boolean hasPeriodicPointAdjustments() {
            return ((bitField0_ & 0x00004000) == 0x00004000);
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public int getPeriodicPointAdjustments() {
            return periodicPointAdjustments_;
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public Builder setPeriodicPointAdjustments(int value) {
            bitField0_ |= 0x00004000;
            periodicPointAdjustments_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 periodic_point_adjustments = 16;
           */
          public Builder clearPeriodicPointAdjustments() {
            bitField0_ = (bitField0_ & ~0x00004000);
            periodicPointAdjustments_ = 0;
            onChanged();
            return this;
          }

          private java.util.List cavernChallengeMapResults_ =
            java.util.Collections.emptyList();
          private void ensureCavernChallengeMapResultsIsMutable() {
            if (!((bitField0_ & 0x00008000) == 0x00008000)) {
              cavernChallengeMapResults_ = new java.util.ArrayList(cavernChallengeMapResults_);
              bitField0_ |= 0x00008000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder> cavernChallengeMapResultsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List getCavernChallengeMapResultsList() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            } else {
              return cavernChallengeMapResultsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public int getCavernChallengeMapResultsCount() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.size();
            } else {
              return cavernChallengeMapResultsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult getCavernChallengeMapResults(int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.get(index);
            } else {
              return cavernChallengeMapResultsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder setCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.set(index, value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder setCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.set(index, builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult value) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(index, value);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addCavernChallengeMapResults(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder builderForValue) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.add(index, builderForValue.build());
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder addAllCavernChallengeMapResults(
              java.lang.Iterable values) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, cavernChallengeMapResults_);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder clearCavernChallengeMapResults() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResults_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00008000);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public Builder removeCavernChallengeMapResults(int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              ensureCavernChallengeMapResultsIsMutable();
              cavernChallengeMapResults_.remove(index);
              onChanged();
            } else {
              cavernChallengeMapResultsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder getCavernChallengeMapResultsBuilder(
              int index) {
            return getCavernChallengeMapResultsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder getCavernChallengeMapResultsOrBuilder(
              int index) {
            if (cavernChallengeMapResultsBuilder_ == null) {
              return cavernChallengeMapResults_.get(index);  } else {
              return cavernChallengeMapResultsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List 
               getCavernChallengeMapResultsOrBuilderList() {
            if (cavernChallengeMapResultsBuilder_ != null) {
              return cavernChallengeMapResultsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(cavernChallengeMapResults_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder addCavernChallengeMapResultsBuilder() {
            return getCavernChallengeMapResultsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder addCavernChallengeMapResultsBuilder(
              int index) {
            return getCavernChallengeMapResultsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CavernChallengeResult cavern_challenge_map_results = 17;
           */
          public java.util.List 
               getCavernChallengeMapResultsBuilderList() {
            return getCavernChallengeMapResultsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder> 
              getCavernChallengeMapResultsFieldBuilder() {
            if (cavernChallengeMapResultsBuilder_ == null) {
              cavernChallengeMapResultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResult.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CavernChallengeResultOrBuilder>(
                      cavernChallengeMapResults_,
                      ((bitField0_ & 0x00008000) == 0x00008000),
                      getParentForChildren(),
                      isClean());
              cavernChallengeMapResults_ = null;
            }
            return cavernChallengeMapResultsBuilder_;
          }

          private int cavernChallengePlusShardWinnings_ ;
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public boolean hasCavernChallengePlusShardWinnings() {
            return ((bitField0_ & 0x00010000) == 0x00010000);
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public int getCavernChallengePlusShardWinnings() {
            return cavernChallengePlusShardWinnings_;
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public Builder setCavernChallengePlusShardWinnings(int value) {
            bitField0_ |= 0x00010000;
            cavernChallengePlusShardWinnings_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 cavern_challenge_plus_shard_winnings = 18;
           */
          public Builder clearCavernChallengePlusShardWinnings() {
            bitField0_ = (bitField0_ & ~0x00010000);
            cavernChallengePlusShardWinnings_ = 0;
            onChanged();
            return this;
          }

          private java.util.List actionsGranted_ =
            java.util.Collections.emptyList();
          private void ensureActionsGrantedIsMutable() {
            if (!((bitField0_ & 0x00020000) == 0x00020000)) {
              actionsGranted_ = new java.util.ArrayList(actionsGranted_);
              bitField0_ |= 0x00020000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder> actionsGrantedBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List getActionsGrantedList() {
            if (actionsGrantedBuilder_ == null) {
              return java.util.Collections.unmodifiableList(actionsGranted_);
            } else {
              return actionsGrantedBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public int getActionsGrantedCount() {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.size();
            } else {
              return actionsGrantedBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant getActionsGranted(int index) {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.get(index);
            } else {
              return actionsGrantedBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder setActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.set(index, value);
              onChanged();
            } else {
              actionsGrantedBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder setActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.set(index, builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(value);
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant value) {
            if (actionsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(index, value);
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addActionsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder builderForValue) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.add(index, builderForValue.build());
              onChanged();
            } else {
              actionsGrantedBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder addAllActionsGranted(
              java.lang.Iterable values) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, actionsGranted_);
              onChanged();
            } else {
              actionsGrantedBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder clearActionsGranted() {
            if (actionsGrantedBuilder_ == null) {
              actionsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00020000);
              onChanged();
            } else {
              actionsGrantedBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public Builder removeActionsGranted(int index) {
            if (actionsGrantedBuilder_ == null) {
              ensureActionsGrantedIsMutable();
              actionsGranted_.remove(index);
              onChanged();
            } else {
              actionsGrantedBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder getActionsGrantedBuilder(
              int index) {
            return getActionsGrantedFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder getActionsGrantedOrBuilder(
              int index) {
            if (actionsGrantedBuilder_ == null) {
              return actionsGranted_.get(index);  } else {
              return actionsGrantedBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List 
               getActionsGrantedOrBuilderList() {
            if (actionsGrantedBuilder_ != null) {
              return actionsGrantedBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(actionsGranted_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder addActionsGrantedBuilder() {
            return getActionsGrantedFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder addActionsGrantedBuilder(
              int index) {
            return getActionsGrantedFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ActionGrant actions_granted = 19;
           */
          public java.util.List 
               getActionsGrantedBuilderList() {
            return getActionsGrantedFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder> 
              getActionsGrantedFieldBuilder() {
            if (actionsGrantedBuilder_ == null) {
              actionsGrantedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ActionGrantOrBuilder>(
                      actionsGranted_,
                      ((bitField0_ & 0x00020000) == 0x00020000),
                      getParentForChildren(),
                      isClean());
              actionsGranted_ = null;
            }
            return actionsGrantedBuilder_;
          }

          private int cavernCrawlMapVariant_ ;
          /**
           * optional uint32 cavern_crawl_map_variant = 20;
           */
          public boolean hasCavernCrawlMapVariant() {
            return ((bitField0_ & 0x00040000) == 0x00040000);
          }
          /**
           * optional uint32 cavern_crawl_map_variant = 20;
           */
          public int getCavernCrawlMapVariant() {
            return cavernCrawlMapVariant_;
          }
          /**
           * optional uint32 cavern_crawl_map_variant = 20;
           */
          public Builder setCavernCrawlMapVariant(int value) {
            bitField0_ |= 0x00040000;
            cavernCrawlMapVariant_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 cavern_crawl_map_variant = 20;
           */
          public Builder clearCavernCrawlMapVariant() {
            bitField0_ = (bitField0_ & ~0x00040000);
            cavernCrawlMapVariant_ = 0;
            onChanged();
            return this;
          }

          private int teamWagerBonusPct_ ;
          /**
           * optional uint32 team_wager_bonus_pct = 21;
           */
          public boolean hasTeamWagerBonusPct() {
            return ((bitField0_ & 0x00080000) == 0x00080000);
          }
          /**
           * optional uint32 team_wager_bonus_pct = 21;
           */
          public int getTeamWagerBonusPct() {
            return teamWagerBonusPct_;
          }
          /**
           * optional uint32 team_wager_bonus_pct = 21;
           */
          public Builder setTeamWagerBonusPct(int value) {
            bitField0_ |= 0x00080000;
            teamWagerBonusPct_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 team_wager_bonus_pct = 21;
           */
          public Builder clearTeamWagerBonusPct() {
            bitField0_ = (bitField0_ & ~0x00080000);
            teamWagerBonusPct_ = 0;
            onChanged();
            return this;
          }

          private int wagerStreakPct_ ;
          /**
           * optional uint32 wager_streak_pct = 22;
           */
          public boolean hasWagerStreakPct() {
            return ((bitField0_ & 0x00100000) == 0x00100000);
          }
          /**
           * optional uint32 wager_streak_pct = 22;
           */
          public int getWagerStreakPct() {
            return wagerStreakPct_;
          }
          /**
           * optional uint32 wager_streak_pct = 22;
           */
          public Builder setWagerStreakPct(int value) {
            bitField0_ |= 0x00100000;
            wagerStreakPct_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 wager_streak_pct = 22;
           */
          public Builder clearWagerStreakPct() {
            bitField0_ = (bitField0_ & ~0x00100000);
            wagerStreakPct_ = 0;
            onChanged();
            return this;
          }

          private java.util.List candyPointsGranted_ =
            java.util.Collections.emptyList();
          private void ensureCandyPointsGrantedIsMutable() {
            if (!((bitField0_ & 0x00200000) == 0x00200000)) {
              candyPointsGranted_ = new java.util.ArrayList(candyPointsGranted_);
              bitField0_ |= 0x00200000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder> candyPointsGrantedBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public java.util.List getCandyPointsGrantedList() {
            if (candyPointsGrantedBuilder_ == null) {
              return java.util.Collections.unmodifiableList(candyPointsGranted_);
            } else {
              return candyPointsGrantedBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public int getCandyPointsGrantedCount() {
            if (candyPointsGrantedBuilder_ == null) {
              return candyPointsGranted_.size();
            } else {
              return candyPointsGrantedBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant getCandyPointsGranted(int index) {
            if (candyPointsGrantedBuilder_ == null) {
              return candyPointsGranted_.get(index);
            } else {
              return candyPointsGrantedBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder setCandyPointsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant value) {
            if (candyPointsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.set(index, value);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder setCandyPointsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder builderForValue) {
            if (candyPointsGrantedBuilder_ == null) {
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.set(index, builderForValue.build());
              onChanged();
            } else {
              candyPointsGrantedBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder addCandyPointsGranted(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant value) {
            if (candyPointsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.add(value);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder addCandyPointsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant value) {
            if (candyPointsGrantedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.add(index, value);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder addCandyPointsGranted(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder builderForValue) {
            if (candyPointsGrantedBuilder_ == null) {
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.add(builderForValue.build());
              onChanged();
            } else {
              candyPointsGrantedBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder addCandyPointsGranted(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder builderForValue) {
            if (candyPointsGrantedBuilder_ == null) {
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.add(index, builderForValue.build());
              onChanged();
            } else {
              candyPointsGrantedBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder addAllCandyPointsGranted(
              java.lang.Iterable values) {
            if (candyPointsGrantedBuilder_ == null) {
              ensureCandyPointsGrantedIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, candyPointsGranted_);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder clearCandyPointsGranted() {
            if (candyPointsGrantedBuilder_ == null) {
              candyPointsGranted_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00200000);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public Builder removeCandyPointsGranted(int index) {
            if (candyPointsGrantedBuilder_ == null) {
              ensureCandyPointsGrantedIsMutable();
              candyPointsGranted_.remove(index);
              onChanged();
            } else {
              candyPointsGrantedBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder getCandyPointsGrantedBuilder(
              int index) {
            return getCandyPointsGrantedFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder getCandyPointsGrantedOrBuilder(
              int index) {
            if (candyPointsGrantedBuilder_ == null) {
              return candyPointsGranted_.get(index);  } else {
              return candyPointsGrantedBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public java.util.List 
               getCandyPointsGrantedOrBuilderList() {
            if (candyPointsGrantedBuilder_ != null) {
              return candyPointsGrantedBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(candyPointsGranted_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder addCandyPointsGrantedBuilder() {
            return getCandyPointsGrantedFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder addCandyPointsGrantedBuilder(
              int index) {
            return getCandyPointsGrantedFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.CandyGrant candy_points_granted = 23;
           */
          public java.util.List 
               getCandyPointsGrantedBuilderList() {
            return getCandyPointsGrantedFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder> 
              getCandyPointsGrantedFieldBuilder() {
            if (candyPointsGrantedBuilder_ == null) {
              candyPointsGrantedBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrant.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.CandyGrantOrBuilder>(
                      candyPointsGranted_,
                      ((bitField0_ & 0x00200000) == 0x00200000),
                      getParentForChildren(),
                      isClean());
              candyPointsGranted_ = null;
            }
            return candyPointsGrantedBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.EventData)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.EventData)
      }

      public interface GauntletProgressOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.GauntletProgress)
          com.google.protobuf.MessageOrBuilder {

        /**
         * optional uint32 gauntlet_tier = 2;
         */
        boolean hasGauntletTier();
        /**
         * optional uint32 gauntlet_tier = 2;
         */
        int getGauntletTier();

        /**
         * optional uint32 gauntlet_wins = 3;
         */
        boolean hasGauntletWins();
        /**
         * optional uint32 gauntlet_wins = 3;
         */
        int getGauntletWins();

        /**
         * optional uint32 gauntlet_losses = 4;
         */
        boolean hasGauntletLosses();
        /**
         * optional uint32 gauntlet_losses = 4;
         */
        int getGauntletLosses();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.GauntletProgress}
       */
      public static final class GauntletProgress extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.GauntletProgress)
          GauntletProgressOrBuilder {
        // Use GauntletProgress.newBuilder() to construct.
        private GauntletProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private GauntletProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public GauntletProgress getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private GauntletProgress(
            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 16: {
                  bitField0_ |= 0x00000001;
                  gauntletTier_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000002;
                  gauntletWins_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000004;
                  gauntletLosses_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_GauntletProgress_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder.class);
        }

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

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

        private int bitField0_;
        public static final int GAUNTLET_TIER_FIELD_NUMBER = 2;
        private int gauntletTier_;
        /**
         * optional uint32 gauntlet_tier = 2;
         */
        public boolean hasGauntletTier() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 gauntlet_tier = 2;
         */
        public int getGauntletTier() {
          return gauntletTier_;
        }

        public static final int GAUNTLET_WINS_FIELD_NUMBER = 3;
        private int gauntletWins_;
        /**
         * optional uint32 gauntlet_wins = 3;
         */
        public boolean hasGauntletWins() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 gauntlet_wins = 3;
         */
        public int getGauntletWins() {
          return gauntletWins_;
        }

        public static final int GAUNTLET_LOSSES_FIELD_NUMBER = 4;
        private int gauntletLosses_;
        /**
         * optional uint32 gauntlet_losses = 4;
         */
        public boolean hasGauntletLosses() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 gauntlet_losses = 4;
         */
        public int getGauntletLosses() {
          return gauntletLosses_;
        }

        private void initFields() {
          gauntletTier_ = 0;
          gauntletWins_ = 0;
          gauntletLosses_ = 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(2, gauntletTier_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(3, gauntletWins_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(4, gauntletLosses_);
          }
          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(2, gauntletTier_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, gauntletWins_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, gauntletLosses_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress 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 CDOTAMatchMetadata.Team.GauntletProgress}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.GauntletProgress)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_GauntletProgress_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.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();
            gauntletTier_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            gauntletWins_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            gauntletLosses_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.gauntletTier_ = gauntletTier_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.gauntletWins_ = gauntletWins_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.gauntletLosses_ = gauntletLosses_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance()) return this;
            if (other.hasGauntletTier()) {
              setGauntletTier(other.getGauntletTier());
            }
            if (other.hasGauntletWins()) {
              setGauntletWins(other.getGauntletWins());
            }
            if (other.hasGauntletLosses()) {
              setGauntletLosses(other.getGauntletLosses());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;

          private int gauntletTier_ ;
          /**
           * optional uint32 gauntlet_tier = 2;
           */
          public boolean hasGauntletTier() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 gauntlet_tier = 2;
           */
          public int getGauntletTier() {
            return gauntletTier_;
          }
          /**
           * optional uint32 gauntlet_tier = 2;
           */
          public Builder setGauntletTier(int value) {
            bitField0_ |= 0x00000001;
            gauntletTier_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 gauntlet_tier = 2;
           */
          public Builder clearGauntletTier() {
            bitField0_ = (bitField0_ & ~0x00000001);
            gauntletTier_ = 0;
            onChanged();
            return this;
          }

          private int gauntletWins_ ;
          /**
           * optional uint32 gauntlet_wins = 3;
           */
          public boolean hasGauntletWins() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 gauntlet_wins = 3;
           */
          public int getGauntletWins() {
            return gauntletWins_;
          }
          /**
           * optional uint32 gauntlet_wins = 3;
           */
          public Builder setGauntletWins(int value) {
            bitField0_ |= 0x00000002;
            gauntletWins_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 gauntlet_wins = 3;
           */
          public Builder clearGauntletWins() {
            bitField0_ = (bitField0_ & ~0x00000002);
            gauntletWins_ = 0;
            onChanged();
            return this;
          }

          private int gauntletLosses_ ;
          /**
           * optional uint32 gauntlet_losses = 4;
           */
          public boolean hasGauntletLosses() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 gauntlet_losses = 4;
           */
          public int getGauntletLosses() {
            return gauntletLosses_;
          }
          /**
           * optional uint32 gauntlet_losses = 4;
           */
          public Builder setGauntletLosses(int value) {
            bitField0_ |= 0x00000004;
            gauntletLosses_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 gauntlet_losses = 4;
           */
          public Builder clearGauntletLosses() {
            bitField0_ = (bitField0_ & ~0x00000004);
            gauntletLosses_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.GauntletProgress)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.GauntletProgress)
      }

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

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

        /**
         * repeated uint32 ability_upgrades = 2;
         */
        java.util.List getAbilityUpgradesList();
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        int getAbilityUpgradesCount();
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        int getAbilityUpgrades(int index);

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

        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        java.util.List 
            getEquippedEconItemsList();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index);
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        int getEquippedEconItemsCount();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        java.util.List 
            getEquippedEconItemsOrBuilderList();
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        java.util.List 
            getKillsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        int getKillsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        java.util.List 
            getKillsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        java.util.List 
            getItemsList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        int getItemsCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        java.util.List 
            getItemsOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
            int index);

        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        boolean hasAvgKillsX16();
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        int getAvgKillsX16();

        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        boolean hasAvgDeathsX16();
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        int getAvgDeathsX16();

        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        boolean hasAvgAssistsX16();
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        int getAvgAssistsX16();

        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        boolean hasAvgGpmX16();
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        int getAvgGpmX16();

        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        boolean hasAvgXpmX16();
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        int getAvgXpmX16();

        /**
         * optional uint32 best_kills_x16 = 12;
         */
        boolean hasBestKillsX16();
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        int getBestKillsX16();

        /**
         * optional uint32 best_assists_x16 = 13;
         */
        boolean hasBestAssistsX16();
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        int getBestAssistsX16();

        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        boolean hasBestGpmX16();
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        int getBestGpmX16();

        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        boolean hasBestXpmX16();
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        int getBestXpmX16();

        /**
         * optional uint32 win_streak = 16;
         */
        boolean hasWinStreak();
        /**
         * optional uint32 win_streak = 16;
         */
        int getWinStreak();

        /**
         * optional uint32 best_win_streak = 17;
         */
        boolean hasBestWinStreak();
        /**
         * optional uint32 best_win_streak = 17;
         */
        int getBestWinStreak();

        /**
         * optional float fight_score = 18;
         */
        boolean hasFightScore();
        /**
         * optional float fight_score = 18;
         */
        float getFightScore();

        /**
         * optional float farm_score = 19;
         */
        boolean hasFarmScore();
        /**
         * optional float farm_score = 19;
         */
        float getFarmScore();

        /**
         * optional float support_score = 20;
         */
        boolean hasSupportScore();
        /**
         * optional float support_score = 20;
         */
        float getSupportScore();

        /**
         * optional float push_score = 21;
         */
        boolean hasPushScore();
        /**
         * optional float push_score = 21;
         */
        float getPushScore();

        /**
         * repeated uint32 level_up_times = 22;
         */
        java.util.List getLevelUpTimesList();
        /**
         * repeated uint32 level_up_times = 22;
         */
        int getLevelUpTimesCount();
        /**
         * repeated uint32 level_up_times = 22;
         */
        int getLevelUpTimes(int index);

        /**
         * repeated float graph_net_worth = 23;
         */
        java.util.List getGraphNetWorthList();
        /**
         * repeated float graph_net_worth = 23;
         */
        int getGraphNetWorthCount();
        /**
         * repeated float graph_net_worth = 23;
         */
        float getGraphNetWorth(int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        java.util.List 
            getInventorySnapshotList();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        int getInventorySnapshotCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        java.util.List 
            getInventorySnapshotOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
            int index);

        /**
         * optional bool avg_stats_calibrated = 25;
         */
        boolean hasAvgStatsCalibrated();
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        boolean getAvgStatsCalibrated();

        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        java.util.List 
            getAutoStyleCriteriaList();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        int getAutoStyleCriteriaCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        java.util.List 
            getAutoStyleCriteriaOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        java.util.List 
            getEventDataList();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        int getEventDataCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        java.util.List 
            getEventDataOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
            int index);

        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        java.util.List 
            getStrangeGemProgressList();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        int getStrangeGemProgressCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        java.util.List 
            getStrangeGemProgressOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
            int index);

        /**
         * optional uint32 hero_xp = 31;
         */
        boolean hasHeroXp();
        /**
         * optional uint32 hero_xp = 31;
         */
        int getHeroXp();

        /**
         * optional uint32 camps_stacked = 32;
         */
        boolean hasCampsStacked();
        /**
         * optional uint32 camps_stacked = 32;
         */
        int getCampsStacked();

        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        java.util.List 
            getVictoryPredictionList();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        int getVictoryPredictionCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        java.util.List 
            getVictoryPredictionOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
            int index);

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

        /**
         * optional uint32 rampages = 35;
         */
        boolean hasRampages();
        /**
         * optional uint32 rampages = 35;
         */
        int getRampages();

        /**
         * optional uint32 triple_kills = 36;
         */
        boolean hasTripleKills();
        /**
         * optional uint32 triple_kills = 36;
         */
        int getTripleKills();

        /**
         * optional uint32 aegis_snatched = 37;
         */
        boolean hasAegisSnatched();
        /**
         * optional uint32 aegis_snatched = 37;
         */
        int getAegisSnatched();

        /**
         * optional uint32 rapiers_purchased = 38;
         */
        boolean hasRapiersPurchased();
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        int getRapiersPurchased();

        /**
         * optional uint32 couriers_killed = 39;
         */
        boolean hasCouriersKilled();
        /**
         * optional uint32 couriers_killed = 39;
         */
        int getCouriersKilled();

        /**
         * optional uint32 net_worth_rank = 40;
         */
        boolean hasNetWorthRank();
        /**
         * optional uint32 net_worth_rank = 40;
         */
        int getNetWorthRank();

        /**
         * optional uint32 support_gold_spent = 41;
         */
        boolean hasSupportGoldSpent();
        /**
         * optional uint32 support_gold_spent = 41;
         */
        int getSupportGoldSpent();

        /**
         * optional uint32 observer_wards_placed = 42;
         */
        boolean hasObserverWardsPlaced();
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        int getObserverWardsPlaced();

        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        boolean hasSentryWardsPlaced();
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        int getSentryWardsPlaced();

        /**
         * optional uint32 wards_dewarded = 44;
         */
        boolean hasWardsDewarded();
        /**
         * optional uint32 wards_dewarded = 44;
         */
        int getWardsDewarded();

        /**
         * optional float stun_duration = 45;
         */
        boolean hasStunDuration();
        /**
         * optional float stun_duration = 45;
         */
        float getStunDuration();

        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        boolean hasRankMmrBoostType();
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType();

        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        boolean hasGauntletProgress();
        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress getGauntletProgress();
        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder getGauntletProgressOrBuilder();

        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        java.util.List 
            getContractProgressList();
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress getContractProgress(int index);
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        int getContractProgressCount();
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        java.util.List 
            getContractProgressOrBuilderList();
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder getContractProgressOrBuilder(
            int index);

        /**
         * repeated uint32 guild_ids = 49;
         */
        java.util.List getGuildIdsList();
        /**
         * repeated uint32 guild_ids = 49;
         */
        int getGuildIdsCount();
        /**
         * repeated uint32 guild_ids = 49;
         */
        int getGuildIds(int index);
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.Team.Player}
       */
      public static final class Player extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.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;
          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: {
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                    abilityUpgrades_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  abilityUpgrades_.add(input.readUInt32());
                  break;
                }
                case 18: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                    abilityUpgrades_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000002;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    abilityUpgrades_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000002;
                  playerSlot_ = input.readUInt32();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    equippedEconItems_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  equippedEconItems_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.PARSER, extensionRegistry));
                  break;
                }
                case 42: {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    kills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  kills_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.PARSER, extensionRegistry));
                  break;
                }
                case 50: {
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                    items_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  items_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.PARSER, extensionRegistry));
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000004;
                  avgKillsX16_ = input.readUInt32();
                  break;
                }
                case 64: {
                  bitField0_ |= 0x00000008;
                  avgDeathsX16_ = input.readUInt32();
                  break;
                }
                case 72: {
                  bitField0_ |= 0x00000010;
                  avgAssistsX16_ = input.readUInt32();
                  break;
                }
                case 80: {
                  bitField0_ |= 0x00000020;
                  avgGpmX16_ = input.readUInt32();
                  break;
                }
                case 88: {
                  bitField0_ |= 0x00000040;
                  avgXpmX16_ = input.readUInt32();
                  break;
                }
                case 96: {
                  bitField0_ |= 0x00000080;
                  bestKillsX16_ = input.readUInt32();
                  break;
                }
                case 104: {
                  bitField0_ |= 0x00000100;
                  bestAssistsX16_ = input.readUInt32();
                  break;
                }
                case 112: {
                  bitField0_ |= 0x00000200;
                  bestGpmX16_ = input.readUInt32();
                  break;
                }
                case 120: {
                  bitField0_ |= 0x00000400;
                  bestXpmX16_ = input.readUInt32();
                  break;
                }
                case 128: {
                  bitField0_ |= 0x00000800;
                  winStreak_ = input.readUInt32();
                  break;
                }
                case 136: {
                  bitField0_ |= 0x00001000;
                  bestWinStreak_ = input.readUInt32();
                  break;
                }
                case 149: {
                  bitField0_ |= 0x00002000;
                  fightScore_ = input.readFloat();
                  break;
                }
                case 157: {
                  bitField0_ |= 0x00004000;
                  farmScore_ = input.readFloat();
                  break;
                }
                case 165: {
                  bitField0_ |= 0x00008000;
                  supportScore_ = input.readFloat();
                  break;
                }
                case 173: {
                  bitField0_ |= 0x00010000;
                  pushScore_ = input.readFloat();
                  break;
                }
                case 176: {
                  if (!((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
                    levelUpTimes_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00200000;
                  }
                  levelUpTimes_.add(input.readUInt32());
                  break;
                }
                case 178: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00200000) == 0x00200000) && input.getBytesUntilLimit() > 0) {
                    levelUpTimes_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00200000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    levelUpTimes_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 189: {
                  if (!((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
                    graphNetWorth_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00400000;
                  }
                  graphNetWorth_.add(input.readFloat());
                  break;
                }
                case 186: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00400000) == 0x00400000) && input.getBytesUntilLimit() > 0) {
                    graphNetWorth_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00400000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphNetWorth_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 194: {
                  if (!((mutable_bitField0_ & 0x00800000) == 0x00800000)) {
                    inventorySnapshot_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00800000;
                  }
                  inventorySnapshot_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.PARSER, extensionRegistry));
                  break;
                }
                case 200: {
                  bitField0_ |= 0x00020000;
                  avgStatsCalibrated_ = input.readBool();
                  break;
                }
                case 210: {
                  if (!((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
                    autoStyleCriteria_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x02000000;
                  }
                  autoStyleCriteria_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.PARSER, extensionRegistry));
                  break;
                }
                case 234: {
                  if (!((mutable_bitField0_ & 0x04000000) == 0x04000000)) {
                    eventData_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x04000000;
                  }
                  eventData_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.PARSER, extensionRegistry));
                  break;
                }
                case 242: {
                  if (!((mutable_bitField0_ & 0x08000000) == 0x08000000)) {
                    strangeGemProgress_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x08000000;
                  }
                  strangeGemProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.PARSER, extensionRegistry));
                  break;
                }
                case 248: {
                  bitField0_ |= 0x00040000;
                  heroXp_ = input.readUInt32();
                  break;
                }
                case 256: {
                  bitField0_ |= 0x00080000;
                  campsStacked_ = input.readUInt32();
                  break;
                }
                case 266: {
                  if (!((mutable_bitField0_ & 0x40000000) == 0x40000000)) {
                    victoryPrediction_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x40000000;
                  }
                  victoryPrediction_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.PARSER, extensionRegistry));
                  break;
                }
                case 272: {
                  bitField0_ |= 0x00100000;
                  laneSelectionFlags_ = input.readUInt32();
                  break;
                }
                case 280: {
                  bitField0_ |= 0x00200000;
                  rampages_ = input.readUInt32();
                  break;
                }
                case 288: {
                  bitField0_ |= 0x00400000;
                  tripleKills_ = input.readUInt32();
                  break;
                }
                case 296: {
                  bitField0_ |= 0x00800000;
                  aegisSnatched_ = input.readUInt32();
                  break;
                }
                case 304: {
                  bitField0_ |= 0x01000000;
                  rapiersPurchased_ = input.readUInt32();
                  break;
                }
                case 312: {
                  bitField0_ |= 0x02000000;
                  couriersKilled_ = input.readUInt32();
                  break;
                }
                case 320: {
                  bitField0_ |= 0x04000000;
                  netWorthRank_ = input.readUInt32();
                  break;
                }
                case 328: {
                  bitField0_ |= 0x08000000;
                  supportGoldSpent_ = input.readUInt32();
                  break;
                }
                case 336: {
                  bitField0_ |= 0x10000000;
                  observerWardsPlaced_ = input.readUInt32();
                  break;
                }
                case 344: {
                  bitField0_ |= 0x20000000;
                  sentryWardsPlaced_ = input.readUInt32();
                  break;
                }
                case 352: {
                  bitField0_ |= 0x40000000;
                  wardsDewarded_ = input.readUInt32();
                  break;
                }
                case 365: {
                  bitField0_ |= 0x80000000;
                  stunDuration_ = input.readFloat();
                  break;
                }
                case 368: {
                  int rawValue = input.readEnum();
                  skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType value = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.valueOf(rawValue);
                  if (value == null) {
                    unknownFields.mergeVarintField(46, rawValue);
                  } else {
                    bitField1_ |= 0x00000001;
                    rankMmrBoostType_ = value;
                  }
                  break;
                }
                case 378: {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder subBuilder = null;
                  if (((bitField1_ & 0x00000002) == 0x00000002)) {
                    subBuilder = gauntletProgress_.toBuilder();
                  }
                  gauntletProgress_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.PARSER, extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(gauntletProgress_);
                    gauntletProgress_ = subBuilder.buildPartial();
                  }
                  bitField1_ |= 0x00000002;
                  break;
                }
                case 386: {
                  if (!((mutable_bitField1_ & 0x00002000) == 0x00002000)) {
                    contractProgress_ = new java.util.ArrayList();
                    mutable_bitField1_ |= 0x00002000;
                  }
                  contractProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.PARSER, extensionRegistry));
                  break;
                }
                case 392: {
                  if (!((mutable_bitField1_ & 0x00004000) == 0x00004000)) {
                    guildIds_ = new java.util.ArrayList();
                    mutable_bitField1_ |= 0x00004000;
                  }
                  guildIds_.add(input.readUInt32());
                  break;
                }
                case 394: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField1_ & 0x00004000) == 0x00004000) && input.getBytesUntilLimit() > 0) {
                    guildIds_ = new java.util.ArrayList();
                    mutable_bitField1_ |= 0x00004000;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    guildIds_.add(input.readUInt32());
                  }
                  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)) {
              abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
            }
            if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
              equippedEconItems_ = java.util.Collections.unmodifiableList(equippedEconItems_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              kills_ = java.util.Collections.unmodifiableList(kills_);
            }
            if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              items_ = java.util.Collections.unmodifiableList(items_);
            }
            if (((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = java.util.Collections.unmodifiableList(levelUpTimes_);
            }
            if (((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
            }
            if (((mutable_bitField0_ & 0x00800000) == 0x00800000)) {
              inventorySnapshot_ = java.util.Collections.unmodifiableList(inventorySnapshot_);
            }
            if (((mutable_bitField0_ & 0x02000000) == 0x02000000)) {
              autoStyleCriteria_ = java.util.Collections.unmodifiableList(autoStyleCriteria_);
            }
            if (((mutable_bitField0_ & 0x04000000) == 0x04000000)) {
              eventData_ = java.util.Collections.unmodifiableList(eventData_);
            }
            if (((mutable_bitField0_ & 0x08000000) == 0x08000000)) {
              strangeGemProgress_ = java.util.Collections.unmodifiableList(strangeGemProgress_);
            }
            if (((mutable_bitField0_ & 0x40000000) == 0x40000000)) {
              victoryPrediction_ = java.util.Collections.unmodifiableList(victoryPrediction_);
            }
            if (((mutable_bitField1_ & 0x00002000) == 0x00002000)) {
              contractProgress_ = java.util.Collections.unmodifiableList(contractProgress_);
            }
            if (((mutable_bitField1_ & 0x00004000) == 0x00004000)) {
              guildIds_ = java.util.Collections.unmodifiableList(guildIds_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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;
        }

        public interface ContractProgressOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.Team.Player.ContractProgress)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional uint32 guild_id = 1;
           */
          boolean hasGuildId();
          /**
           * optional uint32 guild_id = 1;
           */
          int getGuildId();

          /**
           * optional uint32 event_id = 2;
           */
          boolean hasEventId();
          /**
           * optional uint32 event_id = 2;
           */
          int getEventId();

          /**
           * optional uint32 challenge_instance_id = 3;
           */
          boolean hasChallengeInstanceId();
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          int getChallengeInstanceId();

          /**
           * optional uint32 challenge_parameter = 4;
           */
          boolean hasChallengeParameter();
          /**
           * optional uint32 challenge_parameter = 4;
           */
          int getChallengeParameter();

          /**
           * optional uint32 contract_stars = 5;
           */
          boolean hasContractStars();
          /**
           * optional uint32 contract_stars = 5;
           */
          int getContractStars();

          /**
           * optional uint32 contract_slot = 6;
           */
          boolean hasContractSlot();
          /**
           * optional uint32 contract_slot = 6;
           */
          int getContractSlot();

          /**
           * optional bool completed = 7;
           */
          boolean hasCompleted();
          /**
           * optional bool completed = 7;
           */
          boolean getCompleted();
        }
        /**
         * Protobuf type {@code CDOTAMatchMetadata.Team.Player.ContractProgress}
         */
        public static final class ContractProgress extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.Team.Player.ContractProgress)
            ContractProgressOrBuilder {
          // Use ContractProgress.newBuilder() to construct.
          private ContractProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private ContractProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

          public ContractProgress getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private ContractProgress(
              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;
                    guildId_ = input.readUInt32();
                    break;
                  }
                  case 16: {
                    bitField0_ |= 0x00000002;
                    eventId_ = input.readUInt32();
                    break;
                  }
                  case 24: {
                    bitField0_ |= 0x00000004;
                    challengeInstanceId_ = input.readUInt32();
                    break;
                  }
                  case 32: {
                    bitField0_ |= 0x00000008;
                    challengeParameter_ = input.readUInt32();
                    break;
                  }
                  case 40: {
                    bitField0_ |= 0x00000010;
                    contractStars_ = input.readUInt32();
                    break;
                  }
                  case 48: {
                    bitField0_ |= 0x00000020;
                    contractSlot_ = input.readUInt32();
                    break;
                  }
                  case 56: {
                    bitField0_ |= 0x00000040;
                    completed_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder.class);
          }

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

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

          private int bitField0_;
          public static final int GUILD_ID_FIELD_NUMBER = 1;
          private int guildId_;
          /**
           * optional uint32 guild_id = 1;
           */
          public boolean hasGuildId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 guild_id = 1;
           */
          public int getGuildId() {
            return guildId_;
          }

          public static final int EVENT_ID_FIELD_NUMBER = 2;
          private int eventId_;
          /**
           * optional uint32 event_id = 2;
           */
          public boolean hasEventId() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 event_id = 2;
           */
          public int getEventId() {
            return eventId_;
          }

          public static final int CHALLENGE_INSTANCE_ID_FIELD_NUMBER = 3;
          private int challengeInstanceId_;
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public boolean hasChallengeInstanceId() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 challenge_instance_id = 3;
           */
          public int getChallengeInstanceId() {
            return challengeInstanceId_;
          }

          public static final int CHALLENGE_PARAMETER_FIELD_NUMBER = 4;
          private int challengeParameter_;
          /**
           * optional uint32 challenge_parameter = 4;
           */
          public boolean hasChallengeParameter() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 challenge_parameter = 4;
           */
          public int getChallengeParameter() {
            return challengeParameter_;
          }

          public static final int CONTRACT_STARS_FIELD_NUMBER = 5;
          private int contractStars_;
          /**
           * optional uint32 contract_stars = 5;
           */
          public boolean hasContractStars() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 contract_stars = 5;
           */
          public int getContractStars() {
            return contractStars_;
          }

          public static final int CONTRACT_SLOT_FIELD_NUMBER = 6;
          private int contractSlot_;
          /**
           * optional uint32 contract_slot = 6;
           */
          public boolean hasContractSlot() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 contract_slot = 6;
           */
          public int getContractSlot() {
            return contractSlot_;
          }

          public static final int COMPLETED_FIELD_NUMBER = 7;
          private boolean completed_;
          /**
           * optional bool completed = 7;
           */
          public boolean hasCompleted() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional bool completed = 7;
           */
          public boolean getCompleted() {
            return completed_;
          }

          private void initFields() {
            guildId_ = 0;
            eventId_ = 0;
            challengeInstanceId_ = 0;
            challengeParameter_ = 0;
            contractStars_ = 0;
            contractSlot_ = 0;
            completed_ = 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, guildId_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeUInt32(2, eventId_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              output.writeUInt32(3, challengeInstanceId_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              output.writeUInt32(4, challengeParameter_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              output.writeUInt32(5, contractStars_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              output.writeUInt32(6, contractSlot_);
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              output.writeBool(7, completed_);
            }
            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, guildId_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(2, eventId_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(3, challengeInstanceId_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(4, challengeParameter_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(5, contractStars_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(6, contractSlot_);
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              size += com.google.protobuf.CodedOutputStream
                .computeBoolSize(7, completed_);
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress 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 CDOTAMatchMetadata.Team.Player.ContractProgress}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.Player.ContractProgress)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.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();
              guildId_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              eventId_ = 0;
              bitField0_ = (bitField0_ & ~0x00000002);
              challengeInstanceId_ = 0;
              bitField0_ = (bitField0_ & ~0x00000004);
              challengeParameter_ = 0;
              bitField0_ = (bitField0_ & ~0x00000008);
              contractStars_ = 0;
              bitField0_ = (bitField0_ & ~0x00000010);
              contractSlot_ = 0;
              bitField0_ = (bitField0_ & ~0x00000020);
              completed_ = false;
              bitField0_ = (bitField0_ & ~0x00000040);
              return this;
            }

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

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.guildId_ = guildId_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.eventId_ = eventId_;
              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
                to_bitField0_ |= 0x00000004;
              }
              result.challengeInstanceId_ = challengeInstanceId_;
              if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
                to_bitField0_ |= 0x00000008;
              }
              result.challengeParameter_ = challengeParameter_;
              if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
                to_bitField0_ |= 0x00000010;
              }
              result.contractStars_ = contractStars_;
              if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
                to_bitField0_ |= 0x00000020;
              }
              result.contractSlot_ = contractSlot_;
              if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
                to_bitField0_ |= 0x00000040;
              }
              result.completed_ = completed_;
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.getDefaultInstance()) return this;
              if (other.hasGuildId()) {
                setGuildId(other.getGuildId());
              }
              if (other.hasEventId()) {
                setEventId(other.getEventId());
              }
              if (other.hasChallengeInstanceId()) {
                setChallengeInstanceId(other.getChallengeInstanceId());
              }
              if (other.hasChallengeParameter()) {
                setChallengeParameter(other.getChallengeParameter());
              }
              if (other.hasContractStars()) {
                setContractStars(other.getContractStars());
              }
              if (other.hasContractSlot()) {
                setContractSlot(other.getContractSlot());
              }
              if (other.hasCompleted()) {
                setCompleted(other.getCompleted());
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int guildId_ ;
            /**
             * optional uint32 guild_id = 1;
             */
            public boolean hasGuildId() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 guild_id = 1;
             */
            public int getGuildId() {
              return guildId_;
            }
            /**
             * optional uint32 guild_id = 1;
             */
            public Builder setGuildId(int value) {
              bitField0_ |= 0x00000001;
              guildId_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 guild_id = 1;
             */
            public Builder clearGuildId() {
              bitField0_ = (bitField0_ & ~0x00000001);
              guildId_ = 0;
              onChanged();
              return this;
            }

            private int eventId_ ;
            /**
             * optional uint32 event_id = 2;
             */
            public boolean hasEventId() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 event_id = 2;
             */
            public int getEventId() {
              return eventId_;
            }
            /**
             * optional uint32 event_id = 2;
             */
            public Builder setEventId(int value) {
              bitField0_ |= 0x00000002;
              eventId_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 event_id = 2;
             */
            public Builder clearEventId() {
              bitField0_ = (bitField0_ & ~0x00000002);
              eventId_ = 0;
              onChanged();
              return this;
            }

            private int challengeInstanceId_ ;
            /**
             * optional uint32 challenge_instance_id = 3;
             */
            public boolean hasChallengeInstanceId() {
              return ((bitField0_ & 0x00000004) == 0x00000004);
            }
            /**
             * optional uint32 challenge_instance_id = 3;
             */
            public int getChallengeInstanceId() {
              return challengeInstanceId_;
            }
            /**
             * optional uint32 challenge_instance_id = 3;
             */
            public Builder setChallengeInstanceId(int value) {
              bitField0_ |= 0x00000004;
              challengeInstanceId_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 challenge_instance_id = 3;
             */
            public Builder clearChallengeInstanceId() {
              bitField0_ = (bitField0_ & ~0x00000004);
              challengeInstanceId_ = 0;
              onChanged();
              return this;
            }

            private int challengeParameter_ ;
            /**
             * optional uint32 challenge_parameter = 4;
             */
            public boolean hasChallengeParameter() {
              return ((bitField0_ & 0x00000008) == 0x00000008);
            }
            /**
             * optional uint32 challenge_parameter = 4;
             */
            public int getChallengeParameter() {
              return challengeParameter_;
            }
            /**
             * optional uint32 challenge_parameter = 4;
             */
            public Builder setChallengeParameter(int value) {
              bitField0_ |= 0x00000008;
              challengeParameter_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 challenge_parameter = 4;
             */
            public Builder clearChallengeParameter() {
              bitField0_ = (bitField0_ & ~0x00000008);
              challengeParameter_ = 0;
              onChanged();
              return this;
            }

            private int contractStars_ ;
            /**
             * optional uint32 contract_stars = 5;
             */
            public boolean hasContractStars() {
              return ((bitField0_ & 0x00000010) == 0x00000010);
            }
            /**
             * optional uint32 contract_stars = 5;
             */
            public int getContractStars() {
              return contractStars_;
            }
            /**
             * optional uint32 contract_stars = 5;
             */
            public Builder setContractStars(int value) {
              bitField0_ |= 0x00000010;
              contractStars_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 contract_stars = 5;
             */
            public Builder clearContractStars() {
              bitField0_ = (bitField0_ & ~0x00000010);
              contractStars_ = 0;
              onChanged();
              return this;
            }

            private int contractSlot_ ;
            /**
             * optional uint32 contract_slot = 6;
             */
            public boolean hasContractSlot() {
              return ((bitField0_ & 0x00000020) == 0x00000020);
            }
            /**
             * optional uint32 contract_slot = 6;
             */
            public int getContractSlot() {
              return contractSlot_;
            }
            /**
             * optional uint32 contract_slot = 6;
             */
            public Builder setContractSlot(int value) {
              bitField0_ |= 0x00000020;
              contractSlot_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 contract_slot = 6;
             */
            public Builder clearContractSlot() {
              bitField0_ = (bitField0_ & ~0x00000020);
              contractSlot_ = 0;
              onChanged();
              return this;
            }

            private boolean completed_ ;
            /**
             * optional bool completed = 7;
             */
            public boolean hasCompleted() {
              return ((bitField0_ & 0x00000040) == 0x00000040);
            }
            /**
             * optional bool completed = 7;
             */
            public boolean getCompleted() {
              return completed_;
            }
            /**
             * optional bool completed = 7;
             */
            public Builder setCompleted(boolean value) {
              bitField0_ |= 0x00000040;
              completed_ = value;
              onChanged();
              return this;
            }
            /**
             * optional bool completed = 7;
             */
            public Builder clearCompleted() {
              bitField0_ = (bitField0_ & ~0x00000040);
              completed_ = false;
              onChanged();
              return this;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.Player.ContractProgress)
          }

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

          // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.Player.ContractProgress)
        }

        private int bitField0_;
        private int bitField1_;
        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 ABILITY_UPGRADES_FIELD_NUMBER = 2;
        private java.util.List abilityUpgrades_;
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public java.util.List
            getAbilityUpgradesList() {
          return abilityUpgrades_;
        }
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public int getAbilityUpgradesCount() {
          return abilityUpgrades_.size();
        }
        /**
         * repeated uint32 ability_upgrades = 2;
         */
        public int getAbilityUpgrades(int index) {
          return abilityUpgrades_.get(index);
        }

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

        public static final int EQUIPPED_ECON_ITEMS_FIELD_NUMBER = 4;
        private java.util.List equippedEconItems_;
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public java.util.List getEquippedEconItemsList() {
          return equippedEconItems_;
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public java.util.List 
            getEquippedEconItemsOrBuilderList() {
          return equippedEconItems_;
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public int getEquippedEconItemsCount() {
          return equippedEconItems_.size();
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index) {
          return equippedEconItems_.get(index);
        }
        /**
         * repeated .CSOEconItem equipped_econ_items = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
            int index) {
          return equippedEconItems_.get(index);
        }

        public static final int KILLS_FIELD_NUMBER = 5;
        private java.util.List kills_;
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public java.util.List getKillsList() {
          return kills_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public java.util.List 
            getKillsOrBuilderList() {
          return kills_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public int getKillsCount() {
          return kills_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index) {
          return kills_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
            int index) {
          return kills_.get(index);
        }

        public static final int ITEMS_FIELD_NUMBER = 6;
        private java.util.List items_;
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public java.util.List getItemsList() {
          return items_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public java.util.List 
            getItemsOrBuilderList() {
          return items_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public int getItemsCount() {
          return items_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index) {
          return items_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
            int index) {
          return items_.get(index);
        }

        public static final int AVG_KILLS_X16_FIELD_NUMBER = 7;
        private int avgKillsX16_;
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        public boolean hasAvgKillsX16() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 avg_kills_x16 = 7;
         */
        public int getAvgKillsX16() {
          return avgKillsX16_;
        }

        public static final int AVG_DEATHS_X16_FIELD_NUMBER = 8;
        private int avgDeathsX16_;
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        public boolean hasAvgDeathsX16() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 avg_deaths_x16 = 8;
         */
        public int getAvgDeathsX16() {
          return avgDeathsX16_;
        }

        public static final int AVG_ASSISTS_X16_FIELD_NUMBER = 9;
        private int avgAssistsX16_;
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        public boolean hasAvgAssistsX16() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 avg_assists_x16 = 9;
         */
        public int getAvgAssistsX16() {
          return avgAssistsX16_;
        }

        public static final int AVG_GPM_X16_FIELD_NUMBER = 10;
        private int avgGpmX16_;
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        public boolean hasAvgGpmX16() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 avg_gpm_x16 = 10;
         */
        public int getAvgGpmX16() {
          return avgGpmX16_;
        }

        public static final int AVG_XPM_X16_FIELD_NUMBER = 11;
        private int avgXpmX16_;
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        public boolean hasAvgXpmX16() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 avg_xpm_x16 = 11;
         */
        public int getAvgXpmX16() {
          return avgXpmX16_;
        }

        public static final int BEST_KILLS_X16_FIELD_NUMBER = 12;
        private int bestKillsX16_;
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        public boolean hasBestKillsX16() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * optional uint32 best_kills_x16 = 12;
         */
        public int getBestKillsX16() {
          return bestKillsX16_;
        }

        public static final int BEST_ASSISTS_X16_FIELD_NUMBER = 13;
        private int bestAssistsX16_;
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        public boolean hasBestAssistsX16() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * optional uint32 best_assists_x16 = 13;
         */
        public int getBestAssistsX16() {
          return bestAssistsX16_;
        }

        public static final int BEST_GPM_X16_FIELD_NUMBER = 14;
        private int bestGpmX16_;
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        public boolean hasBestGpmX16() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 best_gpm_x16 = 14;
         */
        public int getBestGpmX16() {
          return bestGpmX16_;
        }

        public static final int BEST_XPM_X16_FIELD_NUMBER = 15;
        private int bestXpmX16_;
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        public boolean hasBestXpmX16() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * optional uint32 best_xpm_x16 = 15;
         */
        public int getBestXpmX16() {
          return bestXpmX16_;
        }

        public static final int WIN_STREAK_FIELD_NUMBER = 16;
        private int winStreak_;
        /**
         * optional uint32 win_streak = 16;
         */
        public boolean hasWinStreak() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * optional uint32 win_streak = 16;
         */
        public int getWinStreak() {
          return winStreak_;
        }

        public static final int BEST_WIN_STREAK_FIELD_NUMBER = 17;
        private int bestWinStreak_;
        /**
         * optional uint32 best_win_streak = 17;
         */
        public boolean hasBestWinStreak() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * optional uint32 best_win_streak = 17;
         */
        public int getBestWinStreak() {
          return bestWinStreak_;
        }

        public static final int FIGHT_SCORE_FIELD_NUMBER = 18;
        private float fightScore_;
        /**
         * optional float fight_score = 18;
         */
        public boolean hasFightScore() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * optional float fight_score = 18;
         */
        public float getFightScore() {
          return fightScore_;
        }

        public static final int FARM_SCORE_FIELD_NUMBER = 19;
        private float farmScore_;
        /**
         * optional float farm_score = 19;
         */
        public boolean hasFarmScore() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * optional float farm_score = 19;
         */
        public float getFarmScore() {
          return farmScore_;
        }

        public static final int SUPPORT_SCORE_FIELD_NUMBER = 20;
        private float supportScore_;
        /**
         * optional float support_score = 20;
         */
        public boolean hasSupportScore() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * optional float support_score = 20;
         */
        public float getSupportScore() {
          return supportScore_;
        }

        public static final int PUSH_SCORE_FIELD_NUMBER = 21;
        private float pushScore_;
        /**
         * optional float push_score = 21;
         */
        public boolean hasPushScore() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * optional float push_score = 21;
         */
        public float getPushScore() {
          return pushScore_;
        }

        public static final int LEVEL_UP_TIMES_FIELD_NUMBER = 22;
        private java.util.List levelUpTimes_;
        /**
         * repeated uint32 level_up_times = 22;
         */
        public java.util.List
            getLevelUpTimesList() {
          return levelUpTimes_;
        }
        /**
         * repeated uint32 level_up_times = 22;
         */
        public int getLevelUpTimesCount() {
          return levelUpTimes_.size();
        }
        /**
         * repeated uint32 level_up_times = 22;
         */
        public int getLevelUpTimes(int index) {
          return levelUpTimes_.get(index);
        }

        public static final int GRAPH_NET_WORTH_FIELD_NUMBER = 23;
        private java.util.List graphNetWorth_;
        /**
         * repeated float graph_net_worth = 23;
         */
        public java.util.List
            getGraphNetWorthList() {
          return graphNetWorth_;
        }
        /**
         * repeated float graph_net_worth = 23;
         */
        public int getGraphNetWorthCount() {
          return graphNetWorth_.size();
        }
        /**
         * repeated float graph_net_worth = 23;
         */
        public float getGraphNetWorth(int index) {
          return graphNetWorth_.get(index);
        }

        public static final int INVENTORY_SNAPSHOT_FIELD_NUMBER = 24;
        private java.util.List inventorySnapshot_;
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public java.util.List getInventorySnapshotList() {
          return inventorySnapshot_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public java.util.List 
            getInventorySnapshotOrBuilderList() {
          return inventorySnapshot_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public int getInventorySnapshotCount() {
          return inventorySnapshot_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index) {
          return inventorySnapshot_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
            int index) {
          return inventorySnapshot_.get(index);
        }

        public static final int AVG_STATS_CALIBRATED_FIELD_NUMBER = 25;
        private boolean avgStatsCalibrated_;
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        public boolean hasAvgStatsCalibrated() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * optional bool avg_stats_calibrated = 25;
         */
        public boolean getAvgStatsCalibrated() {
          return avgStatsCalibrated_;
        }

        public static final int AUTO_STYLE_CRITERIA_FIELD_NUMBER = 26;
        private java.util.List autoStyleCriteria_;
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public java.util.List getAutoStyleCriteriaList() {
          return autoStyleCriteria_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public java.util.List 
            getAutoStyleCriteriaOrBuilderList() {
          return autoStyleCriteria_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public int getAutoStyleCriteriaCount() {
          return autoStyleCriteria_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index) {
          return autoStyleCriteria_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
            int index) {
          return autoStyleCriteria_.get(index);
        }

        public static final int EVENT_DATA_FIELD_NUMBER = 29;
        private java.util.List eventData_;
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public java.util.List getEventDataList() {
          return eventData_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public java.util.List 
            getEventDataOrBuilderList() {
          return eventData_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public int getEventDataCount() {
          return eventData_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index) {
          return eventData_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
            int index) {
          return eventData_.get(index);
        }

        public static final int STRANGE_GEM_PROGRESS_FIELD_NUMBER = 30;
        private java.util.List strangeGemProgress_;
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public java.util.List getStrangeGemProgressList() {
          return strangeGemProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public java.util.List 
            getStrangeGemProgressOrBuilderList() {
          return strangeGemProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public int getStrangeGemProgressCount() {
          return strangeGemProgress_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index) {
          return strangeGemProgress_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
            int index) {
          return strangeGemProgress_.get(index);
        }

        public static final int HERO_XP_FIELD_NUMBER = 31;
        private int heroXp_;
        /**
         * optional uint32 hero_xp = 31;
         */
        public boolean hasHeroXp() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        /**
         * optional uint32 hero_xp = 31;
         */
        public int getHeroXp() {
          return heroXp_;
        }

        public static final int CAMPS_STACKED_FIELD_NUMBER = 32;
        private int campsStacked_;
        /**
         * optional uint32 camps_stacked = 32;
         */
        public boolean hasCampsStacked() {
          return ((bitField0_ & 0x00080000) == 0x00080000);
        }
        /**
         * optional uint32 camps_stacked = 32;
         */
        public int getCampsStacked() {
          return campsStacked_;
        }

        public static final int VICTORY_PREDICTION_FIELD_NUMBER = 33;
        private java.util.List victoryPrediction_;
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public java.util.List getVictoryPredictionList() {
          return victoryPrediction_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public java.util.List 
            getVictoryPredictionOrBuilderList() {
          return victoryPrediction_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public int getVictoryPredictionCount() {
          return victoryPrediction_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index) {
          return victoryPrediction_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
            int index) {
          return victoryPrediction_.get(index);
        }

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

        public static final int RAMPAGES_FIELD_NUMBER = 35;
        private int rampages_;
        /**
         * optional uint32 rampages = 35;
         */
        public boolean hasRampages() {
          return ((bitField0_ & 0x00200000) == 0x00200000);
        }
        /**
         * optional uint32 rampages = 35;
         */
        public int getRampages() {
          return rampages_;
        }

        public static final int TRIPLE_KILLS_FIELD_NUMBER = 36;
        private int tripleKills_;
        /**
         * optional uint32 triple_kills = 36;
         */
        public boolean hasTripleKills() {
          return ((bitField0_ & 0x00400000) == 0x00400000);
        }
        /**
         * optional uint32 triple_kills = 36;
         */
        public int getTripleKills() {
          return tripleKills_;
        }

        public static final int AEGIS_SNATCHED_FIELD_NUMBER = 37;
        private int aegisSnatched_;
        /**
         * optional uint32 aegis_snatched = 37;
         */
        public boolean hasAegisSnatched() {
          return ((bitField0_ & 0x00800000) == 0x00800000);
        }
        /**
         * optional uint32 aegis_snatched = 37;
         */
        public int getAegisSnatched() {
          return aegisSnatched_;
        }

        public static final int RAPIERS_PURCHASED_FIELD_NUMBER = 38;
        private int rapiersPurchased_;
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        public boolean hasRapiersPurchased() {
          return ((bitField0_ & 0x01000000) == 0x01000000);
        }
        /**
         * optional uint32 rapiers_purchased = 38;
         */
        public int getRapiersPurchased() {
          return rapiersPurchased_;
        }

        public static final int COURIERS_KILLED_FIELD_NUMBER = 39;
        private int couriersKilled_;
        /**
         * optional uint32 couriers_killed = 39;
         */
        public boolean hasCouriersKilled() {
          return ((bitField0_ & 0x02000000) == 0x02000000);
        }
        /**
         * optional uint32 couriers_killed = 39;
         */
        public int getCouriersKilled() {
          return couriersKilled_;
        }

        public static final int NET_WORTH_RANK_FIELD_NUMBER = 40;
        private int netWorthRank_;
        /**
         * optional uint32 net_worth_rank = 40;
         */
        public boolean hasNetWorthRank() {
          return ((bitField0_ & 0x04000000) == 0x04000000);
        }
        /**
         * optional uint32 net_worth_rank = 40;
         */
        public int getNetWorthRank() {
          return netWorthRank_;
        }

        public static final int SUPPORT_GOLD_SPENT_FIELD_NUMBER = 41;
        private int supportGoldSpent_;
        /**
         * optional uint32 support_gold_spent = 41;
         */
        public boolean hasSupportGoldSpent() {
          return ((bitField0_ & 0x08000000) == 0x08000000);
        }
        /**
         * optional uint32 support_gold_spent = 41;
         */
        public int getSupportGoldSpent() {
          return supportGoldSpent_;
        }

        public static final int OBSERVER_WARDS_PLACED_FIELD_NUMBER = 42;
        private int observerWardsPlaced_;
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        public boolean hasObserverWardsPlaced() {
          return ((bitField0_ & 0x10000000) == 0x10000000);
        }
        /**
         * optional uint32 observer_wards_placed = 42;
         */
        public int getObserverWardsPlaced() {
          return observerWardsPlaced_;
        }

        public static final int SENTRY_WARDS_PLACED_FIELD_NUMBER = 43;
        private int sentryWardsPlaced_;
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        public boolean hasSentryWardsPlaced() {
          return ((bitField0_ & 0x20000000) == 0x20000000);
        }
        /**
         * optional uint32 sentry_wards_placed = 43;
         */
        public int getSentryWardsPlaced() {
          return sentryWardsPlaced_;
        }

        public static final int WARDS_DEWARDED_FIELD_NUMBER = 44;
        private int wardsDewarded_;
        /**
         * optional uint32 wards_dewarded = 44;
         */
        public boolean hasWardsDewarded() {
          return ((bitField0_ & 0x40000000) == 0x40000000);
        }
        /**
         * optional uint32 wards_dewarded = 44;
         */
        public int getWardsDewarded() {
          return wardsDewarded_;
        }

        public static final int STUN_DURATION_FIELD_NUMBER = 45;
        private float stunDuration_;
        /**
         * optional float stun_duration = 45;
         */
        public boolean hasStunDuration() {
          return ((bitField0_ & 0x80000000) == 0x80000000);
        }
        /**
         * optional float stun_duration = 45;
         */
        public float getStunDuration() {
          return stunDuration_;
        }

        public static final int RANK_MMR_BOOST_TYPE_FIELD_NUMBER = 46;
        private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType rankMmrBoostType_;
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        public boolean hasRankMmrBoostType() {
          return ((bitField1_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
         */
        public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType() {
          return rankMmrBoostType_;
        }

        public static final int GAUNTLET_PROGRESS_FIELD_NUMBER = 47;
        private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress gauntletProgress_;
        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        public boolean hasGauntletProgress() {
          return ((bitField1_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress getGauntletProgress() {
          return gauntletProgress_;
        }
        /**
         * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder getGauntletProgressOrBuilder() {
          return gauntletProgress_;
        }

        public static final int CONTRACT_PROGRESS_FIELD_NUMBER = 48;
        private java.util.List contractProgress_;
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        public java.util.List getContractProgressList() {
          return contractProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        public java.util.List 
            getContractProgressOrBuilderList() {
          return contractProgress_;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        public int getContractProgressCount() {
          return contractProgress_.size();
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress getContractProgress(int index) {
          return contractProgress_.get(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder getContractProgressOrBuilder(
            int index) {
          return contractProgress_.get(index);
        }

        public static final int GUILD_IDS_FIELD_NUMBER = 49;
        private java.util.List guildIds_;
        /**
         * repeated uint32 guild_ids = 49;
         */
        public java.util.List
            getGuildIdsList() {
          return guildIds_;
        }
        /**
         * repeated uint32 guild_ids = 49;
         */
        public int getGuildIdsCount() {
          return guildIds_.size();
        }
        /**
         * repeated uint32 guild_ids = 49;
         */
        public int getGuildIds(int index) {
          return guildIds_.get(index);
        }

        private void initFields() {
          accountId_ = 0;
          abilityUpgrades_ = java.util.Collections.emptyList();
          playerSlot_ = 0;
          equippedEconItems_ = java.util.Collections.emptyList();
          kills_ = java.util.Collections.emptyList();
          items_ = java.util.Collections.emptyList();
          avgKillsX16_ = 0;
          avgDeathsX16_ = 0;
          avgAssistsX16_ = 0;
          avgGpmX16_ = 0;
          avgXpmX16_ = 0;
          bestKillsX16_ = 0;
          bestAssistsX16_ = 0;
          bestGpmX16_ = 0;
          bestXpmX16_ = 0;
          winStreak_ = 0;
          bestWinStreak_ = 0;
          fightScore_ = 0F;
          farmScore_ = 0F;
          supportScore_ = 0F;
          pushScore_ = 0F;
          levelUpTimes_ = java.util.Collections.emptyList();
          graphNetWorth_ = java.util.Collections.emptyList();
          inventorySnapshot_ = java.util.Collections.emptyList();
          avgStatsCalibrated_ = false;
          autoStyleCriteria_ = java.util.Collections.emptyList();
          eventData_ = java.util.Collections.emptyList();
          strangeGemProgress_ = java.util.Collections.emptyList();
          heroXp_ = 0;
          campsStacked_ = 0;
          victoryPrediction_ = java.util.Collections.emptyList();
          laneSelectionFlags_ = 0;
          rampages_ = 0;
          tripleKills_ = 0;
          aegisSnatched_ = 0;
          rapiersPurchased_ = 0;
          couriersKilled_ = 0;
          netWorthRank_ = 0;
          supportGoldSpent_ = 0;
          observerWardsPlaced_ = 0;
          sentryWardsPlaced_ = 0;
          wardsDewarded_ = 0;
          stunDuration_ = 0F;
          rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
          gauntletProgress_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance();
          contractProgress_ = java.util.Collections.emptyList();
          guildIds_ = 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(1, accountId_);
          }
          for (int i = 0; i < abilityUpgrades_.size(); i++) {
            output.writeUInt32(2, abilityUpgrades_.get(i));
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(3, playerSlot_);
          }
          for (int i = 0; i < equippedEconItems_.size(); i++) {
            output.writeMessage(4, equippedEconItems_.get(i));
          }
          for (int i = 0; i < kills_.size(); i++) {
            output.writeMessage(5, kills_.get(i));
          }
          for (int i = 0; i < items_.size(); i++) {
            output.writeMessage(6, items_.get(i));
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(7, avgKillsX16_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(8, avgDeathsX16_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeUInt32(9, avgAssistsX16_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeUInt32(10, avgGpmX16_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(11, avgXpmX16_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            output.writeUInt32(12, bestKillsX16_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            output.writeUInt32(13, bestAssistsX16_);
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            output.writeUInt32(14, bestGpmX16_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            output.writeUInt32(15, bestXpmX16_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            output.writeUInt32(16, winStreak_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            output.writeUInt32(17, bestWinStreak_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            output.writeFloat(18, fightScore_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            output.writeFloat(19, farmScore_);
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            output.writeFloat(20, supportScore_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            output.writeFloat(21, pushScore_);
          }
          for (int i = 0; i < levelUpTimes_.size(); i++) {
            output.writeUInt32(22, levelUpTimes_.get(i));
          }
          for (int i = 0; i < graphNetWorth_.size(); i++) {
            output.writeFloat(23, graphNetWorth_.get(i));
          }
          for (int i = 0; i < inventorySnapshot_.size(); i++) {
            output.writeMessage(24, inventorySnapshot_.get(i));
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            output.writeBool(25, avgStatsCalibrated_);
          }
          for (int i = 0; i < autoStyleCriteria_.size(); i++) {
            output.writeMessage(26, autoStyleCriteria_.get(i));
          }
          for (int i = 0; i < eventData_.size(); i++) {
            output.writeMessage(29, eventData_.get(i));
          }
          for (int i = 0; i < strangeGemProgress_.size(); i++) {
            output.writeMessage(30, strangeGemProgress_.get(i));
          }
          if (((bitField0_ & 0x00040000) == 0x00040000)) {
            output.writeUInt32(31, heroXp_);
          }
          if (((bitField0_ & 0x00080000) == 0x00080000)) {
            output.writeUInt32(32, campsStacked_);
          }
          for (int i = 0; i < victoryPrediction_.size(); i++) {
            output.writeMessage(33, victoryPrediction_.get(i));
          }
          if (((bitField0_ & 0x00100000) == 0x00100000)) {
            output.writeUInt32(34, laneSelectionFlags_);
          }
          if (((bitField0_ & 0x00200000) == 0x00200000)) {
            output.writeUInt32(35, rampages_);
          }
          if (((bitField0_ & 0x00400000) == 0x00400000)) {
            output.writeUInt32(36, tripleKills_);
          }
          if (((bitField0_ & 0x00800000) == 0x00800000)) {
            output.writeUInt32(37, aegisSnatched_);
          }
          if (((bitField0_ & 0x01000000) == 0x01000000)) {
            output.writeUInt32(38, rapiersPurchased_);
          }
          if (((bitField0_ & 0x02000000) == 0x02000000)) {
            output.writeUInt32(39, couriersKilled_);
          }
          if (((bitField0_ & 0x04000000) == 0x04000000)) {
            output.writeUInt32(40, netWorthRank_);
          }
          if (((bitField0_ & 0x08000000) == 0x08000000)) {
            output.writeUInt32(41, supportGoldSpent_);
          }
          if (((bitField0_ & 0x10000000) == 0x10000000)) {
            output.writeUInt32(42, observerWardsPlaced_);
          }
          if (((bitField0_ & 0x20000000) == 0x20000000)) {
            output.writeUInt32(43, sentryWardsPlaced_);
          }
          if (((bitField0_ & 0x40000000) == 0x40000000)) {
            output.writeUInt32(44, wardsDewarded_);
          }
          if (((bitField0_ & 0x80000000) == 0x80000000)) {
            output.writeFloat(45, stunDuration_);
          }
          if (((bitField1_ & 0x00000001) == 0x00000001)) {
            output.writeEnum(46, rankMmrBoostType_.getNumber());
          }
          if (((bitField1_ & 0x00000002) == 0x00000002)) {
            output.writeMessage(47, gauntletProgress_);
          }
          for (int i = 0; i < contractProgress_.size(); i++) {
            output.writeMessage(48, contractProgress_.get(i));
          }
          for (int i = 0; i < guildIds_.size(); i++) {
            output.writeUInt32(49, guildIds_.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(1, accountId_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < abilityUpgrades_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(abilityUpgrades_.get(i));
            }
            size += dataSize;
            size += 1 * getAbilityUpgradesList().size();
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, playerSlot_);
          }
          for (int i = 0; i < equippedEconItems_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, equippedEconItems_.get(i));
          }
          for (int i = 0; i < kills_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(5, kills_.get(i));
          }
          for (int i = 0; i < items_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, items_.get(i));
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, avgKillsX16_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(8, avgDeathsX16_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(9, avgAssistsX16_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(10, avgGpmX16_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(11, avgXpmX16_);
          }
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(12, bestKillsX16_);
          }
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(13, bestAssistsX16_);
          }
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(14, bestGpmX16_);
          }
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(15, bestXpmX16_);
          }
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(16, winStreak_);
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(17, bestWinStreak_);
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(18, fightScore_);
          }
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(19, farmScore_);
          }
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(20, supportScore_);
          }
          if (((bitField0_ & 0x00010000) == 0x00010000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(21, pushScore_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < levelUpTimes_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(levelUpTimes_.get(i));
            }
            size += dataSize;
            size += 2 * getLevelUpTimesList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphNetWorthList().size();
            size += dataSize;
            size += 2 * getGraphNetWorthList().size();
          }
          for (int i = 0; i < inventorySnapshot_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(24, inventorySnapshot_.get(i));
          }
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(25, avgStatsCalibrated_);
          }
          for (int i = 0; i < autoStyleCriteria_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(26, autoStyleCriteria_.get(i));
          }
          for (int i = 0; i < eventData_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(29, eventData_.get(i));
          }
          for (int i = 0; i < strangeGemProgress_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(30, strangeGemProgress_.get(i));
          }
          if (((bitField0_ & 0x00040000) == 0x00040000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(31, heroXp_);
          }
          if (((bitField0_ & 0x00080000) == 0x00080000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(32, campsStacked_);
          }
          for (int i = 0; i < victoryPrediction_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(33, victoryPrediction_.get(i));
          }
          if (((bitField0_ & 0x00100000) == 0x00100000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(34, laneSelectionFlags_);
          }
          if (((bitField0_ & 0x00200000) == 0x00200000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(35, rampages_);
          }
          if (((bitField0_ & 0x00400000) == 0x00400000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(36, tripleKills_);
          }
          if (((bitField0_ & 0x00800000) == 0x00800000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(37, aegisSnatched_);
          }
          if (((bitField0_ & 0x01000000) == 0x01000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(38, rapiersPurchased_);
          }
          if (((bitField0_ & 0x02000000) == 0x02000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(39, couriersKilled_);
          }
          if (((bitField0_ & 0x04000000) == 0x04000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(40, netWorthRank_);
          }
          if (((bitField0_ & 0x08000000) == 0x08000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(41, supportGoldSpent_);
          }
          if (((bitField0_ & 0x10000000) == 0x10000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(42, observerWardsPlaced_);
          }
          if (((bitField0_ & 0x20000000) == 0x20000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(43, sentryWardsPlaced_);
          }
          if (((bitField0_ & 0x40000000) == 0x40000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(44, wardsDewarded_);
          }
          if (((bitField0_ & 0x80000000) == 0x80000000)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(45, stunDuration_);
          }
          if (((bitField1_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeEnumSize(46, rankMmrBoostType_.getNumber());
          }
          if (((bitField1_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(47, gauntletProgress_);
          }
          for (int i = 0; i < contractProgress_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(48, contractProgress_.get(i));
          }
          {
            int dataSize = 0;
            for (int i = 0; i < guildIds_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(guildIds_.get(i));
            }
            size += dataSize;
            size += 2 * getGuildIdsList().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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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 CDOTAMatchMetadata.Team.Player}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team.Player)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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) {
              getEquippedEconItemsFieldBuilder();
              getKillsFieldBuilder();
              getItemsFieldBuilder();
              getInventorySnapshotFieldBuilder();
              getAutoStyleCriteriaFieldBuilder();
              getEventDataFieldBuilder();
              getStrangeGemProgressFieldBuilder();
              getVictoryPredictionFieldBuilder();
              getGauntletProgressFieldBuilder();
              getContractProgressFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            accountId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            playerSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItems_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              equippedEconItemsBuilder_.clear();
            }
            if (killsBuilder_ == null) {
              kills_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              killsBuilder_.clear();
            }
            if (itemsBuilder_ == null) {
              items_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              itemsBuilder_.clear();
            }
            avgKillsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            avgDeathsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000080);
            avgAssistsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000100);
            avgGpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000200);
            avgXpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000400);
            bestKillsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00000800);
            bestAssistsX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00001000);
            bestGpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00002000);
            bestXpmX16_ = 0;
            bitField0_ = (bitField0_ & ~0x00004000);
            winStreak_ = 0;
            bitField0_ = (bitField0_ & ~0x00008000);
            bestWinStreak_ = 0;
            bitField0_ = (bitField0_ & ~0x00010000);
            fightScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00020000);
            farmScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00040000);
            supportScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00080000);
            pushScore_ = 0F;
            bitField0_ = (bitField0_ & ~0x00100000);
            levelUpTimes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00200000);
            graphNetWorth_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00400000);
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshot_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00800000);
            } else {
              inventorySnapshotBuilder_.clear();
            }
            avgStatsCalibrated_ = false;
            bitField0_ = (bitField0_ & ~0x01000000);
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteria_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x02000000);
            } else {
              autoStyleCriteriaBuilder_.clear();
            }
            if (eventDataBuilder_ == null) {
              eventData_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x04000000);
            } else {
              eventDataBuilder_.clear();
            }
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x08000000);
            } else {
              strangeGemProgressBuilder_.clear();
            }
            heroXp_ = 0;
            bitField0_ = (bitField0_ & ~0x10000000);
            campsStacked_ = 0;
            bitField0_ = (bitField0_ & ~0x20000000);
            if (victoryPredictionBuilder_ == null) {
              victoryPrediction_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x40000000);
            } else {
              victoryPredictionBuilder_.clear();
            }
            laneSelectionFlags_ = 0;
            bitField0_ = (bitField0_ & ~0x80000000);
            rampages_ = 0;
            bitField1_ = (bitField1_ & ~0x00000001);
            tripleKills_ = 0;
            bitField1_ = (bitField1_ & ~0x00000002);
            aegisSnatched_ = 0;
            bitField1_ = (bitField1_ & ~0x00000004);
            rapiersPurchased_ = 0;
            bitField1_ = (bitField1_ & ~0x00000008);
            couriersKilled_ = 0;
            bitField1_ = (bitField1_ & ~0x00000010);
            netWorthRank_ = 0;
            bitField1_ = (bitField1_ & ~0x00000020);
            supportGoldSpent_ = 0;
            bitField1_ = (bitField1_ & ~0x00000040);
            observerWardsPlaced_ = 0;
            bitField1_ = (bitField1_ & ~0x00000080);
            sentryWardsPlaced_ = 0;
            bitField1_ = (bitField1_ & ~0x00000100);
            wardsDewarded_ = 0;
            bitField1_ = (bitField1_ & ~0x00000200);
            stunDuration_ = 0F;
            bitField1_ = (bitField1_ & ~0x00000400);
            rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
            bitField1_ = (bitField1_ & ~0x00000800);
            if (gauntletProgressBuilder_ == null) {
              gauntletProgress_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance();
            } else {
              gauntletProgressBuilder_.clear();
            }
            bitField1_ = (bitField1_ & ~0x00001000);
            if (contractProgressBuilder_ == null) {
              contractProgress_ = java.util.Collections.emptyList();
              bitField1_ = (bitField1_ & ~0x00002000);
            } else {
              contractProgressBuilder_.clear();
            }
            guildIds_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00004000);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player(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.accountId_ = accountId_;
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              abilityUpgrades_ = java.util.Collections.unmodifiableList(abilityUpgrades_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.abilityUpgrades_ = abilityUpgrades_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000002;
            }
            result.playerSlot_ = playerSlot_;
            if (equippedEconItemsBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                equippedEconItems_ = java.util.Collections.unmodifiableList(equippedEconItems_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.equippedEconItems_ = equippedEconItems_;
            } else {
              result.equippedEconItems_ = equippedEconItemsBuilder_.build();
            }
            if (killsBuilder_ == null) {
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                kills_ = java.util.Collections.unmodifiableList(kills_);
                bitField0_ = (bitField0_ & ~0x00000010);
              }
              result.kills_ = kills_;
            } else {
              result.kills_ = killsBuilder_.build();
            }
            if (itemsBuilder_ == null) {
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                items_ = java.util.Collections.unmodifiableList(items_);
                bitField0_ = (bitField0_ & ~0x00000020);
              }
              result.items_ = items_;
            } else {
              result.items_ = itemsBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000004;
            }
            result.avgKillsX16_ = avgKillsX16_;
            if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x00000008;
            }
            result.avgDeathsX16_ = avgDeathsX16_;
            if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x00000010;
            }
            result.avgAssistsX16_ = avgAssistsX16_;
            if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
              to_bitField0_ |= 0x00000020;
            }
            result.avgGpmX16_ = avgGpmX16_;
            if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x00000040;
            }
            result.avgXpmX16_ = avgXpmX16_;
            if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
              to_bitField0_ |= 0x00000080;
            }
            result.bestKillsX16_ = bestKillsX16_;
            if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
              to_bitField0_ |= 0x00000100;
            }
            result.bestAssistsX16_ = bestAssistsX16_;
            if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
              to_bitField0_ |= 0x00000200;
            }
            result.bestGpmX16_ = bestGpmX16_;
            if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
              to_bitField0_ |= 0x00000400;
            }
            result.bestXpmX16_ = bestXpmX16_;
            if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
              to_bitField0_ |= 0x00000800;
            }
            result.winStreak_ = winStreak_;
            if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
              to_bitField0_ |= 0x00001000;
            }
            result.bestWinStreak_ = bestWinStreak_;
            if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
              to_bitField0_ |= 0x00002000;
            }
            result.fightScore_ = fightScore_;
            if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
              to_bitField0_ |= 0x00004000;
            }
            result.farmScore_ = farmScore_;
            if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
              to_bitField0_ |= 0x00008000;
            }
            result.supportScore_ = supportScore_;
            if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
              to_bitField0_ |= 0x00010000;
            }
            result.pushScore_ = pushScore_;
            if (((bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = java.util.Collections.unmodifiableList(levelUpTimes_);
              bitField0_ = (bitField0_ & ~0x00200000);
            }
            result.levelUpTimes_ = levelUpTimes_;
            if (((bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
              bitField0_ = (bitField0_ & ~0x00400000);
            }
            result.graphNetWorth_ = graphNetWorth_;
            if (inventorySnapshotBuilder_ == null) {
              if (((bitField0_ & 0x00800000) == 0x00800000)) {
                inventorySnapshot_ = java.util.Collections.unmodifiableList(inventorySnapshot_);
                bitField0_ = (bitField0_ & ~0x00800000);
              }
              result.inventorySnapshot_ = inventorySnapshot_;
            } else {
              result.inventorySnapshot_ = inventorySnapshotBuilder_.build();
            }
            if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
              to_bitField0_ |= 0x00020000;
            }
            result.avgStatsCalibrated_ = avgStatsCalibrated_;
            if (autoStyleCriteriaBuilder_ == null) {
              if (((bitField0_ & 0x02000000) == 0x02000000)) {
                autoStyleCriteria_ = java.util.Collections.unmodifiableList(autoStyleCriteria_);
                bitField0_ = (bitField0_ & ~0x02000000);
              }
              result.autoStyleCriteria_ = autoStyleCriteria_;
            } else {
              result.autoStyleCriteria_ = autoStyleCriteriaBuilder_.build();
            }
            if (eventDataBuilder_ == null) {
              if (((bitField0_ & 0x04000000) == 0x04000000)) {
                eventData_ = java.util.Collections.unmodifiableList(eventData_);
                bitField0_ = (bitField0_ & ~0x04000000);
              }
              result.eventData_ = eventData_;
            } else {
              result.eventData_ = eventDataBuilder_.build();
            }
            if (strangeGemProgressBuilder_ == null) {
              if (((bitField0_ & 0x08000000) == 0x08000000)) {
                strangeGemProgress_ = java.util.Collections.unmodifiableList(strangeGemProgress_);
                bitField0_ = (bitField0_ & ~0x08000000);
              }
              result.strangeGemProgress_ = strangeGemProgress_;
            } else {
              result.strangeGemProgress_ = strangeGemProgressBuilder_.build();
            }
            if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
              to_bitField0_ |= 0x00040000;
            }
            result.heroXp_ = heroXp_;
            if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
              to_bitField0_ |= 0x00080000;
            }
            result.campsStacked_ = campsStacked_;
            if (victoryPredictionBuilder_ == null) {
              if (((bitField0_ & 0x40000000) == 0x40000000)) {
                victoryPrediction_ = java.util.Collections.unmodifiableList(victoryPrediction_);
                bitField0_ = (bitField0_ & ~0x40000000);
              }
              result.victoryPrediction_ = victoryPrediction_;
            } else {
              result.victoryPrediction_ = victoryPredictionBuilder_.build();
            }
            if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
              to_bitField0_ |= 0x00100000;
            }
            result.laneSelectionFlags_ = laneSelectionFlags_;
            if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00200000;
            }
            result.rampages_ = rampages_;
            if (((from_bitField1_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00400000;
            }
            result.tripleKills_ = tripleKills_;
            if (((from_bitField1_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00800000;
            }
            result.aegisSnatched_ = aegisSnatched_;
            if (((from_bitField1_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x01000000;
            }
            result.rapiersPurchased_ = rapiersPurchased_;
            if (((from_bitField1_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x02000000;
            }
            result.couriersKilled_ = couriersKilled_;
            if (((from_bitField1_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x04000000;
            }
            result.netWorthRank_ = netWorthRank_;
            if (((from_bitField1_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x08000000;
            }
            result.supportGoldSpent_ = supportGoldSpent_;
            if (((from_bitField1_ & 0x00000080) == 0x00000080)) {
              to_bitField0_ |= 0x10000000;
            }
            result.observerWardsPlaced_ = observerWardsPlaced_;
            if (((from_bitField1_ & 0x00000100) == 0x00000100)) {
              to_bitField0_ |= 0x20000000;
            }
            result.sentryWardsPlaced_ = sentryWardsPlaced_;
            if (((from_bitField1_ & 0x00000200) == 0x00000200)) {
              to_bitField0_ |= 0x40000000;
            }
            result.wardsDewarded_ = wardsDewarded_;
            if (((from_bitField1_ & 0x00000400) == 0x00000400)) {
              to_bitField0_ |= 0x80000000;
            }
            result.stunDuration_ = stunDuration_;
            if (((from_bitField1_ & 0x00000800) == 0x00000800)) {
              to_bitField1_ |= 0x00000001;
            }
            result.rankMmrBoostType_ = rankMmrBoostType_;
            if (((from_bitField1_ & 0x00001000) == 0x00001000)) {
              to_bitField1_ |= 0x00000002;
            }
            if (gauntletProgressBuilder_ == null) {
              result.gauntletProgress_ = gauntletProgress_;
            } else {
              result.gauntletProgress_ = gauntletProgressBuilder_.build();
            }
            if (contractProgressBuilder_ == null) {
              if (((bitField1_ & 0x00002000) == 0x00002000)) {
                contractProgress_ = java.util.Collections.unmodifiableList(contractProgress_);
                bitField1_ = (bitField1_ & ~0x00002000);
              }
              result.contractProgress_ = contractProgress_;
            } else {
              result.contractProgress_ = contractProgressBuilder_.build();
            }
            if (((bitField1_ & 0x00004000) == 0x00004000)) {
              guildIds_ = java.util.Collections.unmodifiableList(guildIds_);
              bitField1_ = (bitField1_ & ~0x00004000);
            }
            result.guildIds_ = guildIds_;
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance()) return this;
            if (other.hasAccountId()) {
              setAccountId(other.getAccountId());
            }
            if (!other.abilityUpgrades_.isEmpty()) {
              if (abilityUpgrades_.isEmpty()) {
                abilityUpgrades_ = other.abilityUpgrades_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureAbilityUpgradesIsMutable();
                abilityUpgrades_.addAll(other.abilityUpgrades_);
              }
              onChanged();
            }
            if (other.hasPlayerSlot()) {
              setPlayerSlot(other.getPlayerSlot());
            }
            if (equippedEconItemsBuilder_ == null) {
              if (!other.equippedEconItems_.isEmpty()) {
                if (equippedEconItems_.isEmpty()) {
                  equippedEconItems_ = other.equippedEconItems_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureEquippedEconItemsIsMutable();
                  equippedEconItems_.addAll(other.equippedEconItems_);
                }
                onChanged();
              }
            } else {
              if (!other.equippedEconItems_.isEmpty()) {
                if (equippedEconItemsBuilder_.isEmpty()) {
                  equippedEconItemsBuilder_.dispose();
                  equippedEconItemsBuilder_ = null;
                  equippedEconItems_ = other.equippedEconItems_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  equippedEconItemsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getEquippedEconItemsFieldBuilder() : null;
                } else {
                  equippedEconItemsBuilder_.addAllMessages(other.equippedEconItems_);
                }
              }
            }
            if (killsBuilder_ == null) {
              if (!other.kills_.isEmpty()) {
                if (kills_.isEmpty()) {
                  kills_ = other.kills_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                } else {
                  ensureKillsIsMutable();
                  kills_.addAll(other.kills_);
                }
                onChanged();
              }
            } else {
              if (!other.kills_.isEmpty()) {
                if (killsBuilder_.isEmpty()) {
                  killsBuilder_.dispose();
                  killsBuilder_ = null;
                  kills_ = other.kills_;
                  bitField0_ = (bitField0_ & ~0x00000010);
                  killsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getKillsFieldBuilder() : null;
                } else {
                  killsBuilder_.addAllMessages(other.kills_);
                }
              }
            }
            if (itemsBuilder_ == null) {
              if (!other.items_.isEmpty()) {
                if (items_.isEmpty()) {
                  items_ = other.items_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                } else {
                  ensureItemsIsMutable();
                  items_.addAll(other.items_);
                }
                onChanged();
              }
            } else {
              if (!other.items_.isEmpty()) {
                if (itemsBuilder_.isEmpty()) {
                  itemsBuilder_.dispose();
                  itemsBuilder_ = null;
                  items_ = other.items_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                  itemsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getItemsFieldBuilder() : null;
                } else {
                  itemsBuilder_.addAllMessages(other.items_);
                }
              }
            }
            if (other.hasAvgKillsX16()) {
              setAvgKillsX16(other.getAvgKillsX16());
            }
            if (other.hasAvgDeathsX16()) {
              setAvgDeathsX16(other.getAvgDeathsX16());
            }
            if (other.hasAvgAssistsX16()) {
              setAvgAssistsX16(other.getAvgAssistsX16());
            }
            if (other.hasAvgGpmX16()) {
              setAvgGpmX16(other.getAvgGpmX16());
            }
            if (other.hasAvgXpmX16()) {
              setAvgXpmX16(other.getAvgXpmX16());
            }
            if (other.hasBestKillsX16()) {
              setBestKillsX16(other.getBestKillsX16());
            }
            if (other.hasBestAssistsX16()) {
              setBestAssistsX16(other.getBestAssistsX16());
            }
            if (other.hasBestGpmX16()) {
              setBestGpmX16(other.getBestGpmX16());
            }
            if (other.hasBestXpmX16()) {
              setBestXpmX16(other.getBestXpmX16());
            }
            if (other.hasWinStreak()) {
              setWinStreak(other.getWinStreak());
            }
            if (other.hasBestWinStreak()) {
              setBestWinStreak(other.getBestWinStreak());
            }
            if (other.hasFightScore()) {
              setFightScore(other.getFightScore());
            }
            if (other.hasFarmScore()) {
              setFarmScore(other.getFarmScore());
            }
            if (other.hasSupportScore()) {
              setSupportScore(other.getSupportScore());
            }
            if (other.hasPushScore()) {
              setPushScore(other.getPushScore());
            }
            if (!other.levelUpTimes_.isEmpty()) {
              if (levelUpTimes_.isEmpty()) {
                levelUpTimes_ = other.levelUpTimes_;
                bitField0_ = (bitField0_ & ~0x00200000);
              } else {
                ensureLevelUpTimesIsMutable();
                levelUpTimes_.addAll(other.levelUpTimes_);
              }
              onChanged();
            }
            if (!other.graphNetWorth_.isEmpty()) {
              if (graphNetWorth_.isEmpty()) {
                graphNetWorth_ = other.graphNetWorth_;
                bitField0_ = (bitField0_ & ~0x00400000);
              } else {
                ensureGraphNetWorthIsMutable();
                graphNetWorth_.addAll(other.graphNetWorth_);
              }
              onChanged();
            }
            if (inventorySnapshotBuilder_ == null) {
              if (!other.inventorySnapshot_.isEmpty()) {
                if (inventorySnapshot_.isEmpty()) {
                  inventorySnapshot_ = other.inventorySnapshot_;
                  bitField0_ = (bitField0_ & ~0x00800000);
                } else {
                  ensureInventorySnapshotIsMutable();
                  inventorySnapshot_.addAll(other.inventorySnapshot_);
                }
                onChanged();
              }
            } else {
              if (!other.inventorySnapshot_.isEmpty()) {
                if (inventorySnapshotBuilder_.isEmpty()) {
                  inventorySnapshotBuilder_.dispose();
                  inventorySnapshotBuilder_ = null;
                  inventorySnapshot_ = other.inventorySnapshot_;
                  bitField0_ = (bitField0_ & ~0x00800000);
                  inventorySnapshotBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getInventorySnapshotFieldBuilder() : null;
                } else {
                  inventorySnapshotBuilder_.addAllMessages(other.inventorySnapshot_);
                }
              }
            }
            if (other.hasAvgStatsCalibrated()) {
              setAvgStatsCalibrated(other.getAvgStatsCalibrated());
            }
            if (autoStyleCriteriaBuilder_ == null) {
              if (!other.autoStyleCriteria_.isEmpty()) {
                if (autoStyleCriteria_.isEmpty()) {
                  autoStyleCriteria_ = other.autoStyleCriteria_;
                  bitField0_ = (bitField0_ & ~0x02000000);
                } else {
                  ensureAutoStyleCriteriaIsMutable();
                  autoStyleCriteria_.addAll(other.autoStyleCriteria_);
                }
                onChanged();
              }
            } else {
              if (!other.autoStyleCriteria_.isEmpty()) {
                if (autoStyleCriteriaBuilder_.isEmpty()) {
                  autoStyleCriteriaBuilder_.dispose();
                  autoStyleCriteriaBuilder_ = null;
                  autoStyleCriteria_ = other.autoStyleCriteria_;
                  bitField0_ = (bitField0_ & ~0x02000000);
                  autoStyleCriteriaBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getAutoStyleCriteriaFieldBuilder() : null;
                } else {
                  autoStyleCriteriaBuilder_.addAllMessages(other.autoStyleCriteria_);
                }
              }
            }
            if (eventDataBuilder_ == null) {
              if (!other.eventData_.isEmpty()) {
                if (eventData_.isEmpty()) {
                  eventData_ = other.eventData_;
                  bitField0_ = (bitField0_ & ~0x04000000);
                } else {
                  ensureEventDataIsMutable();
                  eventData_.addAll(other.eventData_);
                }
                onChanged();
              }
            } else {
              if (!other.eventData_.isEmpty()) {
                if (eventDataBuilder_.isEmpty()) {
                  eventDataBuilder_.dispose();
                  eventDataBuilder_ = null;
                  eventData_ = other.eventData_;
                  bitField0_ = (bitField0_ & ~0x04000000);
                  eventDataBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getEventDataFieldBuilder() : null;
                } else {
                  eventDataBuilder_.addAllMessages(other.eventData_);
                }
              }
            }
            if (strangeGemProgressBuilder_ == null) {
              if (!other.strangeGemProgress_.isEmpty()) {
                if (strangeGemProgress_.isEmpty()) {
                  strangeGemProgress_ = other.strangeGemProgress_;
                  bitField0_ = (bitField0_ & ~0x08000000);
                } else {
                  ensureStrangeGemProgressIsMutable();
                  strangeGemProgress_.addAll(other.strangeGemProgress_);
                }
                onChanged();
              }
            } else {
              if (!other.strangeGemProgress_.isEmpty()) {
                if (strangeGemProgressBuilder_.isEmpty()) {
                  strangeGemProgressBuilder_.dispose();
                  strangeGemProgressBuilder_ = null;
                  strangeGemProgress_ = other.strangeGemProgress_;
                  bitField0_ = (bitField0_ & ~0x08000000);
                  strangeGemProgressBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getStrangeGemProgressFieldBuilder() : null;
                } else {
                  strangeGemProgressBuilder_.addAllMessages(other.strangeGemProgress_);
                }
              }
            }
            if (other.hasHeroXp()) {
              setHeroXp(other.getHeroXp());
            }
            if (other.hasCampsStacked()) {
              setCampsStacked(other.getCampsStacked());
            }
            if (victoryPredictionBuilder_ == null) {
              if (!other.victoryPrediction_.isEmpty()) {
                if (victoryPrediction_.isEmpty()) {
                  victoryPrediction_ = other.victoryPrediction_;
                  bitField0_ = (bitField0_ & ~0x40000000);
                } else {
                  ensureVictoryPredictionIsMutable();
                  victoryPrediction_.addAll(other.victoryPrediction_);
                }
                onChanged();
              }
            } else {
              if (!other.victoryPrediction_.isEmpty()) {
                if (victoryPredictionBuilder_.isEmpty()) {
                  victoryPredictionBuilder_.dispose();
                  victoryPredictionBuilder_ = null;
                  victoryPrediction_ = other.victoryPrediction_;
                  bitField0_ = (bitField0_ & ~0x40000000);
                  victoryPredictionBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getVictoryPredictionFieldBuilder() : null;
                } else {
                  victoryPredictionBuilder_.addAllMessages(other.victoryPrediction_);
                }
              }
            }
            if (other.hasLaneSelectionFlags()) {
              setLaneSelectionFlags(other.getLaneSelectionFlags());
            }
            if (other.hasRampages()) {
              setRampages(other.getRampages());
            }
            if (other.hasTripleKills()) {
              setTripleKills(other.getTripleKills());
            }
            if (other.hasAegisSnatched()) {
              setAegisSnatched(other.getAegisSnatched());
            }
            if (other.hasRapiersPurchased()) {
              setRapiersPurchased(other.getRapiersPurchased());
            }
            if (other.hasCouriersKilled()) {
              setCouriersKilled(other.getCouriersKilled());
            }
            if (other.hasNetWorthRank()) {
              setNetWorthRank(other.getNetWorthRank());
            }
            if (other.hasSupportGoldSpent()) {
              setSupportGoldSpent(other.getSupportGoldSpent());
            }
            if (other.hasObserverWardsPlaced()) {
              setObserverWardsPlaced(other.getObserverWardsPlaced());
            }
            if (other.hasSentryWardsPlaced()) {
              setSentryWardsPlaced(other.getSentryWardsPlaced());
            }
            if (other.hasWardsDewarded()) {
              setWardsDewarded(other.getWardsDewarded());
            }
            if (other.hasStunDuration()) {
              setStunDuration(other.getStunDuration());
            }
            if (other.hasRankMmrBoostType()) {
              setRankMmrBoostType(other.getRankMmrBoostType());
            }
            if (other.hasGauntletProgress()) {
              mergeGauntletProgress(other.getGauntletProgress());
            }
            if (contractProgressBuilder_ == null) {
              if (!other.contractProgress_.isEmpty()) {
                if (contractProgress_.isEmpty()) {
                  contractProgress_ = other.contractProgress_;
                  bitField1_ = (bitField1_ & ~0x00002000);
                } else {
                  ensureContractProgressIsMutable();
                  contractProgress_.addAll(other.contractProgress_);
                }
                onChanged();
              }
            } else {
              if (!other.contractProgress_.isEmpty()) {
                if (contractProgressBuilder_.isEmpty()) {
                  contractProgressBuilder_.dispose();
                  contractProgressBuilder_ = null;
                  contractProgress_ = other.contractProgress_;
                  bitField1_ = (bitField1_ & ~0x00002000);
                  contractProgressBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getContractProgressFieldBuilder() : null;
                } else {
                  contractProgressBuilder_.addAllMessages(other.contractProgress_);
                }
              }
            }
            if (!other.guildIds_.isEmpty()) {
              if (guildIds_.isEmpty()) {
                guildIds_ = other.guildIds_;
                bitField1_ = (bitField1_ & ~0x00004000);
              } else {
                ensureGuildIdsIsMutable();
                guildIds_.addAll(other.guildIds_);
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player) e.getUnfinishedMessage();
              throw e;
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
          private int bitField1_;

          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.util.List abilityUpgrades_ = java.util.Collections.emptyList();
          private void ensureAbilityUpgradesIsMutable() {
            if (!((bitField0_ & 0x00000002) == 0x00000002)) {
              abilityUpgrades_ = new java.util.ArrayList(abilityUpgrades_);
              bitField0_ |= 0x00000002;
             }
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public java.util.List
              getAbilityUpgradesList() {
            return java.util.Collections.unmodifiableList(abilityUpgrades_);
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public int getAbilityUpgradesCount() {
            return abilityUpgrades_.size();
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public int getAbilityUpgrades(int index) {
            return abilityUpgrades_.get(index);
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder setAbilityUpgrades(
              int index, int value) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder addAbilityUpgrades(int value) {
            ensureAbilityUpgradesIsMutable();
            abilityUpgrades_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder addAllAbilityUpgrades(
              java.lang.Iterable values) {
            ensureAbilityUpgradesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, abilityUpgrades_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 ability_upgrades = 2;
           */
          public Builder clearAbilityUpgrades() {
            abilityUpgrades_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
            return this;
          }

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

          private java.util.List equippedEconItems_ =
            java.util.Collections.emptyList();
          private void ensureEquippedEconItemsIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              equippedEconItems_ = new java.util.ArrayList(equippedEconItems_);
              bitField0_ |= 0x00000008;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder> equippedEconItemsBuilder_;

          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List getEquippedEconItemsList() {
            if (equippedEconItemsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(equippedEconItems_);
            } else {
              return equippedEconItemsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public int getEquippedEconItemsCount() {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.size();
            } else {
              return equippedEconItemsBuilder_.getCount();
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem getEquippedEconItems(int index) {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.get(index);
            } else {
              return equippedEconItemsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder setEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.set(index, value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder setEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.set(index, builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem value) {
            if (equippedEconItemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(index, value);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addEquippedEconItems(
              int index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder builderForValue) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.add(index, builderForValue.build());
              onChanged();
            } else {
              equippedEconItemsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder addAllEquippedEconItems(
              java.lang.Iterable values) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, equippedEconItems_);
              onChanged();
            } else {
              equippedEconItemsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder clearEquippedEconItems() {
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItems_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              equippedEconItemsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public Builder removeEquippedEconItems(int index) {
            if (equippedEconItemsBuilder_ == null) {
              ensureEquippedEconItemsIsMutable();
              equippedEconItems_.remove(index);
              onChanged();
            } else {
              equippedEconItemsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder getEquippedEconItemsBuilder(
              int index) {
            return getEquippedEconItemsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder getEquippedEconItemsOrBuilder(
              int index) {
            if (equippedEconItemsBuilder_ == null) {
              return equippedEconItems_.get(index);  } else {
              return equippedEconItemsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List 
               getEquippedEconItemsOrBuilderList() {
            if (equippedEconItemsBuilder_ != null) {
              return equippedEconItemsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(equippedEconItems_);
            }
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder addEquippedEconItemsBuilder() {
            return getEquippedEconItemsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.getDefaultInstance());
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder addEquippedEconItemsBuilder(
              int index) {
            return getEquippedEconItemsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.getDefaultInstance());
          }
          /**
           * repeated .CSOEconItem equipped_econ_items = 4;
           */
          public java.util.List 
               getEquippedEconItemsBuilderList() {
            return getEquippedEconItemsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder> 
              getEquippedEconItemsFieldBuilder() {
            if (equippedEconItemsBuilder_ == null) {
              equippedEconItemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItem.Builder, skadistats.clarity.wire.s2.proto.S2BaseGcMessages.CSOEconItemOrBuilder>(
                      equippedEconItems_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              equippedEconItems_ = null;
            }
            return equippedEconItemsBuilder_;
          }

          private java.util.List kills_ =
            java.util.Collections.emptyList();
          private void ensureKillsIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              kills_ = new java.util.ArrayList(kills_);
              bitField0_ |= 0x00000010;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder> killsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List getKillsList() {
            if (killsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(kills_);
            } else {
              return killsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public int getKillsCount() {
            if (killsBuilder_ == null) {
              return kills_.size();
            } else {
              return killsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill getKills(int index) {
            if (killsBuilder_ == null) {
              return kills_.get(index);
            } else {
              return killsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder setKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.set(index, value);
              onChanged();
            } else {
              killsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder setKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.set(index, builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.add(value);
              onChanged();
            } else {
              killsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill value) {
            if (killsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureKillsIsMutable();
              kills_.add(index, value);
              onChanged();
            } else {
              killsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.add(builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addKills(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder builderForValue) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.add(index, builderForValue.build());
              onChanged();
            } else {
              killsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder addAllKills(
              java.lang.Iterable values) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, kills_);
              onChanged();
            } else {
              killsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder clearKills() {
            if (killsBuilder_ == null) {
              kills_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000010);
              onChanged();
            } else {
              killsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public Builder removeKills(int index) {
            if (killsBuilder_ == null) {
              ensureKillsIsMutable();
              kills_.remove(index);
              onChanged();
            } else {
              killsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder getKillsBuilder(
              int index) {
            return getKillsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder getKillsOrBuilder(
              int index) {
            if (killsBuilder_ == null) {
              return kills_.get(index);  } else {
              return killsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List 
               getKillsOrBuilderList() {
            if (killsBuilder_ != null) {
              return killsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(kills_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder addKillsBuilder() {
            return getKillsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder addKillsBuilder(
              int index) {
            return getKillsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.PlayerKill kills = 5;
           */
          public java.util.List 
               getKillsBuilderList() {
            return getKillsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder> 
              getKillsFieldBuilder() {
            if (killsBuilder_ == null) {
              killsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKill.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerKillOrBuilder>(
                      kills_,
                      ((bitField0_ & 0x00000010) == 0x00000010),
                      getParentForChildren(),
                      isClean());
              kills_ = null;
            }
            return killsBuilder_;
          }

          private java.util.List items_ =
            java.util.Collections.emptyList();
          private void ensureItemsIsMutable() {
            if (!((bitField0_ & 0x00000020) == 0x00000020)) {
              items_ = new java.util.ArrayList(items_);
              bitField0_ |= 0x00000020;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder> itemsBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List getItemsList() {
            if (itemsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(items_);
            } else {
              return itemsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public int getItemsCount() {
            if (itemsBuilder_ == null) {
              return items_.size();
            } else {
              return itemsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase getItems(int index) {
            if (itemsBuilder_ == null) {
              return items_.get(index);
            } else {
              return itemsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder setItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.set(index, value);
              onChanged();
            } else {
              itemsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder setItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.set(index, builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.add(value);
              onChanged();
            } else {
              itemsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase value) {
            if (itemsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureItemsIsMutable();
              items_.add(index, value);
              onChanged();
            } else {
              itemsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.add(builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addItems(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder builderForValue) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.add(index, builderForValue.build());
              onChanged();
            } else {
              itemsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder addAllItems(
              java.lang.Iterable values) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, items_);
              onChanged();
            } else {
              itemsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder clearItems() {
            if (itemsBuilder_ == null) {
              items_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
              onChanged();
            } else {
              itemsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public Builder removeItems(int index) {
            if (itemsBuilder_ == null) {
              ensureItemsIsMutable();
              items_.remove(index);
              onChanged();
            } else {
              itemsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder getItemsBuilder(
              int index) {
            return getItemsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder getItemsOrBuilder(
              int index) {
            if (itemsBuilder_ == null) {
              return items_.get(index);  } else {
              return itemsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List 
               getItemsOrBuilderList() {
            if (itemsBuilder_ != null) {
              return itemsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(items_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder addItemsBuilder() {
            return getItemsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder addItemsBuilder(
              int index) {
            return getItemsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.ItemPurchase items = 6;
           */
          public java.util.List 
               getItemsBuilderList() {
            return getItemsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder> 
              getItemsFieldBuilder() {
            if (itemsBuilder_ == null) {
              itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchase.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.ItemPurchaseOrBuilder>(
                      items_,
                      ((bitField0_ & 0x00000020) == 0x00000020),
                      getParentForChildren(),
                      isClean());
              items_ = null;
            }
            return itemsBuilder_;
          }

          private int avgKillsX16_ ;
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public boolean hasAvgKillsX16() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public int getAvgKillsX16() {
            return avgKillsX16_;
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public Builder setAvgKillsX16(int value) {
            bitField0_ |= 0x00000040;
            avgKillsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_kills_x16 = 7;
           */
          public Builder clearAvgKillsX16() {
            bitField0_ = (bitField0_ & ~0x00000040);
            avgKillsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgDeathsX16_ ;
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public boolean hasAvgDeathsX16() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public int getAvgDeathsX16() {
            return avgDeathsX16_;
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public Builder setAvgDeathsX16(int value) {
            bitField0_ |= 0x00000080;
            avgDeathsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_deaths_x16 = 8;
           */
          public Builder clearAvgDeathsX16() {
            bitField0_ = (bitField0_ & ~0x00000080);
            avgDeathsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgAssistsX16_ ;
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public boolean hasAvgAssistsX16() {
            return ((bitField0_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public int getAvgAssistsX16() {
            return avgAssistsX16_;
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public Builder setAvgAssistsX16(int value) {
            bitField0_ |= 0x00000100;
            avgAssistsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_assists_x16 = 9;
           */
          public Builder clearAvgAssistsX16() {
            bitField0_ = (bitField0_ & ~0x00000100);
            avgAssistsX16_ = 0;
            onChanged();
            return this;
          }

          private int avgGpmX16_ ;
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public boolean hasAvgGpmX16() {
            return ((bitField0_ & 0x00000200) == 0x00000200);
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public int getAvgGpmX16() {
            return avgGpmX16_;
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public Builder setAvgGpmX16(int value) {
            bitField0_ |= 0x00000200;
            avgGpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_gpm_x16 = 10;
           */
          public Builder clearAvgGpmX16() {
            bitField0_ = (bitField0_ & ~0x00000200);
            avgGpmX16_ = 0;
            onChanged();
            return this;
          }

          private int avgXpmX16_ ;
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public boolean hasAvgXpmX16() {
            return ((bitField0_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public int getAvgXpmX16() {
            return avgXpmX16_;
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public Builder setAvgXpmX16(int value) {
            bitField0_ |= 0x00000400;
            avgXpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 avg_xpm_x16 = 11;
           */
          public Builder clearAvgXpmX16() {
            bitField0_ = (bitField0_ & ~0x00000400);
            avgXpmX16_ = 0;
            onChanged();
            return this;
          }

          private int bestKillsX16_ ;
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public boolean hasBestKillsX16() {
            return ((bitField0_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public int getBestKillsX16() {
            return bestKillsX16_;
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public Builder setBestKillsX16(int value) {
            bitField0_ |= 0x00000800;
            bestKillsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_kills_x16 = 12;
           */
          public Builder clearBestKillsX16() {
            bitField0_ = (bitField0_ & ~0x00000800);
            bestKillsX16_ = 0;
            onChanged();
            return this;
          }

          private int bestAssistsX16_ ;
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public boolean hasBestAssistsX16() {
            return ((bitField0_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public int getBestAssistsX16() {
            return bestAssistsX16_;
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public Builder setBestAssistsX16(int value) {
            bitField0_ |= 0x00001000;
            bestAssistsX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_assists_x16 = 13;
           */
          public Builder clearBestAssistsX16() {
            bitField0_ = (bitField0_ & ~0x00001000);
            bestAssistsX16_ = 0;
            onChanged();
            return this;
          }

          private int bestGpmX16_ ;
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public boolean hasBestGpmX16() {
            return ((bitField0_ & 0x00002000) == 0x00002000);
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public int getBestGpmX16() {
            return bestGpmX16_;
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public Builder setBestGpmX16(int value) {
            bitField0_ |= 0x00002000;
            bestGpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_gpm_x16 = 14;
           */
          public Builder clearBestGpmX16() {
            bitField0_ = (bitField0_ & ~0x00002000);
            bestGpmX16_ = 0;
            onChanged();
            return this;
          }

          private int bestXpmX16_ ;
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public boolean hasBestXpmX16() {
            return ((bitField0_ & 0x00004000) == 0x00004000);
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public int getBestXpmX16() {
            return bestXpmX16_;
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public Builder setBestXpmX16(int value) {
            bitField0_ |= 0x00004000;
            bestXpmX16_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_xpm_x16 = 15;
           */
          public Builder clearBestXpmX16() {
            bitField0_ = (bitField0_ & ~0x00004000);
            bestXpmX16_ = 0;
            onChanged();
            return this;
          }

          private int winStreak_ ;
          /**
           * optional uint32 win_streak = 16;
           */
          public boolean hasWinStreak() {
            return ((bitField0_ & 0x00008000) == 0x00008000);
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public int getWinStreak() {
            return winStreak_;
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public Builder setWinStreak(int value) {
            bitField0_ |= 0x00008000;
            winStreak_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 win_streak = 16;
           */
          public Builder clearWinStreak() {
            bitField0_ = (bitField0_ & ~0x00008000);
            winStreak_ = 0;
            onChanged();
            return this;
          }

          private int bestWinStreak_ ;
          /**
           * optional uint32 best_win_streak = 17;
           */
          public boolean hasBestWinStreak() {
            return ((bitField0_ & 0x00010000) == 0x00010000);
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public int getBestWinStreak() {
            return bestWinStreak_;
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public Builder setBestWinStreak(int value) {
            bitField0_ |= 0x00010000;
            bestWinStreak_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 best_win_streak = 17;
           */
          public Builder clearBestWinStreak() {
            bitField0_ = (bitField0_ & ~0x00010000);
            bestWinStreak_ = 0;
            onChanged();
            return this;
          }

          private float fightScore_ ;
          /**
           * optional float fight_score = 18;
           */
          public boolean hasFightScore() {
            return ((bitField0_ & 0x00020000) == 0x00020000);
          }
          /**
           * optional float fight_score = 18;
           */
          public float getFightScore() {
            return fightScore_;
          }
          /**
           * optional float fight_score = 18;
           */
          public Builder setFightScore(float value) {
            bitField0_ |= 0x00020000;
            fightScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float fight_score = 18;
           */
          public Builder clearFightScore() {
            bitField0_ = (bitField0_ & ~0x00020000);
            fightScore_ = 0F;
            onChanged();
            return this;
          }

          private float farmScore_ ;
          /**
           * optional float farm_score = 19;
           */
          public boolean hasFarmScore() {
            return ((bitField0_ & 0x00040000) == 0x00040000);
          }
          /**
           * optional float farm_score = 19;
           */
          public float getFarmScore() {
            return farmScore_;
          }
          /**
           * optional float farm_score = 19;
           */
          public Builder setFarmScore(float value) {
            bitField0_ |= 0x00040000;
            farmScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float farm_score = 19;
           */
          public Builder clearFarmScore() {
            bitField0_ = (bitField0_ & ~0x00040000);
            farmScore_ = 0F;
            onChanged();
            return this;
          }

          private float supportScore_ ;
          /**
           * optional float support_score = 20;
           */
          public boolean hasSupportScore() {
            return ((bitField0_ & 0x00080000) == 0x00080000);
          }
          /**
           * optional float support_score = 20;
           */
          public float getSupportScore() {
            return supportScore_;
          }
          /**
           * optional float support_score = 20;
           */
          public Builder setSupportScore(float value) {
            bitField0_ |= 0x00080000;
            supportScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float support_score = 20;
           */
          public Builder clearSupportScore() {
            bitField0_ = (bitField0_ & ~0x00080000);
            supportScore_ = 0F;
            onChanged();
            return this;
          }

          private float pushScore_ ;
          /**
           * optional float push_score = 21;
           */
          public boolean hasPushScore() {
            return ((bitField0_ & 0x00100000) == 0x00100000);
          }
          /**
           * optional float push_score = 21;
           */
          public float getPushScore() {
            return pushScore_;
          }
          /**
           * optional float push_score = 21;
           */
          public Builder setPushScore(float value) {
            bitField0_ |= 0x00100000;
            pushScore_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float push_score = 21;
           */
          public Builder clearPushScore() {
            bitField0_ = (bitField0_ & ~0x00100000);
            pushScore_ = 0F;
            onChanged();
            return this;
          }

          private java.util.List levelUpTimes_ = java.util.Collections.emptyList();
          private void ensureLevelUpTimesIsMutable() {
            if (!((bitField0_ & 0x00200000) == 0x00200000)) {
              levelUpTimes_ = new java.util.ArrayList(levelUpTimes_);
              bitField0_ |= 0x00200000;
             }
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public java.util.List
              getLevelUpTimesList() {
            return java.util.Collections.unmodifiableList(levelUpTimes_);
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public int getLevelUpTimesCount() {
            return levelUpTimes_.size();
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public int getLevelUpTimes(int index) {
            return levelUpTimes_.get(index);
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder setLevelUpTimes(
              int index, int value) {
            ensureLevelUpTimesIsMutable();
            levelUpTimes_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder addLevelUpTimes(int value) {
            ensureLevelUpTimesIsMutable();
            levelUpTimes_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder addAllLevelUpTimes(
              java.lang.Iterable values) {
            ensureLevelUpTimesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, levelUpTimes_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 level_up_times = 22;
           */
          public Builder clearLevelUpTimes() {
            levelUpTimes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00200000);
            onChanged();
            return this;
          }

          private java.util.List graphNetWorth_ = java.util.Collections.emptyList();
          private void ensureGraphNetWorthIsMutable() {
            if (!((bitField0_ & 0x00400000) == 0x00400000)) {
              graphNetWorth_ = new java.util.ArrayList(graphNetWorth_);
              bitField0_ |= 0x00400000;
             }
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public java.util.List
              getGraphNetWorthList() {
            return java.util.Collections.unmodifiableList(graphNetWorth_);
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public int getGraphNetWorthCount() {
            return graphNetWorth_.size();
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public float getGraphNetWorth(int index) {
            return graphNetWorth_.get(index);
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder setGraphNetWorth(
              int index, float value) {
            ensureGraphNetWorthIsMutable();
            graphNetWorth_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder addGraphNetWorth(float value) {
            ensureGraphNetWorthIsMutable();
            graphNetWorth_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder addAllGraphNetWorth(
              java.lang.Iterable values) {
            ensureGraphNetWorthIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphNetWorth_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_net_worth = 23;
           */
          public Builder clearGraphNetWorth() {
            graphNetWorth_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00400000);
            onChanged();
            return this;
          }

          private java.util.List inventorySnapshot_ =
            java.util.Collections.emptyList();
          private void ensureInventorySnapshotIsMutable() {
            if (!((bitField0_ & 0x00800000) == 0x00800000)) {
              inventorySnapshot_ = new java.util.ArrayList(inventorySnapshot_);
              bitField0_ |= 0x00800000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder> inventorySnapshotBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List getInventorySnapshotList() {
            if (inventorySnapshotBuilder_ == null) {
              return java.util.Collections.unmodifiableList(inventorySnapshot_);
            } else {
              return inventorySnapshotBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public int getInventorySnapshotCount() {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.size();
            } else {
              return inventorySnapshotBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot getInventorySnapshot(int index) {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.get(index);
            } else {
              return inventorySnapshotBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder setInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.set(index, value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder setInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.set(index, builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot value) {
            if (inventorySnapshotBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(index, value);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addInventorySnapshot(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder builderForValue) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.add(index, builderForValue.build());
              onChanged();
            } else {
              inventorySnapshotBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder addAllInventorySnapshot(
              java.lang.Iterable values) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, inventorySnapshot_);
              onChanged();
            } else {
              inventorySnapshotBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder clearInventorySnapshot() {
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshot_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00800000);
              onChanged();
            } else {
              inventorySnapshotBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public Builder removeInventorySnapshot(int index) {
            if (inventorySnapshotBuilder_ == null) {
              ensureInventorySnapshotIsMutable();
              inventorySnapshot_.remove(index);
              onChanged();
            } else {
              inventorySnapshotBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder getInventorySnapshotBuilder(
              int index) {
            return getInventorySnapshotFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder getInventorySnapshotOrBuilder(
              int index) {
            if (inventorySnapshotBuilder_ == null) {
              return inventorySnapshot_.get(index);  } else {
              return inventorySnapshotBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List 
               getInventorySnapshotOrBuilderList() {
            if (inventorySnapshotBuilder_ != null) {
              return inventorySnapshotBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(inventorySnapshot_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder addInventorySnapshotBuilder() {
            return getInventorySnapshotFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder addInventorySnapshotBuilder(
              int index) {
            return getInventorySnapshotFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.InventorySnapshot inventory_snapshot = 24;
           */
          public java.util.List 
               getInventorySnapshotBuilderList() {
            return getInventorySnapshotFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder> 
              getInventorySnapshotFieldBuilder() {
            if (inventorySnapshotBuilder_ == null) {
              inventorySnapshotBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshot.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.InventorySnapshotOrBuilder>(
                      inventorySnapshot_,
                      ((bitField0_ & 0x00800000) == 0x00800000),
                      getParentForChildren(),
                      isClean());
              inventorySnapshot_ = null;
            }
            return inventorySnapshotBuilder_;
          }

          private boolean avgStatsCalibrated_ ;
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public boolean hasAvgStatsCalibrated() {
            return ((bitField0_ & 0x01000000) == 0x01000000);
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public boolean getAvgStatsCalibrated() {
            return avgStatsCalibrated_;
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public Builder setAvgStatsCalibrated(boolean value) {
            bitField0_ |= 0x01000000;
            avgStatsCalibrated_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bool avg_stats_calibrated = 25;
           */
          public Builder clearAvgStatsCalibrated() {
            bitField0_ = (bitField0_ & ~0x01000000);
            avgStatsCalibrated_ = false;
            onChanged();
            return this;
          }

          private java.util.List autoStyleCriteria_ =
            java.util.Collections.emptyList();
          private void ensureAutoStyleCriteriaIsMutable() {
            if (!((bitField0_ & 0x02000000) == 0x02000000)) {
              autoStyleCriteria_ = new java.util.ArrayList(autoStyleCriteria_);
              bitField0_ |= 0x02000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder> autoStyleCriteriaBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List getAutoStyleCriteriaList() {
            if (autoStyleCriteriaBuilder_ == null) {
              return java.util.Collections.unmodifiableList(autoStyleCriteria_);
            } else {
              return autoStyleCriteriaBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public int getAutoStyleCriteriaCount() {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.size();
            } else {
              return autoStyleCriteriaBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria getAutoStyleCriteria(int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.get(index);
            } else {
              return autoStyleCriteriaBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder setAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.set(index, value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder setAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.set(index, builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria value) {
            if (autoStyleCriteriaBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(index, value);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAutoStyleCriteria(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder builderForValue) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.add(index, builderForValue.build());
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder addAllAutoStyleCriteria(
              java.lang.Iterable values) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, autoStyleCriteria_);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder clearAutoStyleCriteria() {
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteria_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x02000000);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public Builder removeAutoStyleCriteria(int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              ensureAutoStyleCriteriaIsMutable();
              autoStyleCriteria_.remove(index);
              onChanged();
            } else {
              autoStyleCriteriaBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder getAutoStyleCriteriaBuilder(
              int index) {
            return getAutoStyleCriteriaFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder getAutoStyleCriteriaOrBuilder(
              int index) {
            if (autoStyleCriteriaBuilder_ == null) {
              return autoStyleCriteria_.get(index);  } else {
              return autoStyleCriteriaBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List 
               getAutoStyleCriteriaOrBuilderList() {
            if (autoStyleCriteriaBuilder_ != null) {
              return autoStyleCriteriaBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(autoStyleCriteria_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder addAutoStyleCriteriaBuilder() {
            return getAutoStyleCriteriaFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder addAutoStyleCriteriaBuilder(
              int index) {
            return getAutoStyleCriteriaFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.AutoStyleCriteria auto_style_criteria = 26;
           */
          public java.util.List 
               getAutoStyleCriteriaBuilderList() {
            return getAutoStyleCriteriaFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder> 
              getAutoStyleCriteriaFieldBuilder() {
            if (autoStyleCriteriaBuilder_ == null) {
              autoStyleCriteriaBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteria.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.AutoStyleCriteriaOrBuilder>(
                      autoStyleCriteria_,
                      ((bitField0_ & 0x02000000) == 0x02000000),
                      getParentForChildren(),
                      isClean());
              autoStyleCriteria_ = null;
            }
            return autoStyleCriteriaBuilder_;
          }

          private java.util.List eventData_ =
            java.util.Collections.emptyList();
          private void ensureEventDataIsMutable() {
            if (!((bitField0_ & 0x04000000) == 0x04000000)) {
              eventData_ = new java.util.ArrayList(eventData_);
              bitField0_ |= 0x04000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder> eventDataBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List getEventDataList() {
            if (eventDataBuilder_ == null) {
              return java.util.Collections.unmodifiableList(eventData_);
            } else {
              return eventDataBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public int getEventDataCount() {
            if (eventDataBuilder_ == null) {
              return eventData_.size();
            } else {
              return eventDataBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData getEventData(int index) {
            if (eventDataBuilder_ == null) {
              return eventData_.get(index);
            } else {
              return eventDataBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder setEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.set(index, value);
              onChanged();
            } else {
              eventDataBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder setEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.set(index, builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.add(value);
              onChanged();
            } else {
              eventDataBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData value) {
            if (eventDataBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureEventDataIsMutable();
              eventData_.add(index, value);
              onChanged();
            } else {
              eventDataBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.add(builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addEventData(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder builderForValue) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.add(index, builderForValue.build());
              onChanged();
            } else {
              eventDataBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder addAllEventData(
              java.lang.Iterable values) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, eventData_);
              onChanged();
            } else {
              eventDataBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder clearEventData() {
            if (eventDataBuilder_ == null) {
              eventData_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x04000000);
              onChanged();
            } else {
              eventDataBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public Builder removeEventData(int index) {
            if (eventDataBuilder_ == null) {
              ensureEventDataIsMutable();
              eventData_.remove(index);
              onChanged();
            } else {
              eventDataBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder getEventDataBuilder(
              int index) {
            return getEventDataFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder getEventDataOrBuilder(
              int index) {
            if (eventDataBuilder_ == null) {
              return eventData_.get(index);  } else {
              return eventDataBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List 
               getEventDataOrBuilderList() {
            if (eventDataBuilder_ != null) {
              return eventDataBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(eventData_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder addEventDataBuilder() {
            return getEventDataFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder addEventDataBuilder(
              int index) {
            return getEventDataFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.EventData event_data = 29;
           */
          public java.util.List 
               getEventDataBuilderList() {
            return getEventDataFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder> 
              getEventDataFieldBuilder() {
            if (eventDataBuilder_ == null) {
              eventDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventData.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.EventDataOrBuilder>(
                      eventData_,
                      ((bitField0_ & 0x04000000) == 0x04000000),
                      getParentForChildren(),
                      isClean());
              eventData_ = null;
            }
            return eventDataBuilder_;
          }

          private java.util.List strangeGemProgress_ =
            java.util.Collections.emptyList();
          private void ensureStrangeGemProgressIsMutable() {
            if (!((bitField0_ & 0x08000000) == 0x08000000)) {
              strangeGemProgress_ = new java.util.ArrayList(strangeGemProgress_);
              bitField0_ |= 0x08000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder> strangeGemProgressBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List getStrangeGemProgressList() {
            if (strangeGemProgressBuilder_ == null) {
              return java.util.Collections.unmodifiableList(strangeGemProgress_);
            } else {
              return strangeGemProgressBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public int getStrangeGemProgressCount() {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.size();
            } else {
              return strangeGemProgressBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress getStrangeGemProgress(int index) {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.get(index);
            } else {
              return strangeGemProgressBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder setStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.set(index, value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder setStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.set(index, builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress value) {
            if (strangeGemProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(index, value);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addStrangeGemProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder builderForValue) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.add(index, builderForValue.build());
              onChanged();
            } else {
              strangeGemProgressBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder addAllStrangeGemProgress(
              java.lang.Iterable values) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, strangeGemProgress_);
              onChanged();
            } else {
              strangeGemProgressBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder clearStrangeGemProgress() {
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgress_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x08000000);
              onChanged();
            } else {
              strangeGemProgressBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public Builder removeStrangeGemProgress(int index) {
            if (strangeGemProgressBuilder_ == null) {
              ensureStrangeGemProgressIsMutable();
              strangeGemProgress_.remove(index);
              onChanged();
            } else {
              strangeGemProgressBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder getStrangeGemProgressBuilder(
              int index) {
            return getStrangeGemProgressFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder getStrangeGemProgressOrBuilder(
              int index) {
            if (strangeGemProgressBuilder_ == null) {
              return strangeGemProgress_.get(index);  } else {
              return strangeGemProgressBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List 
               getStrangeGemProgressOrBuilderList() {
            if (strangeGemProgressBuilder_ != null) {
              return strangeGemProgressBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(strangeGemProgress_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder addStrangeGemProgressBuilder() {
            return getStrangeGemProgressFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder addStrangeGemProgressBuilder(
              int index) {
            return getStrangeGemProgressFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.StrangeGemProgress strange_gem_progress = 30;
           */
          public java.util.List 
               getStrangeGemProgressBuilderList() {
            return getStrangeGemProgressFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder> 
              getStrangeGemProgressFieldBuilder() {
            if (strangeGemProgressBuilder_ == null) {
              strangeGemProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.StrangeGemProgressOrBuilder>(
                      strangeGemProgress_,
                      ((bitField0_ & 0x08000000) == 0x08000000),
                      getParentForChildren(),
                      isClean());
              strangeGemProgress_ = null;
            }
            return strangeGemProgressBuilder_;
          }

          private int heroXp_ ;
          /**
           * optional uint32 hero_xp = 31;
           */
          public boolean hasHeroXp() {
            return ((bitField0_ & 0x10000000) == 0x10000000);
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public int getHeroXp() {
            return heroXp_;
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public Builder setHeroXp(int value) {
            bitField0_ |= 0x10000000;
            heroXp_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 hero_xp = 31;
           */
          public Builder clearHeroXp() {
            bitField0_ = (bitField0_ & ~0x10000000);
            heroXp_ = 0;
            onChanged();
            return this;
          }

          private int campsStacked_ ;
          /**
           * optional uint32 camps_stacked = 32;
           */
          public boolean hasCampsStacked() {
            return ((bitField0_ & 0x20000000) == 0x20000000);
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public int getCampsStacked() {
            return campsStacked_;
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public Builder setCampsStacked(int value) {
            bitField0_ |= 0x20000000;
            campsStacked_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 camps_stacked = 32;
           */
          public Builder clearCampsStacked() {
            bitField0_ = (bitField0_ & ~0x20000000);
            campsStacked_ = 0;
            onChanged();
            return this;
          }

          private java.util.List victoryPrediction_ =
            java.util.Collections.emptyList();
          private void ensureVictoryPredictionIsMutable() {
            if (!((bitField0_ & 0x40000000) == 0x40000000)) {
              victoryPrediction_ = new java.util.ArrayList(victoryPrediction_);
              bitField0_ |= 0x40000000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder> victoryPredictionBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List getVictoryPredictionList() {
            if (victoryPredictionBuilder_ == null) {
              return java.util.Collections.unmodifiableList(victoryPrediction_);
            } else {
              return victoryPredictionBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public int getVictoryPredictionCount() {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.size();
            } else {
              return victoryPredictionBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction getVictoryPrediction(int index) {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.get(index);
            } else {
              return victoryPredictionBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder setVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.set(index, value);
              onChanged();
            } else {
              victoryPredictionBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder setVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.set(index, builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(value);
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction value) {
            if (victoryPredictionBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(index, value);
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addVictoryPrediction(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder builderForValue) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.add(index, builderForValue.build());
              onChanged();
            } else {
              victoryPredictionBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder addAllVictoryPrediction(
              java.lang.Iterable values) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, victoryPrediction_);
              onChanged();
            } else {
              victoryPredictionBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder clearVictoryPrediction() {
            if (victoryPredictionBuilder_ == null) {
              victoryPrediction_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x40000000);
              onChanged();
            } else {
              victoryPredictionBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public Builder removeVictoryPrediction(int index) {
            if (victoryPredictionBuilder_ == null) {
              ensureVictoryPredictionIsMutable();
              victoryPrediction_.remove(index);
              onChanged();
            } else {
              victoryPredictionBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder getVictoryPredictionBuilder(
              int index) {
            return getVictoryPredictionFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder getVictoryPredictionOrBuilder(
              int index) {
            if (victoryPredictionBuilder_ == null) {
              return victoryPrediction_.get(index);  } else {
              return victoryPredictionBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List 
               getVictoryPredictionOrBuilderList() {
            if (victoryPredictionBuilder_ != null) {
              return victoryPredictionBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(victoryPrediction_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder addVictoryPredictionBuilder() {
            return getVictoryPredictionFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder addVictoryPredictionBuilder(
              int index) {
            return getVictoryPredictionFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.VictoryPrediction victory_prediction = 33;
           */
          public java.util.List 
               getVictoryPredictionBuilderList() {
            return getVictoryPredictionFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder> 
              getVictoryPredictionFieldBuilder() {
            if (victoryPredictionBuilder_ == null) {
              victoryPredictionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPrediction.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.VictoryPredictionOrBuilder>(
                      victoryPrediction_,
                      ((bitField0_ & 0x40000000) == 0x40000000),
                      getParentForChildren(),
                      isClean());
              victoryPrediction_ = null;
            }
            return victoryPredictionBuilder_;
          }

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

          private int rampages_ ;
          /**
           * optional uint32 rampages = 35;
           */
          public boolean hasRampages() {
            return ((bitField1_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 rampages = 35;
           */
          public int getRampages() {
            return rampages_;
          }
          /**
           * optional uint32 rampages = 35;
           */
          public Builder setRampages(int value) {
            bitField1_ |= 0x00000001;
            rampages_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 rampages = 35;
           */
          public Builder clearRampages() {
            bitField1_ = (bitField1_ & ~0x00000001);
            rampages_ = 0;
            onChanged();
            return this;
          }

          private int tripleKills_ ;
          /**
           * optional uint32 triple_kills = 36;
           */
          public boolean hasTripleKills() {
            return ((bitField1_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public int getTripleKills() {
            return tripleKills_;
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public Builder setTripleKills(int value) {
            bitField1_ |= 0x00000002;
            tripleKills_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 triple_kills = 36;
           */
          public Builder clearTripleKills() {
            bitField1_ = (bitField1_ & ~0x00000002);
            tripleKills_ = 0;
            onChanged();
            return this;
          }

          private int aegisSnatched_ ;
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public boolean hasAegisSnatched() {
            return ((bitField1_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public int getAegisSnatched() {
            return aegisSnatched_;
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public Builder setAegisSnatched(int value) {
            bitField1_ |= 0x00000004;
            aegisSnatched_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 aegis_snatched = 37;
           */
          public Builder clearAegisSnatched() {
            bitField1_ = (bitField1_ & ~0x00000004);
            aegisSnatched_ = 0;
            onChanged();
            return this;
          }

          private int rapiersPurchased_ ;
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public boolean hasRapiersPurchased() {
            return ((bitField1_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public int getRapiersPurchased() {
            return rapiersPurchased_;
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public Builder setRapiersPurchased(int value) {
            bitField1_ |= 0x00000008;
            rapiersPurchased_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 rapiers_purchased = 38;
           */
          public Builder clearRapiersPurchased() {
            bitField1_ = (bitField1_ & ~0x00000008);
            rapiersPurchased_ = 0;
            onChanged();
            return this;
          }

          private int couriersKilled_ ;
          /**
           * optional uint32 couriers_killed = 39;
           */
          public boolean hasCouriersKilled() {
            return ((bitField1_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public int getCouriersKilled() {
            return couriersKilled_;
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public Builder setCouriersKilled(int value) {
            bitField1_ |= 0x00000010;
            couriersKilled_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 couriers_killed = 39;
           */
          public Builder clearCouriersKilled() {
            bitField1_ = (bitField1_ & ~0x00000010);
            couriersKilled_ = 0;
            onChanged();
            return this;
          }

          private int netWorthRank_ ;
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public boolean hasNetWorthRank() {
            return ((bitField1_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public int getNetWorthRank() {
            return netWorthRank_;
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public Builder setNetWorthRank(int value) {
            bitField1_ |= 0x00000020;
            netWorthRank_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 net_worth_rank = 40;
           */
          public Builder clearNetWorthRank() {
            bitField1_ = (bitField1_ & ~0x00000020);
            netWorthRank_ = 0;
            onChanged();
            return this;
          }

          private int supportGoldSpent_ ;
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public boolean hasSupportGoldSpent() {
            return ((bitField1_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public int getSupportGoldSpent() {
            return supportGoldSpent_;
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public Builder setSupportGoldSpent(int value) {
            bitField1_ |= 0x00000040;
            supportGoldSpent_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 support_gold_spent = 41;
           */
          public Builder clearSupportGoldSpent() {
            bitField1_ = (bitField1_ & ~0x00000040);
            supportGoldSpent_ = 0;
            onChanged();
            return this;
          }

          private int observerWardsPlaced_ ;
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public boolean hasObserverWardsPlaced() {
            return ((bitField1_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public int getObserverWardsPlaced() {
            return observerWardsPlaced_;
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public Builder setObserverWardsPlaced(int value) {
            bitField1_ |= 0x00000080;
            observerWardsPlaced_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 observer_wards_placed = 42;
           */
          public Builder clearObserverWardsPlaced() {
            bitField1_ = (bitField1_ & ~0x00000080);
            observerWardsPlaced_ = 0;
            onChanged();
            return this;
          }

          private int sentryWardsPlaced_ ;
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public boolean hasSentryWardsPlaced() {
            return ((bitField1_ & 0x00000100) == 0x00000100);
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public int getSentryWardsPlaced() {
            return sentryWardsPlaced_;
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public Builder setSentryWardsPlaced(int value) {
            bitField1_ |= 0x00000100;
            sentryWardsPlaced_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 sentry_wards_placed = 43;
           */
          public Builder clearSentryWardsPlaced() {
            bitField1_ = (bitField1_ & ~0x00000100);
            sentryWardsPlaced_ = 0;
            onChanged();
            return this;
          }

          private int wardsDewarded_ ;
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public boolean hasWardsDewarded() {
            return ((bitField1_ & 0x00000200) == 0x00000200);
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public int getWardsDewarded() {
            return wardsDewarded_;
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public Builder setWardsDewarded(int value) {
            bitField1_ |= 0x00000200;
            wardsDewarded_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 wards_dewarded = 44;
           */
          public Builder clearWardsDewarded() {
            bitField1_ = (bitField1_ & ~0x00000200);
            wardsDewarded_ = 0;
            onChanged();
            return this;
          }

          private float stunDuration_ ;
          /**
           * optional float stun_duration = 45;
           */
          public boolean hasStunDuration() {
            return ((bitField1_ & 0x00000400) == 0x00000400);
          }
          /**
           * optional float stun_duration = 45;
           */
          public float getStunDuration() {
            return stunDuration_;
          }
          /**
           * optional float stun_duration = 45;
           */
          public Builder setStunDuration(float value) {
            bitField1_ |= 0x00000400;
            stunDuration_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float stun_duration = 45;
           */
          public Builder clearStunDuration() {
            bitField1_ = (bitField1_ & ~0x00000400);
            stunDuration_ = 0F;
            onChanged();
            return this;
          }

          private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public boolean hasRankMmrBoostType() {
            return ((bitField1_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType getRankMmrBoostType() {
            return rankMmrBoostType_;
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public Builder setRankMmrBoostType(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType value) {
            if (value == null) {
              throw new NullPointerException();
            }
            bitField1_ |= 0x00000800;
            rankMmrBoostType_ = value;
            onChanged();
            return this;
          }
          /**
           * optional .EDOTAMMRBoostType rank_mmr_boost_type = 46 [default = k_EDOTAMMRBoostType_None];
           */
          public Builder clearRankMmrBoostType() {
            bitField1_ = (bitField1_ & ~0x00000800);
            rankMmrBoostType_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EDOTAMMRBoostType.k_EDOTAMMRBoostType_None;
            onChanged();
            return this;
          }

          private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress gauntletProgress_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder> gauntletProgressBuilder_;
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public boolean hasGauntletProgress() {
            return ((bitField1_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress getGauntletProgress() {
            if (gauntletProgressBuilder_ == null) {
              return gauntletProgress_;
            } else {
              return gauntletProgressBuilder_.getMessage();
            }
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public Builder setGauntletProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress value) {
            if (gauntletProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              gauntletProgress_ = value;
              onChanged();
            } else {
              gauntletProgressBuilder_.setMessage(value);
            }
            bitField1_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public Builder setGauntletProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder builderForValue) {
            if (gauntletProgressBuilder_ == null) {
              gauntletProgress_ = builderForValue.build();
              onChanged();
            } else {
              gauntletProgressBuilder_.setMessage(builderForValue.build());
            }
            bitField1_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public Builder mergeGauntletProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress value) {
            if (gauntletProgressBuilder_ == null) {
              if (((bitField1_ & 0x00001000) == 0x00001000) &&
                  gauntletProgress_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance()) {
                gauntletProgress_ =
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.newBuilder(gauntletProgress_).mergeFrom(value).buildPartial();
              } else {
                gauntletProgress_ = value;
              }
              onChanged();
            } else {
              gauntletProgressBuilder_.mergeFrom(value);
            }
            bitField1_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public Builder clearGauntletProgress() {
            if (gauntletProgressBuilder_ == null) {
              gauntletProgress_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.getDefaultInstance();
              onChanged();
            } else {
              gauntletProgressBuilder_.clear();
            }
            bitField1_ = (bitField1_ & ~0x00001000);
            return this;
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder getGauntletProgressBuilder() {
            bitField1_ |= 0x00001000;
            onChanged();
            return getGauntletProgressFieldBuilder().getBuilder();
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder getGauntletProgressOrBuilder() {
            if (gauntletProgressBuilder_ != null) {
              return gauntletProgressBuilder_.getMessageOrBuilder();
            } else {
              return gauntletProgress_;
            }
          }
          /**
           * optional .CDOTAMatchMetadata.Team.GauntletProgress gauntlet_progress = 47;
           */
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder> 
              getGauntletProgressFieldBuilder() {
            if (gauntletProgressBuilder_ == null) {
              gauntletProgressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.GauntletProgressOrBuilder>(
                      getGauntletProgress(),
                      getParentForChildren(),
                      isClean());
              gauntletProgress_ = null;
            }
            return gauntletProgressBuilder_;
          }

          private java.util.List contractProgress_ =
            java.util.Collections.emptyList();
          private void ensureContractProgressIsMutable() {
            if (!((bitField1_ & 0x00002000) == 0x00002000)) {
              contractProgress_ = new java.util.ArrayList(contractProgress_);
              bitField1_ |= 0x00002000;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder> contractProgressBuilder_;

          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public java.util.List getContractProgressList() {
            if (contractProgressBuilder_ == null) {
              return java.util.Collections.unmodifiableList(contractProgress_);
            } else {
              return contractProgressBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public int getContractProgressCount() {
            if (contractProgressBuilder_ == null) {
              return contractProgress_.size();
            } else {
              return contractProgressBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress getContractProgress(int index) {
            if (contractProgressBuilder_ == null) {
              return contractProgress_.get(index);
            } else {
              return contractProgressBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder setContractProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress value) {
            if (contractProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureContractProgressIsMutable();
              contractProgress_.set(index, value);
              onChanged();
            } else {
              contractProgressBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder setContractProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder builderForValue) {
            if (contractProgressBuilder_ == null) {
              ensureContractProgressIsMutable();
              contractProgress_.set(index, builderForValue.build());
              onChanged();
            } else {
              contractProgressBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder addContractProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress value) {
            if (contractProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureContractProgressIsMutable();
              contractProgress_.add(value);
              onChanged();
            } else {
              contractProgressBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder addContractProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress value) {
            if (contractProgressBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureContractProgressIsMutable();
              contractProgress_.add(index, value);
              onChanged();
            } else {
              contractProgressBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder addContractProgress(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder builderForValue) {
            if (contractProgressBuilder_ == null) {
              ensureContractProgressIsMutable();
              contractProgress_.add(builderForValue.build());
              onChanged();
            } else {
              contractProgressBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder addContractProgress(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder builderForValue) {
            if (contractProgressBuilder_ == null) {
              ensureContractProgressIsMutable();
              contractProgress_.add(index, builderForValue.build());
              onChanged();
            } else {
              contractProgressBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder addAllContractProgress(
              java.lang.Iterable values) {
            if (contractProgressBuilder_ == null) {
              ensureContractProgressIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, contractProgress_);
              onChanged();
            } else {
              contractProgressBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder clearContractProgress() {
            if (contractProgressBuilder_ == null) {
              contractProgress_ = java.util.Collections.emptyList();
              bitField1_ = (bitField1_ & ~0x00002000);
              onChanged();
            } else {
              contractProgressBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public Builder removeContractProgress(int index) {
            if (contractProgressBuilder_ == null) {
              ensureContractProgressIsMutable();
              contractProgress_.remove(index);
              onChanged();
            } else {
              contractProgressBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder getContractProgressBuilder(
              int index) {
            return getContractProgressFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder getContractProgressOrBuilder(
              int index) {
            if (contractProgressBuilder_ == null) {
              return contractProgress_.get(index);  } else {
              return contractProgressBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public java.util.List 
               getContractProgressOrBuilderList() {
            if (contractProgressBuilder_ != null) {
              return contractProgressBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(contractProgress_);
            }
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder addContractProgressBuilder() {
            return getContractProgressFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder addContractProgressBuilder(
              int index) {
            return getContractProgressFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchMetadata.Team.Player.ContractProgress contract_progress = 48;
           */
          public java.util.List 
               getContractProgressBuilderList() {
            return getContractProgressFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder> 
              getContractProgressFieldBuilder() {
            if (contractProgressBuilder_ == null) {
              contractProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.ContractProgressOrBuilder>(
                      contractProgress_,
                      ((bitField1_ & 0x00002000) == 0x00002000),
                      getParentForChildren(),
                      isClean());
              contractProgress_ = null;
            }
            return contractProgressBuilder_;
          }

          private java.util.List guildIds_ = java.util.Collections.emptyList();
          private void ensureGuildIdsIsMutable() {
            if (!((bitField1_ & 0x00004000) == 0x00004000)) {
              guildIds_ = new java.util.ArrayList(guildIds_);
              bitField1_ |= 0x00004000;
             }
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public java.util.List
              getGuildIdsList() {
            return java.util.Collections.unmodifiableList(guildIds_);
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public int getGuildIdsCount() {
            return guildIds_.size();
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public int getGuildIds(int index) {
            return guildIds_.get(index);
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public Builder setGuildIds(
              int index, int value) {
            ensureGuildIdsIsMutable();
            guildIds_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public Builder addGuildIds(int value) {
            ensureGuildIdsIsMutable();
            guildIds_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public Builder addAllGuildIds(
              java.lang.Iterable values) {
            ensureGuildIdsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, guildIds_);
            onChanged();
            return this;
          }
          /**
           * repeated uint32 guild_ids = 49;
           */
          public Builder clearGuildIds() {
            guildIds_ = java.util.Collections.emptyList();
            bitField1_ = (bitField1_ & ~0x00004000);
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team.Player)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team.Player)
      }

      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 PLAYERS_FIELD_NUMBER = 2;
      private java.util.List players_;
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public java.util.List getPlayersList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public java.util.List 
          getPlayersOrBuilderList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public int getPlayersCount() {
        return players_.size();
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index) {
        return players_.get(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        return players_.get(index);
      }

      public static final int GRAPH_EXPERIENCE_FIELD_NUMBER = 3;
      private java.util.List graphExperience_;
      /**
       * repeated float graph_experience = 3;
       */
      public java.util.List
          getGraphExperienceList() {
        return graphExperience_;
      }
      /**
       * repeated float graph_experience = 3;
       */
      public int getGraphExperienceCount() {
        return graphExperience_.size();
      }
      /**
       * repeated float graph_experience = 3;
       */
      public float getGraphExperience(int index) {
        return graphExperience_.get(index);
      }

      public static final int GRAPH_GOLD_EARNED_FIELD_NUMBER = 4;
      private java.util.List graphGoldEarned_;
      /**
       * repeated float graph_gold_earned = 4;
       */
      public java.util.List
          getGraphGoldEarnedList() {
        return graphGoldEarned_;
      }
      /**
       * repeated float graph_gold_earned = 4;
       */
      public int getGraphGoldEarnedCount() {
        return graphGoldEarned_.size();
      }
      /**
       * repeated float graph_gold_earned = 4;
       */
      public float getGraphGoldEarned(int index) {
        return graphGoldEarned_.get(index);
      }

      public static final int GRAPH_NET_WORTH_FIELD_NUMBER = 5;
      private java.util.List graphNetWorth_;
      /**
       * repeated float graph_net_worth = 5;
       */
      public java.util.List
          getGraphNetWorthList() {
        return graphNetWorth_;
      }
      /**
       * repeated float graph_net_worth = 5;
       */
      public int getGraphNetWorthCount() {
        return graphNetWorth_.size();
      }
      /**
       * repeated float graph_net_worth = 5;
       */
      public float getGraphNetWorth(int index) {
        return graphNetWorth_.get(index);
      }

      public static final int CM_FIRST_PICK_FIELD_NUMBER = 6;
      private boolean cmFirstPick_;
      /**
       * optional bool cm_first_pick = 6;
       */
      public boolean hasCmFirstPick() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional bool cm_first_pick = 6;
       */
      public boolean getCmFirstPick() {
        return cmFirstPick_;
      }

      public static final int CM_CAPTAIN_PLAYER_ID_FIELD_NUMBER = 7;
      private int cmCaptainPlayerId_;
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      public boolean hasCmCaptainPlayerId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 cm_captain_player_id = 7;
       */
      public int getCmCaptainPlayerId() {
        return cmCaptainPlayerId_;
      }

      public static final int CM_BANS_FIELD_NUMBER = 8;
      private java.util.List cmBans_;
      /**
       * repeated uint32 cm_bans = 8;
       */
      public java.util.List
          getCmBansList() {
        return cmBans_;
      }
      /**
       * repeated uint32 cm_bans = 8;
       */
      public int getCmBansCount() {
        return cmBans_.size();
      }
      /**
       * repeated uint32 cm_bans = 8;
       */
      public int getCmBans(int index) {
        return cmBans_.get(index);
      }

      public static final int CM_PICKS_FIELD_NUMBER = 9;
      private java.util.List cmPicks_;
      /**
       * repeated uint32 cm_picks = 9;
       */
      public java.util.List
          getCmPicksList() {
        return cmPicks_;
      }
      /**
       * repeated uint32 cm_picks = 9;
       */
      public int getCmPicksCount() {
        return cmPicks_.size();
      }
      /**
       * repeated uint32 cm_picks = 9;
       */
      public int getCmPicks(int index) {
        return cmPicks_.get(index);
      }

      public static final int CM_PENALTY_FIELD_NUMBER = 10;
      private int cmPenalty_;
      /**
       * optional uint32 cm_penalty = 10;
       */
      public boolean hasCmPenalty() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 cm_penalty = 10;
       */
      public int getCmPenalty() {
        return cmPenalty_;
      }

      private void initFields() {
        dotaTeam_ = 0;
        players_ = java.util.Collections.emptyList();
        graphExperience_ = java.util.Collections.emptyList();
        graphGoldEarned_ = java.util.Collections.emptyList();
        graphNetWorth_ = java.util.Collections.emptyList();
        cmFirstPick_ = false;
        cmCaptainPlayerId_ = 0;
        cmBans_ = java.util.Collections.emptyList();
        cmPicks_ = java.util.Collections.emptyList();
        cmPenalty_ = 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, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          output.writeMessage(2, players_.get(i));
        }
        for (int i = 0; i < graphExperience_.size(); i++) {
          output.writeFloat(3, graphExperience_.get(i));
        }
        for (int i = 0; i < graphGoldEarned_.size(); i++) {
          output.writeFloat(4, graphGoldEarned_.get(i));
        }
        for (int i = 0; i < graphNetWorth_.size(); i++) {
          output.writeFloat(5, graphNetWorth_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(6, cmFirstPick_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(7, cmCaptainPlayerId_);
        }
        for (int i = 0; i < cmBans_.size(); i++) {
          output.writeUInt32(8, cmBans_.get(i));
        }
        for (int i = 0; i < cmPicks_.size(); i++) {
          output.writeUInt32(9, cmPicks_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(10, cmPenalty_);
        }
        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_);
        }
        for (int i = 0; i < players_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, players_.get(i));
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphExperienceList().size();
          size += dataSize;
          size += 1 * getGraphExperienceList().size();
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphGoldEarnedList().size();
          size += dataSize;
          size += 1 * getGraphGoldEarnedList().size();
        }
        {
          int dataSize = 0;
          dataSize = 4 * getGraphNetWorthList().size();
          size += dataSize;
          size += 1 * getGraphNetWorthList().size();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, cmFirstPick_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, cmCaptainPlayerId_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < cmBans_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(cmBans_.get(i));
          }
          size += dataSize;
          size += 1 * getCmBansList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < cmPicks_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(cmPicks_.get(i));
          }
          size += dataSize;
          size += 1 * getCmPicksList().size();
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(10, cmPenalty_);
        }
        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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team 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 CDOTAMatchMetadata.Team}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.Team)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          dotaTeam_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            playersBuilder_.clear();
          }
          graphExperience_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          graphGoldEarned_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          graphNetWorth_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          cmFirstPick_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          cmCaptainPlayerId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          cmBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          cmPicks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          cmPenalty_ = 0;
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_Team_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.dotaTeam_ = dotaTeam_;
          if (playersBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              players_ = java.util.Collections.unmodifiableList(players_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.players_ = players_;
          } else {
            result.players_ = playersBuilder_.build();
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = java.util.Collections.unmodifiableList(graphExperience_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.graphExperience_ = graphExperience_;
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = java.util.Collections.unmodifiableList(graphGoldEarned_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.graphGoldEarned_ = graphGoldEarned_;
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = java.util.Collections.unmodifiableList(graphNetWorth_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.graphNetWorth_ = graphNetWorth_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000002;
          }
          result.cmFirstPick_ = cmFirstPick_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000004;
          }
          result.cmCaptainPlayerId_ = cmCaptainPlayerId_;
          if (((bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = java.util.Collections.unmodifiableList(cmBans_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.cmBans_ = cmBans_;
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = java.util.Collections.unmodifiableList(cmPicks_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.cmPicks_ = cmPicks_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000008;
          }
          result.cmPenalty_ = cmPenalty_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance()) return this;
          if (other.hasDotaTeam()) {
            setDotaTeam(other.getDotaTeam());
          }
          if (playersBuilder_ == null) {
            if (!other.players_.isEmpty()) {
              if (players_.isEmpty()) {
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensurePlayersIsMutable();
                players_.addAll(other.players_);
              }
              onChanged();
            }
          } else {
            if (!other.players_.isEmpty()) {
              if (playersBuilder_.isEmpty()) {
                playersBuilder_.dispose();
                playersBuilder_ = null;
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
                playersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPlayersFieldBuilder() : null;
              } else {
                playersBuilder_.addAllMessages(other.players_);
              }
            }
          }
          if (!other.graphExperience_.isEmpty()) {
            if (graphExperience_.isEmpty()) {
              graphExperience_ = other.graphExperience_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureGraphExperienceIsMutable();
              graphExperience_.addAll(other.graphExperience_);
            }
            onChanged();
          }
          if (!other.graphGoldEarned_.isEmpty()) {
            if (graphGoldEarned_.isEmpty()) {
              graphGoldEarned_ = other.graphGoldEarned_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureGraphGoldEarnedIsMutable();
              graphGoldEarned_.addAll(other.graphGoldEarned_);
            }
            onChanged();
          }
          if (!other.graphNetWorth_.isEmpty()) {
            if (graphNetWorth_.isEmpty()) {
              graphNetWorth_ = other.graphNetWorth_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureGraphNetWorthIsMutable();
              graphNetWorth_.addAll(other.graphNetWorth_);
            }
            onChanged();
          }
          if (other.hasCmFirstPick()) {
            setCmFirstPick(other.getCmFirstPick());
          }
          if (other.hasCmCaptainPlayerId()) {
            setCmCaptainPlayerId(other.getCmCaptainPlayerId());
          }
          if (!other.cmBans_.isEmpty()) {
            if (cmBans_.isEmpty()) {
              cmBans_ = other.cmBans_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureCmBansIsMutable();
              cmBans_.addAll(other.cmBans_);
            }
            onChanged();
          }
          if (!other.cmPicks_.isEmpty()) {
            if (cmPicks_.isEmpty()) {
              cmPicks_ = other.cmPicks_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureCmPicksIsMutable();
              cmPicks_.addAll(other.cmPicks_);
            }
            onChanged();
          }
          if (other.hasCmPenalty()) {
            setCmPenalty(other.getCmPenalty());
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team) 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 java.util.List players_ =
          java.util.Collections.emptyList();
        private void ensurePlayersIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = new java.util.ArrayList(players_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder> playersBuilder_;

        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List getPlayersList() {
          if (playersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(players_);
          } else {
            return playersBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public int getPlayersCount() {
          if (playersBuilder_ == null) {
            return players_.size();
          } else {
            return playersBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player getPlayers(int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);
          } else {
            return playersBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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 .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.set(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(value);
            onChanged();
          } else {
            playersBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.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 .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        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 .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder clearPlayers() {
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            playersBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public Builder removePlayers(int index) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.remove(index);
            onChanged();
          } else {
            playersBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder getPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
            int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);  } else {
            return playersBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersOrBuilderList() {
          if (playersBuilder_ != null) {
            return playersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(players_);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder addPlayersBuilder() {
          return getPlayersFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder addPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersBuilderList() {
          return getPlayersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder> 
            getPlayersFieldBuilder() {
          if (playersBuilder_ == null) {
            playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.PlayerOrBuilder>(
                    players_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            players_ = null;
          }
          return playersBuilder_;
        }

        private java.util.List graphExperience_ = java.util.Collections.emptyList();
        private void ensureGraphExperienceIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            graphExperience_ = new java.util.ArrayList(graphExperience_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * repeated float graph_experience = 3;
         */
        public java.util.List
            getGraphExperienceList() {
          return java.util.Collections.unmodifiableList(graphExperience_);
        }
        /**
         * repeated float graph_experience = 3;
         */
        public int getGraphExperienceCount() {
          return graphExperience_.size();
        }
        /**
         * repeated float graph_experience = 3;
         */
        public float getGraphExperience(int index) {
          return graphExperience_.get(index);
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder setGraphExperience(
            int index, float value) {
          ensureGraphExperienceIsMutable();
          graphExperience_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder addGraphExperience(float value) {
          ensureGraphExperienceIsMutable();
          graphExperience_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder addAllGraphExperience(
            java.lang.Iterable values) {
          ensureGraphExperienceIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphExperience_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_experience = 3;
         */
        public Builder clearGraphExperience() {
          graphExperience_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }

        private java.util.List graphGoldEarned_ = java.util.Collections.emptyList();
        private void ensureGraphGoldEarnedIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            graphGoldEarned_ = new java.util.ArrayList(graphGoldEarned_);
            bitField0_ |= 0x00000008;
           }
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public java.util.List
            getGraphGoldEarnedList() {
          return java.util.Collections.unmodifiableList(graphGoldEarned_);
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public int getGraphGoldEarnedCount() {
          return graphGoldEarned_.size();
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public float getGraphGoldEarned(int index) {
          return graphGoldEarned_.get(index);
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder setGraphGoldEarned(
            int index, float value) {
          ensureGraphGoldEarnedIsMutable();
          graphGoldEarned_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder addGraphGoldEarned(float value) {
          ensureGraphGoldEarnedIsMutable();
          graphGoldEarned_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder addAllGraphGoldEarned(
            java.lang.Iterable values) {
          ensureGraphGoldEarnedIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphGoldEarned_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_gold_earned = 4;
         */
        public Builder clearGraphGoldEarned() {
          graphGoldEarned_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }

        private java.util.List graphNetWorth_ = java.util.Collections.emptyList();
        private void ensureGraphNetWorthIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            graphNetWorth_ = new java.util.ArrayList(graphNetWorth_);
            bitField0_ |= 0x00000010;
           }
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public java.util.List
            getGraphNetWorthList() {
          return java.util.Collections.unmodifiableList(graphNetWorth_);
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public int getGraphNetWorthCount() {
          return graphNetWorth_.size();
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public float getGraphNetWorth(int index) {
          return graphNetWorth_.get(index);
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder setGraphNetWorth(
            int index, float value) {
          ensureGraphNetWorthIsMutable();
          graphNetWorth_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder addGraphNetWorth(float value) {
          ensureGraphNetWorthIsMutable();
          graphNetWorth_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder addAllGraphNetWorth(
            java.lang.Iterable values) {
          ensureGraphNetWorthIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, graphNetWorth_);
          onChanged();
          return this;
        }
        /**
         * repeated float graph_net_worth = 5;
         */
        public Builder clearGraphNetWorth() {
          graphNetWorth_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }

        private boolean cmFirstPick_ ;
        /**
         * optional bool cm_first_pick = 6;
         */
        public boolean hasCmFirstPick() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public boolean getCmFirstPick() {
          return cmFirstPick_;
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public Builder setCmFirstPick(boolean value) {
          bitField0_ |= 0x00000020;
          cmFirstPick_ = value;
          onChanged();
          return this;
        }
        /**
         * optional bool cm_first_pick = 6;
         */
        public Builder clearCmFirstPick() {
          bitField0_ = (bitField0_ & ~0x00000020);
          cmFirstPick_ = false;
          onChanged();
          return this;
        }

        private int cmCaptainPlayerId_ ;
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public boolean hasCmCaptainPlayerId() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public int getCmCaptainPlayerId() {
          return cmCaptainPlayerId_;
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public Builder setCmCaptainPlayerId(int value) {
          bitField0_ |= 0x00000040;
          cmCaptainPlayerId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 cm_captain_player_id = 7;
         */
        public Builder clearCmCaptainPlayerId() {
          bitField0_ = (bitField0_ & ~0x00000040);
          cmCaptainPlayerId_ = 0;
          onChanged();
          return this;
        }

        private java.util.List cmBans_ = java.util.Collections.emptyList();
        private void ensureCmBansIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            cmBans_ = new java.util.ArrayList(cmBans_);
            bitField0_ |= 0x00000080;
           }
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public java.util.List
            getCmBansList() {
          return java.util.Collections.unmodifiableList(cmBans_);
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public int getCmBansCount() {
          return cmBans_.size();
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public int getCmBans(int index) {
          return cmBans_.get(index);
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder setCmBans(
            int index, int value) {
          ensureCmBansIsMutable();
          cmBans_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder addCmBans(int value) {
          ensureCmBansIsMutable();
          cmBans_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder addAllCmBans(
            java.lang.Iterable values) {
          ensureCmBansIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, cmBans_);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_bans = 8;
         */
        public Builder clearCmBans() {
          cmBans_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
          return this;
        }

        private java.util.List cmPicks_ = java.util.Collections.emptyList();
        private void ensureCmPicksIsMutable() {
          if (!((bitField0_ & 0x00000100) == 0x00000100)) {
            cmPicks_ = new java.util.ArrayList(cmPicks_);
            bitField0_ |= 0x00000100;
           }
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public java.util.List
            getCmPicksList() {
          return java.util.Collections.unmodifiableList(cmPicks_);
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public int getCmPicksCount() {
          return cmPicks_.size();
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public int getCmPicks(int index) {
          return cmPicks_.get(index);
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder setCmPicks(
            int index, int value) {
          ensureCmPicksIsMutable();
          cmPicks_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder addCmPicks(int value) {
          ensureCmPicksIsMutable();
          cmPicks_.add(value);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder addAllCmPicks(
            java.lang.Iterable values) {
          ensureCmPicksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, cmPicks_);
          onChanged();
          return this;
        }
        /**
         * repeated uint32 cm_picks = 9;
         */
        public Builder clearCmPicks() {
          cmPicks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
          return this;
        }

        private int cmPenalty_ ;
        /**
         * optional uint32 cm_penalty = 10;
         */
        public boolean hasCmPenalty() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public int getCmPenalty() {
          return cmPenalty_;
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public Builder setCmPenalty(int value) {
          bitField0_ |= 0x00000200;
          cmPenalty_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 cm_penalty = 10;
         */
        public Builder clearCmPenalty() {
          bitField0_ = (bitField0_ & ~0x00000200);
          cmPenalty_ = 0;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.Team)
      }

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

      // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.Team)
    }

    public interface GuildChallengeProgressOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.GuildChallengeProgress)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 guild_id = 1;
       */
      boolean hasGuildId();
      /**
       * optional uint32 guild_id = 1;
       */
      int getGuildId();

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

      /**
       * optional uint32 challenge_instance_id = 3;
       */
      boolean hasChallengeInstanceId();
      /**
       * optional uint32 challenge_instance_id = 3;
       */
      int getChallengeInstanceId();

      /**
       * optional uint32 challenge_parameter = 4;
       */
      boolean hasChallengeParameter();
      /**
       * optional uint32 challenge_parameter = 4;
       */
      int getChallengeParameter();

      /**
       * optional uint32 challenge_timestamp = 5;
       */
      boolean hasChallengeTimestamp();
      /**
       * optional uint32 challenge_timestamp = 5;
       */
      int getChallengeTimestamp();

      /**
       * optional uint32 challenge_progress_at_start = 6;
       */
      boolean hasChallengeProgressAtStart();
      /**
       * optional uint32 challenge_progress_at_start = 6;
       */
      int getChallengeProgressAtStart();

      /**
       * optional uint32 challenge_progress_accumulated = 7;
       */
      boolean hasChallengeProgressAccumulated();
      /**
       * optional uint32 challenge_progress_accumulated = 7;
       */
      int getChallengeProgressAccumulated();

      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      java.util.List 
          getIndividualProgressList();
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress getIndividualProgress(int index);
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      int getIndividualProgressCount();
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      java.util.List 
          getIndividualProgressOrBuilderList();
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder getIndividualProgressOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code CDOTAMatchMetadata.GuildChallengeProgress}
     */
    public static final class GuildChallengeProgress extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.GuildChallengeProgress)
        GuildChallengeProgressOrBuilder {
      // Use GuildChallengeProgress.newBuilder() to construct.
      private GuildChallengeProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private GuildChallengeProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public GuildChallengeProgress getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private GuildChallengeProgress(
          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;
                guildId_ = input.readUInt32();
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EEvent value = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EEvent.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  eventId_ = value;
                }
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                challengeInstanceId_ = input.readUInt32();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                challengeParameter_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                challengeTimestamp_ = input.readUInt32();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                challengeProgressAtStart_ = input.readUInt32();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                challengeProgressAccumulated_ = input.readUInt32();
                break;
              }
              case 66: {
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                  individualProgress_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000080;
                }
                individualProgress_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.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_ & 0x00000080) == 0x00000080)) {
            individualProgress_ = java.util.Collections.unmodifiableList(individualProgress_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder.class);
      }

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

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

      public interface IndividualProgressOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)
          com.google.protobuf.MessageOrBuilder {

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

        /**
         * optional uint32 progress = 2;
         */
        boolean hasProgress();
        /**
         * optional uint32 progress = 2;
         */
        int getProgress();
      }
      /**
       * Protobuf type {@code CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress}
       */
      public static final class IndividualProgress extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)
          IndividualProgressOrBuilder {
        // Use IndividualProgress.newBuilder() to construct.
        private IndividualProgress(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private IndividualProgress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public IndividualProgress getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private IndividualProgress(
            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 16: {
                  bitField0_ |= 0x00000002;
                  progress_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder.class);
        }

        public static com.google.protobuf.Parser PARSER =
            new com.google.protobuf.AbstractParser() {
          public IndividualProgress parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new IndividualProgress(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 PROGRESS_FIELD_NUMBER = 2;
        private int progress_;
        /**
         * optional uint32 progress = 2;
         */
        public boolean hasProgress() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 progress = 2;
         */
        public int getProgress() {
          return progress_;
        }

        private void initFields() {
          accountId_ = 0;
          progress_ = 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, progress_);
          }
          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, progress_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress 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 CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.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);
            progress_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress(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.progress_ = progress_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.getDefaultInstance()) return this;
            if (other.hasAccountId()) {
              setAccountId(other.getAccountId());
            }
            if (other.hasProgress()) {
              setProgress(other.getProgress());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress) 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 int progress_ ;
          /**
           * optional uint32 progress = 2;
           */
          public boolean hasProgress() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 progress = 2;
           */
          public int getProgress() {
            return progress_;
          }
          /**
           * optional uint32 progress = 2;
           */
          public Builder setProgress(int value) {
            bitField0_ |= 0x00000002;
            progress_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 progress = 2;
           */
          public Builder clearProgress() {
            bitField0_ = (bitField0_ & ~0x00000002);
            progress_ = 0;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress)
      }

      private int bitField0_;
      public static final int GUILD_ID_FIELD_NUMBER = 1;
      private int guildId_;
      /**
       * optional uint32 guild_id = 1;
       */
      public boolean hasGuildId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional uint32 guild_id = 1;
       */
      public int getGuildId() {
        return guildId_;
      }

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

      public static final int CHALLENGE_INSTANCE_ID_FIELD_NUMBER = 3;
      private int challengeInstanceId_;
      /**
       * optional uint32 challenge_instance_id = 3;
       */
      public boolean hasChallengeInstanceId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional uint32 challenge_instance_id = 3;
       */
      public int getChallengeInstanceId() {
        return challengeInstanceId_;
      }

      public static final int CHALLENGE_PARAMETER_FIELD_NUMBER = 4;
      private int challengeParameter_;
      /**
       * optional uint32 challenge_parameter = 4;
       */
      public boolean hasChallengeParameter() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional uint32 challenge_parameter = 4;
       */
      public int getChallengeParameter() {
        return challengeParameter_;
      }

      public static final int CHALLENGE_TIMESTAMP_FIELD_NUMBER = 5;
      private int challengeTimestamp_;
      /**
       * optional uint32 challenge_timestamp = 5;
       */
      public boolean hasChallengeTimestamp() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional uint32 challenge_timestamp = 5;
       */
      public int getChallengeTimestamp() {
        return challengeTimestamp_;
      }

      public static final int CHALLENGE_PROGRESS_AT_START_FIELD_NUMBER = 6;
      private int challengeProgressAtStart_;
      /**
       * optional uint32 challenge_progress_at_start = 6;
       */
      public boolean hasChallengeProgressAtStart() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 challenge_progress_at_start = 6;
       */
      public int getChallengeProgressAtStart() {
        return challengeProgressAtStart_;
      }

      public static final int CHALLENGE_PROGRESS_ACCUMULATED_FIELD_NUMBER = 7;
      private int challengeProgressAccumulated_;
      /**
       * optional uint32 challenge_progress_accumulated = 7;
       */
      public boolean hasChallengeProgressAccumulated() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * optional uint32 challenge_progress_accumulated = 7;
       */
      public int getChallengeProgressAccumulated() {
        return challengeProgressAccumulated_;
      }

      public static final int INDIVIDUAL_PROGRESS_FIELD_NUMBER = 8;
      private java.util.List individualProgress_;
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      public java.util.List getIndividualProgressList() {
        return individualProgress_;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      public java.util.List 
          getIndividualProgressOrBuilderList() {
        return individualProgress_;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      public int getIndividualProgressCount() {
        return individualProgress_.size();
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress getIndividualProgress(int index) {
        return individualProgress_.get(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder getIndividualProgressOrBuilder(
          int index) {
        return individualProgress_.get(index);
      }

      private void initFields() {
        guildId_ = 0;
        eventId_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EEvent.EVENT_ID_NONE;
        challengeInstanceId_ = 0;
        challengeParameter_ = 0;
        challengeTimestamp_ = 0;
        challengeProgressAtStart_ = 0;
        challengeProgressAccumulated_ = 0;
        individualProgress_ = 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(1, guildId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeEnum(2, eventId_.getNumber());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, challengeInstanceId_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, challengeParameter_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(5, challengeTimestamp_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(6, challengeProgressAtStart_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeUInt32(7, challengeProgressAccumulated_);
        }
        for (int i = 0; i < individualProgress_.size(); i++) {
          output.writeMessage(8, individualProgress_.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(1, guildId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, eventId_.getNumber());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, challengeInstanceId_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, challengeParameter_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, challengeTimestamp_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, challengeProgressAtStart_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, challengeProgressAccumulated_);
        }
        for (int i = 0; i < individualProgress_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, individualProgress_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress 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 CDOTAMatchMetadata.GuildChallengeProgress}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata.GuildChallengeProgress)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

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

        public Builder clear() {
          super.clear();
          guildId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          eventId_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.EEvent.EVENT_ID_NONE;
          bitField0_ = (bitField0_ & ~0x00000002);
          challengeInstanceId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          challengeParameter_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          challengeTimestamp_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          challengeProgressAtStart_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          challengeProgressAccumulated_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          if (individualProgressBuilder_ == null) {
            individualProgress_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            individualProgressBuilder_.clear();
          }
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.guildId_ = guildId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.eventId_ = eventId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.challengeInstanceId_ = challengeInstanceId_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.challengeParameter_ = challengeParameter_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.challengeTimestamp_ = challengeTimestamp_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.challengeProgressAtStart_ = challengeProgressAtStart_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.challengeProgressAccumulated_ = challengeProgressAccumulated_;
          if (individualProgressBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              individualProgress_ = java.util.Collections.unmodifiableList(individualProgress_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.individualProgress_ = individualProgress_;
          } else {
            result.individualProgress_ = individualProgressBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.getDefaultInstance()) return this;
          if (other.hasGuildId()) {
            setGuildId(other.getGuildId());
          }
          if (other.hasEventId()) {
            setEventId(other.getEventId());
          }
          if (other.hasChallengeInstanceId()) {
            setChallengeInstanceId(other.getChallengeInstanceId());
          }
          if (other.hasChallengeParameter()) {
            setChallengeParameter(other.getChallengeParameter());
          }
          if (other.hasChallengeTimestamp()) {
            setChallengeTimestamp(other.getChallengeTimestamp());
          }
          if (other.hasChallengeProgressAtStart()) {
            setChallengeProgressAtStart(other.getChallengeProgressAtStart());
          }
          if (other.hasChallengeProgressAccumulated()) {
            setChallengeProgressAccumulated(other.getChallengeProgressAccumulated());
          }
          if (individualProgressBuilder_ == null) {
            if (!other.individualProgress_.isEmpty()) {
              if (individualProgress_.isEmpty()) {
                individualProgress_ = other.individualProgress_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureIndividualProgressIsMutable();
                individualProgress_.addAll(other.individualProgress_);
              }
              onChanged();
            }
          } else {
            if (!other.individualProgress_.isEmpty()) {
              if (individualProgressBuilder_.isEmpty()) {
                individualProgressBuilder_.dispose();
                individualProgressBuilder_ = null;
                individualProgress_ = other.individualProgress_;
                bitField0_ = (bitField0_ & ~0x00000080);
                individualProgressBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getIndividualProgressFieldBuilder() : null;
              } else {
                individualProgressBuilder_.addAllMessages(other.individualProgress_);
              }
            }
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int guildId_ ;
        /**
         * optional uint32 guild_id = 1;
         */
        public boolean hasGuildId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 guild_id = 1;
         */
        public int getGuildId() {
          return guildId_;
        }
        /**
         * optional uint32 guild_id = 1;
         */
        public Builder setGuildId(int value) {
          bitField0_ |= 0x00000001;
          guildId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 guild_id = 1;
         */
        public Builder clearGuildId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          guildId_ = 0;
          onChanged();
          return this;
        }

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

        private int challengeInstanceId_ ;
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public boolean hasChallengeInstanceId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public int getChallengeInstanceId() {
          return challengeInstanceId_;
        }
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public Builder setChallengeInstanceId(int value) {
          bitField0_ |= 0x00000004;
          challengeInstanceId_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 challenge_instance_id = 3;
         */
        public Builder clearChallengeInstanceId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          challengeInstanceId_ = 0;
          onChanged();
          return this;
        }

        private int challengeParameter_ ;
        /**
         * optional uint32 challenge_parameter = 4;
         */
        public boolean hasChallengeParameter() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional uint32 challenge_parameter = 4;
         */
        public int getChallengeParameter() {
          return challengeParameter_;
        }
        /**
         * optional uint32 challenge_parameter = 4;
         */
        public Builder setChallengeParameter(int value) {
          bitField0_ |= 0x00000008;
          challengeParameter_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 challenge_parameter = 4;
         */
        public Builder clearChallengeParameter() {
          bitField0_ = (bitField0_ & ~0x00000008);
          challengeParameter_ = 0;
          onChanged();
          return this;
        }

        private int challengeTimestamp_ ;
        /**
         * optional uint32 challenge_timestamp = 5;
         */
        public boolean hasChallengeTimestamp() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional uint32 challenge_timestamp = 5;
         */
        public int getChallengeTimestamp() {
          return challengeTimestamp_;
        }
        /**
         * optional uint32 challenge_timestamp = 5;
         */
        public Builder setChallengeTimestamp(int value) {
          bitField0_ |= 0x00000010;
          challengeTimestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 challenge_timestamp = 5;
         */
        public Builder clearChallengeTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000010);
          challengeTimestamp_ = 0;
          onChanged();
          return this;
        }

        private int challengeProgressAtStart_ ;
        /**
         * optional uint32 challenge_progress_at_start = 6;
         */
        public boolean hasChallengeProgressAtStart() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * optional uint32 challenge_progress_at_start = 6;
         */
        public int getChallengeProgressAtStart() {
          return challengeProgressAtStart_;
        }
        /**
         * optional uint32 challenge_progress_at_start = 6;
         */
        public Builder setChallengeProgressAtStart(int value) {
          bitField0_ |= 0x00000020;
          challengeProgressAtStart_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 challenge_progress_at_start = 6;
         */
        public Builder clearChallengeProgressAtStart() {
          bitField0_ = (bitField0_ & ~0x00000020);
          challengeProgressAtStart_ = 0;
          onChanged();
          return this;
        }

        private int challengeProgressAccumulated_ ;
        /**
         * optional uint32 challenge_progress_accumulated = 7;
         */
        public boolean hasChallengeProgressAccumulated() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * optional uint32 challenge_progress_accumulated = 7;
         */
        public int getChallengeProgressAccumulated() {
          return challengeProgressAccumulated_;
        }
        /**
         * optional uint32 challenge_progress_accumulated = 7;
         */
        public Builder setChallengeProgressAccumulated(int value) {
          bitField0_ |= 0x00000040;
          challengeProgressAccumulated_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 challenge_progress_accumulated = 7;
         */
        public Builder clearChallengeProgressAccumulated() {
          bitField0_ = (bitField0_ & ~0x00000040);
          challengeProgressAccumulated_ = 0;
          onChanged();
          return this;
        }

        private java.util.List individualProgress_ =
          java.util.Collections.emptyList();
        private void ensureIndividualProgressIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            individualProgress_ = new java.util.ArrayList(individualProgress_);
            bitField0_ |= 0x00000080;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder> individualProgressBuilder_;

        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public java.util.List getIndividualProgressList() {
          if (individualProgressBuilder_ == null) {
            return java.util.Collections.unmodifiableList(individualProgress_);
          } else {
            return individualProgressBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public int getIndividualProgressCount() {
          if (individualProgressBuilder_ == null) {
            return individualProgress_.size();
          } else {
            return individualProgressBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress getIndividualProgress(int index) {
          if (individualProgressBuilder_ == null) {
            return individualProgress_.get(index);
          } else {
            return individualProgressBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder setIndividualProgress(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress value) {
          if (individualProgressBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndividualProgressIsMutable();
            individualProgress_.set(index, value);
            onChanged();
          } else {
            individualProgressBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder setIndividualProgress(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder builderForValue) {
          if (individualProgressBuilder_ == null) {
            ensureIndividualProgressIsMutable();
            individualProgress_.set(index, builderForValue.build());
            onChanged();
          } else {
            individualProgressBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder addIndividualProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress value) {
          if (individualProgressBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndividualProgressIsMutable();
            individualProgress_.add(value);
            onChanged();
          } else {
            individualProgressBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder addIndividualProgress(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress value) {
          if (individualProgressBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndividualProgressIsMutable();
            individualProgress_.add(index, value);
            onChanged();
          } else {
            individualProgressBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder addIndividualProgress(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder builderForValue) {
          if (individualProgressBuilder_ == null) {
            ensureIndividualProgressIsMutable();
            individualProgress_.add(builderForValue.build());
            onChanged();
          } else {
            individualProgressBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder addIndividualProgress(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder builderForValue) {
          if (individualProgressBuilder_ == null) {
            ensureIndividualProgressIsMutable();
            individualProgress_.add(index, builderForValue.build());
            onChanged();
          } else {
            individualProgressBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder addAllIndividualProgress(
            java.lang.Iterable values) {
          if (individualProgressBuilder_ == null) {
            ensureIndividualProgressIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, individualProgress_);
            onChanged();
          } else {
            individualProgressBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder clearIndividualProgress() {
          if (individualProgressBuilder_ == null) {
            individualProgress_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
          } else {
            individualProgressBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public Builder removeIndividualProgress(int index) {
          if (individualProgressBuilder_ == null) {
            ensureIndividualProgressIsMutable();
            individualProgress_.remove(index);
            onChanged();
          } else {
            individualProgressBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder getIndividualProgressBuilder(
            int index) {
          return getIndividualProgressFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder getIndividualProgressOrBuilder(
            int index) {
          if (individualProgressBuilder_ == null) {
            return individualProgress_.get(index);  } else {
            return individualProgressBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public java.util.List 
             getIndividualProgressOrBuilderList() {
          if (individualProgressBuilder_ != null) {
            return individualProgressBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(individualProgress_);
          }
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder addIndividualProgressBuilder() {
          return getIndividualProgressFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder addIndividualProgressBuilder(
            int index) {
          return getIndividualProgressFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress individual_progress = 8;
         */
        public java.util.List 
             getIndividualProgressBuilderList() {
          return getIndividualProgressFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder> 
            getIndividualProgressFieldBuilder() {
          if (individualProgressBuilder_ == null) {
            individualProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.IndividualProgressOrBuilder>(
                    individualProgress_,
                    ((bitField0_ & 0x00000080) == 0x00000080),
                    getParentForChildren(),
                    isClean());
            individualProgress_ = null;
          }
          return individualProgressBuilder_;
        }

        // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata.GuildChallengeProgress)
      }

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

      // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata.GuildChallengeProgress)
    }

    private int bitField0_;
    public static final int TEAMS_FIELD_NUMBER = 1;
    private java.util.List teams_;
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public java.util.List getTeamsList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public java.util.List 
        getTeamsOrBuilderList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public int getTeamsCount() {
      return teams_.size();
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index) {
      return teams_.get(index);
    }
    /**
     * repeated .CDOTAMatchMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index) {
      return teams_.get(index);
    }

    public static final int ITEM_REWARDS_FIELD_NUMBER = 2;
    private java.util.List itemRewards_;
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public java.util.List getItemRewardsList() {
      return itemRewards_;
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public java.util.List 
        getItemRewardsOrBuilderList() {
      return itemRewards_;
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public int getItemRewardsCount() {
      return itemRewards_.size();
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails getItemRewards(int index) {
      return itemRewards_.get(index);
    }
    /**
     * repeated .CLobbyTimedRewardDetails item_rewards = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
        int index) {
      return itemRewards_.get(index);
    }

    public static final int LOBBY_ID_FIELD_NUMBER = 3;
    private long lobbyId_;
    /**
     * optional fixed64 lobby_id = 3;
     */
    public boolean hasLobbyId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional fixed64 lobby_id = 3;
     */
    public long getLobbyId() {
      return lobbyId_;
    }

    public static final int REPORT_UNTIL_TIME_FIELD_NUMBER = 4;
    private long reportUntilTime_;
    /**
     * optional fixed64 report_until_time = 4;
     */
    public boolean hasReportUntilTime() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional fixed64 report_until_time = 4;
     */
    public long getReportUntilTime() {
      return reportUntilTime_;
    }

    public static final int EVENT_GAME_CUSTOM_TABLE_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString eventGameCustomTable_;
    /**
     * optional bytes event_game_custom_table = 5;
     */
    public boolean hasEventGameCustomTable() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * optional bytes event_game_custom_table = 5;
     */
    public com.google.protobuf.ByteString getEventGameCustomTable() {
      return eventGameCustomTable_;
    }

    public static final int PRIMARY_EVENT_ID_FIELD_NUMBER = 6;
    private int primaryEventId_;
    /**
     * optional uint32 primary_event_id = 6;
     */
    public boolean hasPrimaryEventId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * optional uint32 primary_event_id = 6;
     */
    public int getPrimaryEventId() {
      return primaryEventId_;
    }

    public static final int MATCH_TIPS_FIELD_NUMBER = 7;
    private java.util.List matchTips_;
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public java.util.List getMatchTipsList() {
      return matchTips_;
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public java.util.List 
        getMatchTipsOrBuilderList() {
      return matchTips_;
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public int getMatchTipsCount() {
      return matchTips_.size();
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index) {
      return matchTips_.get(index);
    }
    /**
     * repeated .CMsgMatchTips match_tips = 7;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
        int index) {
      return matchTips_.get(index);
    }

    public static final int MATCHMAKING_STATS_FIELD_NUMBER = 8;
    private skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats matchmakingStats_;
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public boolean hasMatchmakingStats() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats getMatchmakingStats() {
      return matchmakingStats_;
    }
    /**
     * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder() {
      return matchmakingStats_;
    }

    public static final int MVP_DATA_FIELD_NUMBER = 9;
    private skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData mvpData_;
    /**
     * optional .CMvpData mvp_data = 9;
     */
    public boolean hasMvpData() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * optional .CMvpData mvp_data = 9;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData getMvpData() {
      return mvpData_;
    }
    /**
     * optional .CMvpData mvp_data = 9;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder getMvpDataOrBuilder() {
      return mvpData_;
    }

    public static final int GUILD_CHALLENGE_PROGRESS_FIELD_NUMBER = 10;
    private java.util.List guildChallengeProgress_;
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    public java.util.List getGuildChallengeProgressList() {
      return guildChallengeProgress_;
    }
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    public java.util.List 
        getGuildChallengeProgressOrBuilderList() {
      return guildChallengeProgress_;
    }
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    public int getGuildChallengeProgressCount() {
      return guildChallengeProgress_.size();
    }
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress getGuildChallengeProgress(int index) {
      return guildChallengeProgress_.get(index);
    }
    /**
     * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder getGuildChallengeProgressOrBuilder(
        int index) {
      return guildChallengeProgress_.get(index);
    }

    private void initFields() {
      teams_ = java.util.Collections.emptyList();
      itemRewards_ = java.util.Collections.emptyList();
      lobbyId_ = 0L;
      reportUntilTime_ = 0L;
      eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
      primaryEventId_ = 0;
      matchTips_ = java.util.Collections.emptyList();
      matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.getDefaultInstance();
      mvpData_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.getDefaultInstance();
      guildChallengeProgress_ = 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();
      for (int i = 0; i < teams_.size(); i++) {
        output.writeMessage(1, teams_.get(i));
      }
      for (int i = 0; i < itemRewards_.size(); i++) {
        output.writeMessage(2, itemRewards_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeFixed64(3, lobbyId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFixed64(4, reportUntilTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(5, eventGameCustomTable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(6, primaryEventId_);
      }
      for (int i = 0; i < matchTips_.size(); i++) {
        output.writeMessage(7, matchTips_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(8, matchmakingStats_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(9, mvpData_);
      }
      for (int i = 0; i < guildChallengeProgress_.size(); i++) {
        output.writeMessage(10, guildChallengeProgress_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < teams_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, teams_.get(i));
      }
      for (int i = 0; i < itemRewards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, itemRewards_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(3, lobbyId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed64Size(4, reportUntilTime_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, eventGameCustomTable_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, primaryEventId_);
      }
      for (int i = 0; i < matchTips_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, matchTips_.get(i));
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, matchmakingStats_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, mvpData_);
      }
      for (int i = 0; i < guildChallengeProgress_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, guildChallengeProgress_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata 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 CDOTAMatchMetadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchMetadata)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getTeamsFieldBuilder();
          getItemRewardsFieldBuilder();
          getMatchTipsFieldBuilder();
          getMatchmakingStatsFieldBuilder();
          getMvpDataFieldBuilder();
          getGuildChallengeProgressFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          teamsBuilder_.clear();
        }
        if (itemRewardsBuilder_ == null) {
          itemRewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemRewardsBuilder_.clear();
        }
        lobbyId_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        reportUntilTime_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        primaryEventId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (matchTipsBuilder_ == null) {
          matchTips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          matchTipsBuilder_.clear();
        }
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.getDefaultInstance();
        } else {
          matchmakingStatsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (mvpDataBuilder_ == null) {
          mvpData_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.getDefaultInstance();
        } else {
          mvpDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (guildChallengeProgressBuilder_ == null) {
          guildChallengeProgress_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
        } else {
          guildChallengeProgressBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchMetadata_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      }

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

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (teamsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            teams_ = java.util.Collections.unmodifiableList(teams_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.teams_ = teams_;
        } else {
          result.teams_ = teamsBuilder_.build();
        }
        if (itemRewardsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            itemRewards_ = java.util.Collections.unmodifiableList(itemRewards_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.itemRewards_ = itemRewards_;
        } else {
          result.itemRewards_ = itemRewardsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        result.lobbyId_ = lobbyId_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        result.reportUntilTime_ = reportUntilTime_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000004;
        }
        result.eventGameCustomTable_ = eventGameCustomTable_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000008;
        }
        result.primaryEventId_ = primaryEventId_;
        if (matchTipsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            matchTips_ = java.util.Collections.unmodifiableList(matchTips_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.matchTips_ = matchTips_;
        } else {
          result.matchTips_ = matchTipsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000010;
        }
        if (matchmakingStatsBuilder_ == null) {
          result.matchmakingStats_ = matchmakingStats_;
        } else {
          result.matchmakingStats_ = matchmakingStatsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000020;
        }
        if (mvpDataBuilder_ == null) {
          result.mvpData_ = mvpData_;
        } else {
          result.mvpData_ = mvpDataBuilder_.build();
        }
        if (guildChallengeProgressBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            guildChallengeProgress_ = java.util.Collections.unmodifiableList(guildChallengeProgress_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.guildChallengeProgress_ = guildChallengeProgress_;
        } else {
          result.guildChallengeProgress_ = guildChallengeProgressBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance()) return this;
        if (teamsBuilder_ == null) {
          if (!other.teams_.isEmpty()) {
            if (teams_.isEmpty()) {
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTeamsIsMutable();
              teams_.addAll(other.teams_);
            }
            onChanged();
          }
        } else {
          if (!other.teams_.isEmpty()) {
            if (teamsBuilder_.isEmpty()) {
              teamsBuilder_.dispose();
              teamsBuilder_ = null;
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
              teamsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTeamsFieldBuilder() : null;
            } else {
              teamsBuilder_.addAllMessages(other.teams_);
            }
          }
        }
        if (itemRewardsBuilder_ == null) {
          if (!other.itemRewards_.isEmpty()) {
            if (itemRewards_.isEmpty()) {
              itemRewards_ = other.itemRewards_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemRewardsIsMutable();
              itemRewards_.addAll(other.itemRewards_);
            }
            onChanged();
          }
        } else {
          if (!other.itemRewards_.isEmpty()) {
            if (itemRewardsBuilder_.isEmpty()) {
              itemRewardsBuilder_.dispose();
              itemRewardsBuilder_ = null;
              itemRewards_ = other.itemRewards_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemRewardsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getItemRewardsFieldBuilder() : null;
            } else {
              itemRewardsBuilder_.addAllMessages(other.itemRewards_);
            }
          }
        }
        if (other.hasLobbyId()) {
          setLobbyId(other.getLobbyId());
        }
        if (other.hasReportUntilTime()) {
          setReportUntilTime(other.getReportUntilTime());
        }
        if (other.hasEventGameCustomTable()) {
          setEventGameCustomTable(other.getEventGameCustomTable());
        }
        if (other.hasPrimaryEventId()) {
          setPrimaryEventId(other.getPrimaryEventId());
        }
        if (matchTipsBuilder_ == null) {
          if (!other.matchTips_.isEmpty()) {
            if (matchTips_.isEmpty()) {
              matchTips_ = other.matchTips_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureMatchTipsIsMutable();
              matchTips_.addAll(other.matchTips_);
            }
            onChanged();
          }
        } else {
          if (!other.matchTips_.isEmpty()) {
            if (matchTipsBuilder_.isEmpty()) {
              matchTipsBuilder_.dispose();
              matchTipsBuilder_ = null;
              matchTips_ = other.matchTips_;
              bitField0_ = (bitField0_ & ~0x00000040);
              matchTipsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchTipsFieldBuilder() : null;
            } else {
              matchTipsBuilder_.addAllMessages(other.matchTips_);
            }
          }
        }
        if (other.hasMatchmakingStats()) {
          mergeMatchmakingStats(other.getMatchmakingStats());
        }
        if (other.hasMvpData()) {
          mergeMvpData(other.getMvpData());
        }
        if (guildChallengeProgressBuilder_ == null) {
          if (!other.guildChallengeProgress_.isEmpty()) {
            if (guildChallengeProgress_.isEmpty()) {
              guildChallengeProgress_ = other.guildChallengeProgress_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureGuildChallengeProgressIsMutable();
              guildChallengeProgress_.addAll(other.guildChallengeProgress_);
            }
            onChanged();
          }
        } else {
          if (!other.guildChallengeProgress_.isEmpty()) {
            if (guildChallengeProgressBuilder_.isEmpty()) {
              guildChallengeProgressBuilder_.dispose();
              guildChallengeProgressBuilder_ = null;
              guildChallengeProgress_ = other.guildChallengeProgress_;
              bitField0_ = (bitField0_ & ~0x00000200);
              guildChallengeProgressBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getGuildChallengeProgressFieldBuilder() : null;
            } else {
              guildChallengeProgressBuilder_.addAllMessages(other.guildChallengeProgress_);
            }
          }
        }
        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.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List teams_ =
        java.util.Collections.emptyList();
      private void ensureTeamsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = new java.util.ArrayList(teams_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder> teamsBuilder_;

      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List getTeamsList() {
        if (teamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(teams_);
        } else {
          return teamsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public int getTeamsCount() {
        if (teamsBuilder_ == null) {
          return teams_.size();
        } else {
          return teamsBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team getTeams(int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);
        } else {
          return teamsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.set(index, value);
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.set(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(index, value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder addAllTeams(
          java.lang.Iterable values) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, teams_);
          onChanged();
        } else {
          teamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder clearTeams() {
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          teamsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public Builder removeTeams(int index) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.remove(index);
          onChanged();
        } else {
          teamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder getTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder getTeamsOrBuilder(
          int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);  } else {
          return teamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsOrBuilderList() {
        if (teamsBuilder_ != null) {
          return teamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(teams_);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder addTeamsBuilder() {
        return getTeamsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder addTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsBuilderList() {
        return getTeamsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder> 
          getTeamsFieldBuilder() {
        if (teamsBuilder_ == null) {
          teamsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.TeamOrBuilder>(
                  teams_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          teams_ = null;
        }
        return teamsBuilder_;
      }

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

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder> itemRewardsBuilder_;

      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List getItemRewardsList() {
        if (itemRewardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(itemRewards_);
        } else {
          return itemRewardsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public int getItemRewardsCount() {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.size();
        } else {
          return itemRewardsBuilder_.getCount();
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails getItemRewards(int index) {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.get(index);
        } else {
          return itemRewardsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder setItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.set(index, value);
          onChanged();
        } else {
          itemRewardsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder setItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.add(value);
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails value) {
        if (itemRewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemRewardsIsMutable();
          itemRewards_.add(index, value);
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.add(builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addItemRewards(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder builderForValue) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemRewardsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder addAllItemRewards(
          java.lang.Iterable values) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, itemRewards_);
          onChanged();
        } else {
          itemRewardsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder clearItemRewards() {
        if (itemRewardsBuilder_ == null) {
          itemRewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemRewardsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public Builder removeItemRewards(int index) {
        if (itemRewardsBuilder_ == null) {
          ensureItemRewardsIsMutable();
          itemRewards_.remove(index);
          onChanged();
        } else {
          itemRewardsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder getItemRewardsBuilder(
          int index) {
        return getItemRewardsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder getItemRewardsOrBuilder(
          int index) {
        if (itemRewardsBuilder_ == null) {
          return itemRewards_.get(index);  } else {
          return itemRewardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List 
           getItemRewardsOrBuilderList() {
        if (itemRewardsBuilder_ != null) {
          return itemRewardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(itemRewards_);
        }
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder addItemRewardsBuilder() {
        return getItemRewardsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.getDefaultInstance());
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder addItemRewardsBuilder(
          int index) {
        return getItemRewardsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.getDefaultInstance());
      }
      /**
       * repeated .CLobbyTimedRewardDetails item_rewards = 2;
       */
      public java.util.List 
           getItemRewardsBuilderList() {
        return getItemRewardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder> 
          getItemRewardsFieldBuilder() {
        if (itemRewardsBuilder_ == null) {
          itemRewardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetails.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CLobbyTimedRewardDetailsOrBuilder>(
                  itemRewards_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          itemRewards_ = null;
        }
        return itemRewardsBuilder_;
      }

      private long lobbyId_ ;
      /**
       * optional fixed64 lobby_id = 3;
       */
      public boolean hasLobbyId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public long getLobbyId() {
        return lobbyId_;
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public Builder setLobbyId(long value) {
        bitField0_ |= 0x00000004;
        lobbyId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed64 lobby_id = 3;
       */
      public Builder clearLobbyId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lobbyId_ = 0L;
        onChanged();
        return this;
      }

      private long reportUntilTime_ ;
      /**
       * optional fixed64 report_until_time = 4;
       */
      public boolean hasReportUntilTime() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public long getReportUntilTime() {
        return reportUntilTime_;
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public Builder setReportUntilTime(long value) {
        bitField0_ |= 0x00000008;
        reportUntilTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional fixed64 report_until_time = 4;
       */
      public Builder clearReportUntilTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        reportUntilTime_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString eventGameCustomTable_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public boolean hasEventGameCustomTable() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public com.google.protobuf.ByteString getEventGameCustomTable() {
        return eventGameCustomTable_;
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public Builder setEventGameCustomTable(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        eventGameCustomTable_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bytes event_game_custom_table = 5;
       */
      public Builder clearEventGameCustomTable() {
        bitField0_ = (bitField0_ & ~0x00000010);
        eventGameCustomTable_ = getDefaultInstance().getEventGameCustomTable();
        onChanged();
        return this;
      }

      private int primaryEventId_ ;
      /**
       * optional uint32 primary_event_id = 6;
       */
      public boolean hasPrimaryEventId() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public int getPrimaryEventId() {
        return primaryEventId_;
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public Builder setPrimaryEventId(int value) {
        bitField0_ |= 0x00000020;
        primaryEventId_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 primary_event_id = 6;
       */
      public Builder clearPrimaryEventId() {
        bitField0_ = (bitField0_ & ~0x00000020);
        primaryEventId_ = 0;
        onChanged();
        return this;
      }

      private java.util.List matchTips_ =
        java.util.Collections.emptyList();
      private void ensureMatchTipsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          matchTips_ = new java.util.ArrayList(matchTips_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder> matchTipsBuilder_;

      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List getMatchTipsList() {
        if (matchTipsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchTips_);
        } else {
          return matchTipsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public int getMatchTipsCount() {
        if (matchTipsBuilder_ == null) {
          return matchTips_.size();
        } else {
          return matchTipsBuilder_.getCount();
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips getMatchTips(int index) {
        if (matchTipsBuilder_ == null) {
          return matchTips_.get(index);
        } else {
          return matchTipsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder setMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.set(index, value);
          onChanged();
        } else {
          matchTipsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder setMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.add(value);
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips value) {
        if (matchTipsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchTipsIsMutable();
          matchTips_.add(index, value);
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.add(builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addMatchTips(
          int index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder builderForValue) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchTipsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder addAllMatchTips(
          java.lang.Iterable values) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matchTips_);
          onChanged();
        } else {
          matchTipsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder clearMatchTips() {
        if (matchTipsBuilder_ == null) {
          matchTips_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          matchTipsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public Builder removeMatchTips(int index) {
        if (matchTipsBuilder_ == null) {
          ensureMatchTipsIsMutable();
          matchTips_.remove(index);
          onChanged();
        } else {
          matchTipsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder getMatchTipsBuilder(
          int index) {
        return getMatchTipsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder getMatchTipsOrBuilder(
          int index) {
        if (matchTipsBuilder_ == null) {
          return matchTips_.get(index);  } else {
          return matchTipsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List 
           getMatchTipsOrBuilderList() {
        if (matchTipsBuilder_ != null) {
          return matchTipsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchTips_);
        }
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder addMatchTipsBuilder() {
        return getMatchTipsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder addMatchTipsBuilder(
          int index) {
        return getMatchTipsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.getDefaultInstance());
      }
      /**
       * repeated .CMsgMatchTips match_tips = 7;
       */
      public java.util.List 
           getMatchTipsBuilderList() {
        return getMatchTipsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder> 
          getMatchTipsFieldBuilder() {
        if (matchTipsBuilder_ == null) {
          matchTipsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTips.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgMatchTipsOrBuilder>(
                  matchTips_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          matchTips_ = null;
        }
        return matchTipsBuilder_;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder> matchmakingStatsBuilder_;
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public boolean hasMatchmakingStats() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats getMatchmakingStats() {
        if (matchmakingStatsBuilder_ == null) {
          return matchmakingStats_;
        } else {
          return matchmakingStatsBuilder_.getMessage();
        }
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder setMatchmakingStats(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats value) {
        if (matchmakingStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          matchmakingStats_ = value;
          onChanged();
        } else {
          matchmakingStatsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder setMatchmakingStats(
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder builderForValue) {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = builderForValue.build();
          onChanged();
        } else {
          matchmakingStatsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder mergeMatchmakingStats(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats value) {
        if (matchmakingStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              matchmakingStats_ != skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.getDefaultInstance()) {
            matchmakingStats_ =
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.newBuilder(matchmakingStats_).mergeFrom(value).buildPartial();
          } else {
            matchmakingStats_ = value;
          }
          onChanged();
        } else {
          matchmakingStatsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public Builder clearMatchmakingStats() {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStats_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.getDefaultInstance();
          onChanged();
        } else {
          matchmakingStatsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder getMatchmakingStatsBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getMatchmakingStatsFieldBuilder().getBuilder();
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder getMatchmakingStatsOrBuilder() {
        if (matchmakingStatsBuilder_ != null) {
          return matchmakingStatsBuilder_.getMessageOrBuilder();
        } else {
          return matchmakingStats_;
        }
      }
      /**
       * optional .CMsgMatchMatchmakingStats matchmaking_stats = 8;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder> 
          getMatchmakingStatsFieldBuilder() {
        if (matchmakingStatsBuilder_ == null) {
          matchmakingStatsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStats.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMsgMatchMatchmakingStatsOrBuilder>(
                  getMatchmakingStats(),
                  getParentForChildren(),
                  isClean());
          matchmakingStats_ = null;
        }
        return matchmakingStatsBuilder_;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData mvpData_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder> mvpDataBuilder_;
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public boolean hasMvpData() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData getMvpData() {
        if (mvpDataBuilder_ == null) {
          return mvpData_;
        } else {
          return mvpDataBuilder_.getMessage();
        }
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public Builder setMvpData(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData value) {
        if (mvpDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          mvpData_ = value;
          onChanged();
        } else {
          mvpDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public Builder setMvpData(
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder builderForValue) {
        if (mvpDataBuilder_ == null) {
          mvpData_ = builderForValue.build();
          onChanged();
        } else {
          mvpDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public Builder mergeMvpData(skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData value) {
        if (mvpDataBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100) &&
              mvpData_ != skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.getDefaultInstance()) {
            mvpData_ =
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.newBuilder(mvpData_).mergeFrom(value).buildPartial();
          } else {
            mvpData_ = value;
          }
          onChanged();
        } else {
          mvpDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public Builder clearMvpData() {
        if (mvpDataBuilder_ == null) {
          mvpData_ = skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.getDefaultInstance();
          onChanged();
        } else {
          mvpDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder getMvpDataBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getMvpDataFieldBuilder().getBuilder();
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder getMvpDataOrBuilder() {
        if (mvpDataBuilder_ != null) {
          return mvpDataBuilder_.getMessageOrBuilder();
        } else {
          return mvpData_;
        }
      }
      /**
       * optional .CMvpData mvp_data = 9;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder> 
          getMvpDataFieldBuilder() {
        if (mvpDataBuilder_ == null) {
          mvpDataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpData.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcMM.CMvpDataOrBuilder>(
                  getMvpData(),
                  getParentForChildren(),
                  isClean());
          mvpData_ = null;
        }
        return mvpDataBuilder_;
      }

      private java.util.List guildChallengeProgress_ =
        java.util.Collections.emptyList();
      private void ensureGuildChallengeProgressIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          guildChallengeProgress_ = new java.util.ArrayList(guildChallengeProgress_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder> guildChallengeProgressBuilder_;

      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public java.util.List getGuildChallengeProgressList() {
        if (guildChallengeProgressBuilder_ == null) {
          return java.util.Collections.unmodifiableList(guildChallengeProgress_);
        } else {
          return guildChallengeProgressBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public int getGuildChallengeProgressCount() {
        if (guildChallengeProgressBuilder_ == null) {
          return guildChallengeProgress_.size();
        } else {
          return guildChallengeProgressBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress getGuildChallengeProgress(int index) {
        if (guildChallengeProgressBuilder_ == null) {
          return guildChallengeProgress_.get(index);
        } else {
          return guildChallengeProgressBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder setGuildChallengeProgress(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress value) {
        if (guildChallengeProgressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.set(index, value);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder setGuildChallengeProgress(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder builderForValue) {
        if (guildChallengeProgressBuilder_ == null) {
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.set(index, builderForValue.build());
          onChanged();
        } else {
          guildChallengeProgressBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder addGuildChallengeProgress(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress value) {
        if (guildChallengeProgressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.add(value);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder addGuildChallengeProgress(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress value) {
        if (guildChallengeProgressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.add(index, value);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder addGuildChallengeProgress(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder builderForValue) {
        if (guildChallengeProgressBuilder_ == null) {
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.add(builderForValue.build());
          onChanged();
        } else {
          guildChallengeProgressBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder addGuildChallengeProgress(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder builderForValue) {
        if (guildChallengeProgressBuilder_ == null) {
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.add(index, builderForValue.build());
          onChanged();
        } else {
          guildChallengeProgressBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder addAllGuildChallengeProgress(
          java.lang.Iterable values) {
        if (guildChallengeProgressBuilder_ == null) {
          ensureGuildChallengeProgressIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, guildChallengeProgress_);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder clearGuildChallengeProgress() {
        if (guildChallengeProgressBuilder_ == null) {
          guildChallengeProgress_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public Builder removeGuildChallengeProgress(int index) {
        if (guildChallengeProgressBuilder_ == null) {
          ensureGuildChallengeProgressIsMutable();
          guildChallengeProgress_.remove(index);
          onChanged();
        } else {
          guildChallengeProgressBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder getGuildChallengeProgressBuilder(
          int index) {
        return getGuildChallengeProgressFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder getGuildChallengeProgressOrBuilder(
          int index) {
        if (guildChallengeProgressBuilder_ == null) {
          return guildChallengeProgress_.get(index);  } else {
          return guildChallengeProgressBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public java.util.List 
           getGuildChallengeProgressOrBuilderList() {
        if (guildChallengeProgressBuilder_ != null) {
          return guildChallengeProgressBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(guildChallengeProgress_);
        }
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder addGuildChallengeProgressBuilder() {
        return getGuildChallengeProgressFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder addGuildChallengeProgressBuilder(
          int index) {
        return getGuildChallengeProgressFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchMetadata.GuildChallengeProgress guild_challenge_progress = 10;
       */
      public java.util.List 
           getGuildChallengeProgressBuilderList() {
        return getGuildChallengeProgressFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder> 
          getGuildChallengeProgressFieldBuilder() {
        if (guildChallengeProgressBuilder_ == null) {
          guildChallengeProgressBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgress.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.GuildChallengeProgressOrBuilder>(
                  guildChallengeProgress_,
                  ((bitField0_ & 0x00000200) == 0x00000200),
                  getParentForChildren(),
                  isClean());
          guildChallengeProgress_ = null;
        }
        return guildChallengeProgressBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchMetadata)
    }

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

    // @@protoc_insertion_point(class_scope:CDOTAMatchMetadata)
  }

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

    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index);
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    int getTeamsCount();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    java.util.List 
        getTeamsOrBuilderList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index);

    /**
     * repeated float graph_win_probability = 2;
     */
    java.util.List getGraphWinProbabilityList();
    /**
     * repeated float graph_win_probability = 2;
     */
    int getGraphWinProbabilityCount();
    /**
     * repeated float graph_win_probability = 2;
     */
    float getGraphWinProbability(int index);

    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    java.util.List 
        getStringNamesList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName getStringNames(int index);
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    int getStringNamesCount();
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    java.util.List 
        getStringNamesOrBuilderList();
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder getStringNamesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code CDOTAMatchPrivateMetadata}
   */
  public static final class CDOTAMatchPrivateMetadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata)
      CDOTAMatchPrivateMetadataOrBuilder {
    // Use CDOTAMatchPrivateMetadata.newBuilder() to construct.
    private CDOTAMatchPrivateMetadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CDOTAMatchPrivateMetadata(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CDOTAMatchPrivateMetadata getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CDOTAMatchPrivateMetadata(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                teams_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              teams_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PARSER, extensionRegistry));
              break;
            }
            case 21: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                graphWinProbability_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              graphWinProbability_.add(input.readFloat());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                graphWinProbability_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                graphWinProbability_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                stringNames_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              stringNames_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = java.util.Collections.unmodifiableList(teams_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = java.util.Collections.unmodifiableList(graphWinProbability_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          stringNames_ = java.util.Collections.unmodifiableList(stringNames_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Builder.class);
    }

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

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

    public interface StringNameOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.StringName)
        com.google.protobuf.MessageOrBuilder {

      /**
       * optional uint32 id = 1;
       */
      boolean hasId();
      /**
       * optional uint32 id = 1;
       */
      int getId();

      /**
       * 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 CDOTAMatchPrivateMetadata.StringName}
     */
    public static final class StringName extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.StringName)
        StringNameOrBuilder {
      // Use StringName.newBuilder() to construct.
      private StringName(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private StringName(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public StringName getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private StringName(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                id_ = input.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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_StringName_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder.class);
      }

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

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

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

      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() {
        id_ = 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, id_);
        }
        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, id_);
        }
        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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName 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 CDOTAMatchPrivateMetadata.StringName}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.StringName)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_StringName_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

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

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

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.name_ = name_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int id_ ;
        /**
         * optional uint32 id = 1;
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * optional uint32 id = 1;
         */
        public int getId() {
          return id_;
        }
        /**
         * optional uint32 id = 1;
         */
        public Builder setId(int value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * optional uint32 id = 1;
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 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:CDOTAMatchPrivateMetadata.StringName)
      }

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

      // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.StringName)
    }

    public interface TeamOrBuilder extends
        // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index);
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      int getPlayersCount();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      java.util.List 
          getPlayersOrBuilderList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index);

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      java.util.List 
          getBuildingsList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index);
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      int getBuildingsCount();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      java.util.List 
          getBuildingsOrBuilderList();
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code CDOTAMatchPrivateMetadata.Team}
     */
    public static final class Team extends
        com.google.protobuf.GeneratedMessage implements
        // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team)
        TeamOrBuilder {
      // Use Team.newBuilder() to construct.
      private Team(com.google.protobuf.GeneratedMessage.Builder builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Team(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

      public Team getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Team(
          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 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  players_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000002;
                }
                players_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.PARSER, extensionRegistry));
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  buildings_ = new java.util.ArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                buildings_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.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)) {
            players_ = java.util.Collections.unmodifiableList(players_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            buildings_ = java.util.Collections.unmodifiableList(buildings_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder.class);
      }

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

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

      public interface PlayerOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.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 bytes position_stream = 3;
         */
        boolean hasPositionStream();
        /**
         * optional bytes position_stream = 3;
         */
        com.google.protobuf.ByteString getPositionStream();

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        java.util.List 
            getCombatSegmentsList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index);
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        int getCombatSegmentsCount();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        java.util.List 
            getCombatSegmentsOrBuilderList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
            int index);

        /**
         * repeated string damage_unit_names = 5;
         */
        com.google.protobuf.ProtocolStringList
            getDamageUnitNamesList();
        /**
         * repeated string damage_unit_names = 5;
         */
        int getDamageUnitNamesCount();
        /**
         * repeated string damage_unit_names = 5;
         */
        java.lang.String getDamageUnitNames(int index);
        /**
         * repeated string damage_unit_names = 5;
         */
        com.google.protobuf.ByteString
            getDamageUnitNamesBytes(int index);

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        java.util.List 
            getBuffRecordsList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index);
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        int getBuffRecordsCount();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        java.util.List 
            getBuffRecordsOrBuilderList();
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
            int index);

        /**
         * repeated float graph_kills = 7;
         */
        java.util.List getGraphKillsList();
        /**
         * repeated float graph_kills = 7;
         */
        int getGraphKillsCount();
        /**
         * repeated float graph_kills = 7;
         */
        float getGraphKills(int index);

        /**
         * repeated float graph_deaths = 8;
         */
        java.util.List getGraphDeathsList();
        /**
         * repeated float graph_deaths = 8;
         */
        int getGraphDeathsCount();
        /**
         * repeated float graph_deaths = 8;
         */
        float getGraphDeaths(int index);

        /**
         * repeated float graph_assists = 9;
         */
        java.util.List getGraphAssistsList();
        /**
         * repeated float graph_assists = 9;
         */
        int getGraphAssistsCount();
        /**
         * repeated float graph_assists = 9;
         */
        float getGraphAssists(int index);

        /**
         * repeated float graph_lasthits = 10;
         */
        java.util.List getGraphLasthitsList();
        /**
         * repeated float graph_lasthits = 10;
         */
        int getGraphLasthitsCount();
        /**
         * repeated float graph_lasthits = 10;
         */
        float getGraphLasthits(int index);

        /**
         * repeated float graph_denies = 11;
         */
        java.util.List getGraphDeniesList();
        /**
         * repeated float graph_denies = 11;
         */
        int getGraphDeniesCount();
        /**
         * repeated float graph_denies = 11;
         */
        float getGraphDenies(int index);

        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        boolean hasGoldReceived();
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived getGoldReceived();
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder getGoldReceivedOrBuilder();

        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        boolean hasXpReceived();
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived getXpReceived();
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder getXpReceivedOrBuilder();
      }
      /**
       * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player}
       */
      public static final class Player extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.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;
          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 26: {
                  bitField0_ |= 0x00000004;
                  positionStream_ = input.readBytes();
                  break;
                }
                case 34: {
                  if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                    combatSegments_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000008;
                  }
                  combatSegments_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.PARSER, extensionRegistry));
                  break;
                }
                case 42: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    damageUnitNames_ = new com.google.protobuf.LazyStringArrayList();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  damageUnitNames_.add(bs);
                  break;
                }
                case 50: {
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                    buffRecords_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  buffRecords_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.PARSER, extensionRegistry));
                  break;
                }
                case 61: {
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                    graphKills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  graphKills_.add(input.readFloat());
                  break;
                }
                case 58: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                    graphKills_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphKills_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 69: {
                  if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                    graphDeaths_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000080;
                  }
                  graphDeaths_.add(input.readFloat());
                  break;
                }
                case 66: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                    graphDeaths_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000080;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphDeaths_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 77: {
                  if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                    graphAssists_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  graphAssists_.add(input.readFloat());
                  break;
                }
                case 74: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                    graphAssists_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000100;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphAssists_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 85: {
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                    graphLasthits_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  graphLasthits_.add(input.readFloat());
                  break;
                }
                case 82: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000200) == 0x00000200) && input.getBytesUntilLimit() > 0) {
                    graphLasthits_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000200;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphLasthits_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 93: {
                  if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                    graphDenies_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000400;
                  }
                  graphDenies_.add(input.readFloat());
                  break;
                }
                case 90: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                    graphDenies_ = new java.util.ArrayList();
                    mutable_bitField0_ |= 0x00000400;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    graphDenies_.add(input.readFloat());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 98: {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder subBuilder = null;
                  if (((bitField0_ & 0x00000008) == 0x00000008)) {
                    subBuilder = goldReceived_.toBuilder();
                  }
                  goldReceived_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.PARSER, extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(goldReceived_);
                    goldReceived_ = subBuilder.buildPartial();
                  }
                  bitField0_ |= 0x00000008;
                  break;
                }
                case 106: {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder subBuilder = null;
                  if (((bitField0_ & 0x00000010) == 0x00000010)) {
                    subBuilder = xpReceived_.toBuilder();
                  }
                  xpReceived_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.PARSER, extensionRegistry);
                  if (subBuilder != null) {
                    subBuilder.mergeFrom(xpReceived_);
                    xpReceived_ = subBuilder.buildPartial();
                  }
                  bitField0_ |= 0x00000010;
                  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_ & 0x00000008) == 0x00000008)) {
              combatSegments_ = java.util.Collections.unmodifiableList(combatSegments_);
            }
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = damageUnitNames_.getUnmodifiableView();
            }
            if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              buffRecords_ = java.util.Collections.unmodifiableList(buffRecords_);
            }
            if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = java.util.Collections.unmodifiableList(graphKills_);
            }
            if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = java.util.Collections.unmodifiableList(graphDeaths_);
            }
            if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = java.util.Collections.unmodifiableList(graphAssists_);
            }
            if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = java.util.Collections.unmodifiableList(graphLasthits_);
            }
            if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = java.util.Collections.unmodifiableList(graphDenies_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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;
        }

        public interface CombatSegmentOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional int32 game_time = 1;
           */
          boolean hasGameTime();
          /**
           * optional int32 game_time = 1;
           */
          int getGameTime();

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          java.util.List 
              getDamageByAbilityList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index);
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          int getDamageByAbilityCount();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          java.util.List 
              getDamageByAbilityOrBuilderList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
              int index);

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          java.util.List 
              getHealingByAbilityList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility getHealingByAbility(int index);
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          int getHealingByAbilityCount();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          java.util.List 
              getHealingByAbilityOrBuilderList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder getHealingByAbilityOrBuilder(
              int index);
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment}
         */
        public static final class CombatSegment extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
            CombatSegmentOrBuilder {
          // Use CombatSegment.newBuilder() to construct.
          private CombatSegment(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private CombatSegment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

          public CombatSegment getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private CombatSegment(
              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;
                    gameTime_ = input.readInt32();
                    break;
                  }
                  case 18: {
                    if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                      damageByAbility_ = new java.util.ArrayList();
                      mutable_bitField0_ |= 0x00000002;
                    }
                    damageByAbility_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.PARSER, extensionRegistry));
                    break;
                  }
                  case 26: {
                    if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                      healingByAbility_ = new java.util.ArrayList();
                      mutable_bitField0_ |= 0x00000004;
                    }
                    healingByAbility_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.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)) {
                damageByAbility_ = java.util.Collections.unmodifiableList(damageByAbility_);
              }
              if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                healingByAbility_ = java.util.Collections.unmodifiableList(healingByAbility_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder.class);
          }

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

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

          public interface DamageByAbilityOrBuilder extends
              // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
              com.google.protobuf.MessageOrBuilder {

            /**
             * optional uint32 source_unit_index = 3;
             */
            boolean hasSourceUnitIndex();
            /**
             * optional uint32 source_unit_index = 3;
             */
            int getSourceUnitIndex();

            /**
             * optional uint32 ability_id = 1;
             */
            boolean hasAbilityId();
            /**
             * optional uint32 ability_id = 1;
             */
            int getAbilityId();

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index);
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            int getByHeroTargetsCount();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsOrBuilderList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index);
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility}
           */
          public static final class DamageByAbility extends
              com.google.protobuf.GeneratedMessage implements
              // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
              DamageByAbilityOrBuilder {
            // Use DamageByAbility.newBuilder() to construct.
            private DamageByAbility(com.google.protobuf.GeneratedMessage.Builder builder) {
              super(builder);
              this.unknownFields = builder.getUnknownFields();
            }
            private DamageByAbility(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

            public DamageByAbility getDefaultInstanceForType() {
              return defaultInstance;
            }

            private final com.google.protobuf.UnknownFieldSet unknownFields;
            @java.lang.Override
            public final com.google.protobuf.UnknownFieldSet
                getUnknownFields() {
              return this.unknownFields;
            }
            private DamageByAbility(
                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_ |= 0x00000002;
                      abilityId_ = input.readUInt32();
                      break;
                    }
                    case 18: {
                      if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                        byHeroTargets_ = new java.util.ArrayList();
                        mutable_bitField0_ |= 0x00000004;
                      }
                      byHeroTargets_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.PARSER, extensionRegistry));
                      break;
                    }
                    case 24: {
                      bitField0_ |= 0x00000001;
                      sourceUnitIndex_ = 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_bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
              }
            }
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder.class);
            }

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

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

            public interface ByHeroTargetOrBuilder extends
                // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                com.google.protobuf.MessageOrBuilder {

              /**
               * optional uint32 hero_id = 1;
               */
              boolean hasHeroId();
              /**
               * optional uint32 hero_id = 1;
               */
              int getHeroId();

              /**
               * optional uint32 damage = 2;
               */
              boolean hasDamage();
              /**
               * optional uint32 damage = 2;
               */
              int getDamage();
            }
            /**
             * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget}
             */
            public static final class ByHeroTarget extends
                com.google.protobuf.GeneratedMessage implements
                // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                ByHeroTargetOrBuilder {
              // Use ByHeroTarget.newBuilder() to construct.
              private ByHeroTarget(com.google.protobuf.GeneratedMessage.Builder builder) {
                super(builder);
                this.unknownFields = builder.getUnknownFields();
              }
              private ByHeroTarget(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

              public ByHeroTarget getDefaultInstanceForType() {
                return defaultInstance;
              }

              private final com.google.protobuf.UnknownFieldSet unknownFields;
              @java.lang.Override
              public final com.google.protobuf.UnknownFieldSet
                  getUnknownFields() {
                return this.unknownFields;
              }
              private ByHeroTarget(
                  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;
                        heroId_ = input.readUInt32();
                        break;
                      }
                      case 16: {
                        bitField0_ |= 0x00000002;
                        damage_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder.class);
              }

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

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

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

              public static final int DAMAGE_FIELD_NUMBER = 2;
              private int damage_;
              /**
               * optional uint32 damage = 2;
               */
              public boolean hasDamage() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 damage = 2;
               */
              public int getDamage() {
                return damage_;
              }

              private void initFields() {
                heroId_ = 0;
                damage_ = 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, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  output.writeUInt32(2, damage_);
                }
                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, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  size += com.google.protobuf.CodedOutputStream
                    .computeUInt32Size(2, damage_);
                }
                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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.ByteString data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(byte[] data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  byte[] data,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseDelimitedFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseDelimitedFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.CodedInputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget 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 CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget}
               */
              public static final class Builder extends
                  com.google.protobuf.GeneratedMessage.Builder implements
                  // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder {
                public static final com.google.protobuf.Descriptors.Descriptor
                    getDescriptor() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
                }

                protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                    internalGetFieldAccessorTable() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable
                      .ensureFieldAccessorsInitialized(
                          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder.class);
                }

                // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.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();
                  heroId_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  damage_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  return this;
                }

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

                public com.google.protobuf.Descriptors.Descriptor
                    getDescriptorForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getDefaultInstanceForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance();
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget build() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget result = buildPartial();
                  if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                  }
                  return result;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget buildPartial() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget(this);
                  int from_bitField0_ = bitField0_;
                  int to_bitField0_ = 0;
                  if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                    to_bitField0_ |= 0x00000001;
                  }
                  result.heroId_ = heroId_;
                  if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                    to_bitField0_ |= 0x00000002;
                  }
                  result.damage_ = damage_;
                  result.bitField0_ = to_bitField0_;
                  onBuilt();
                  return result;
                }

                public Builder mergeFrom(com.google.protobuf.Message other) {
                  if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget) {
                    return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)other);
                  } else {
                    super.mergeFrom(other);
                    return this;
                  }
                }

                public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget other) {
                  if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance()) return this;
                  if (other.hasHeroId()) {
                    setHeroId(other.getHeroId());
                  }
                  if (other.hasDamage()) {
                    setDamage(other.getDamage());
                  }
                  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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget parsedMessage = null;
                  try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget) e.getUnfinishedMessage();
                    throw e;
                  } finally {
                    if (parsedMessage != null) {
                      mergeFrom(parsedMessage);
                    }
                  }
                  return this;
                }
                private int bitField0_;

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

                private int damage_ ;
                /**
                 * optional uint32 damage = 2;
                 */
                public boolean hasDamage() {
                  return ((bitField0_ & 0x00000002) == 0x00000002);
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public int getDamage() {
                  return damage_;
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public Builder setDamage(int value) {
                  bitField0_ |= 0x00000002;
                  damage_ = value;
                  onChanged();
                  return this;
                }
                /**
                 * optional uint32 damage = 2;
                 */
                public Builder clearDamage() {
                  bitField0_ = (bitField0_ & ~0x00000002);
                  damage_ = 0;
                  onChanged();
                  return this;
                }

                // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
              }

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

              // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget)
            }

            private int bitField0_;
            public static final int SOURCE_UNIT_INDEX_FIELD_NUMBER = 3;
            private int sourceUnitIndex_;
            /**
             * optional uint32 source_unit_index = 3;
             */
            public boolean hasSourceUnitIndex() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 source_unit_index = 3;
             */
            public int getSourceUnitIndex() {
              return sourceUnitIndex_;
            }

            public static final int ABILITY_ID_FIELD_NUMBER = 1;
            private int abilityId_;
            /**
             * optional uint32 ability_id = 1;
             */
            public boolean hasAbilityId() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 ability_id = 1;
             */
            public int getAbilityId() {
              return abilityId_;
            }

            public static final int BY_HERO_TARGETS_FIELD_NUMBER = 2;
            private java.util.List byHeroTargets_;
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List getByHeroTargetsList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                getByHeroTargetsOrBuilderList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public int getByHeroTargetsCount() {
              return byHeroTargets_.size();
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index) {
              return byHeroTargets_.get(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index) {
              return byHeroTargets_.get(index);
            }

            private void initFields() {
              sourceUnitIndex_ = 0;
              abilityId_ = 0;
              byHeroTargets_ = 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_ & 0x00000002) == 0x00000002)) {
                output.writeUInt32(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                output.writeMessage(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                output.writeUInt32(3, sourceUnitIndex_);
              }
              getUnknownFields().writeTo(output);
            }

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

              size = 0;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                  .computeMessageSize(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(3, sourceUnitIndex_);
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility 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 CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility}
             */
            public static final class Builder extends
                com.google.protobuf.GeneratedMessage.Builder implements
                // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder {
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder.class);
              }

              // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.newBuilder()
              private Builder() {
                maybeForceBuilderInitialization();
              }

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

              public Builder clear() {
                super.clear();
                sourceUnitIndex_ = 0;
                bitField0_ = (bitField0_ & ~0x00000001);
                abilityId_ = 0;
                bitField0_ = (bitField0_ & ~0x00000002);
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }

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

              public com.google.protobuf.Descriptors.Descriptor
                  getDescriptorForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDefaultInstanceForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance();
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility build() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility result = buildPartial();
                if (!result.isInitialized()) {
                  throw newUninitializedMessageException(result);
                }
                return result;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility buildPartial() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                  to_bitField0_ |= 0x00000001;
                }
                result.sourceUnitIndex_ = sourceUnitIndex_;
                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                  to_bitField0_ |= 0x00000002;
                }
                result.abilityId_ = abilityId_;
                if (byHeroTargetsBuilder_ == null) {
                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
                    byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                    bitField0_ = (bitField0_ & ~0x00000004);
                  }
                  result.byHeroTargets_ = byHeroTargets_;
                } else {
                  result.byHeroTargets_ = byHeroTargetsBuilder_.build();
                }
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
              }

              public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility) {
                  return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)other);
                } else {
                  super.mergeFrom(other);
                  return this;
                }
              }

              public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility other) {
                if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance()) return this;
                if (other.hasSourceUnitIndex()) {
                  setSourceUnitIndex(other.getSourceUnitIndex());
                }
                if (other.hasAbilityId()) {
                  setAbilityId(other.getAbilityId());
                }
                if (byHeroTargetsBuilder_ == null) {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargets_.isEmpty()) {
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                    } else {
                      ensureByHeroTargetsIsMutable();
                      byHeroTargets_.addAll(other.byHeroTargets_);
                    }
                    onChanged();
                  }
                } else {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargetsBuilder_.isEmpty()) {
                      byHeroTargetsBuilder_.dispose();
                      byHeroTargetsBuilder_ = null;
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                      byHeroTargetsBuilder_ = 
                        com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                           getByHeroTargetsFieldBuilder() : null;
                    } else {
                      byHeroTargetsBuilder_.addAllMessages(other.byHeroTargets_);
                    }
                  }
                }
                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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility parsedMessage = null;
                try {
                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility) e.getUnfinishedMessage();
                  throw e;
                } finally {
                  if (parsedMessage != null) {
                    mergeFrom(parsedMessage);
                  }
                }
                return this;
              }
              private int bitField0_;

              private int sourceUnitIndex_ ;
              /**
               * optional uint32 source_unit_index = 3;
               */
              public boolean hasSourceUnitIndex() {
                return ((bitField0_ & 0x00000001) == 0x00000001);
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public int getSourceUnitIndex() {
                return sourceUnitIndex_;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder setSourceUnitIndex(int value) {
                bitField0_ |= 0x00000001;
                sourceUnitIndex_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder clearSourceUnitIndex() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sourceUnitIndex_ = 0;
                onChanged();
                return this;
              }

              private int abilityId_ ;
              /**
               * optional uint32 ability_id = 1;
               */
              public boolean hasAbilityId() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public int getAbilityId() {
                return abilityId_;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder setAbilityId(int value) {
                bitField0_ |= 0x00000002;
                abilityId_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder clearAbilityId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                abilityId_ = 0;
                onChanged();
                return this;
              }

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

              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder> byHeroTargetsBuilder_;

              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List getByHeroTargetsList() {
                if (byHeroTargetsBuilder_ == null) {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                } else {
                  return byHeroTargetsBuilder_.getMessageList();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public int getByHeroTargetsCount() {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.size();
                } else {
                  return byHeroTargetsBuilder_.getCount();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget getByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);
                } else {
                  return byHeroTargetsBuilder_.getMessage(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addAllByHeroTargets(
                  java.lang.Iterable values) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  com.google.protobuf.AbstractMessageLite.Builder.addAll(
                      values, byHeroTargets_);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addAllMessages(values);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder clearByHeroTargets() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder removeByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.remove(index);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.remove(index);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder getByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().getBuilder(index);
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                  int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);  } else {
                  return byHeroTargetsBuilder_.getMessageOrBuilder(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsOrBuilderList() {
                if (byHeroTargetsBuilder_ != null) {
                  return byHeroTargetsBuilder_.getMessageOrBuilderList();
                } else {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder() {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsBuilderList() {
                return getByHeroTargetsFieldBuilder().getBuilderList();
              }
              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder> 
                  getByHeroTargetsFieldBuilder() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.ByHeroTargetOrBuilder>(
                          byHeroTargets_,
                          ((bitField0_ & 0x00000004) == 0x00000004),
                          getParentForChildren(),
                          isClean());
                  byHeroTargets_ = null;
                }
                return byHeroTargetsBuilder_;
              }

              // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
            }

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

            // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility)
          }

          public interface HealingByAbilityOrBuilder extends
              // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)
              com.google.protobuf.MessageOrBuilder {

            /**
             * optional uint32 source_unit_index = 3;
             */
            boolean hasSourceUnitIndex();
            /**
             * optional uint32 source_unit_index = 3;
             */
            int getSourceUnitIndex();

            /**
             * optional uint32 ability_id = 1;
             */
            boolean hasAbilityId();
            /**
             * optional uint32 ability_id = 1;
             */
            int getAbilityId();

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget getByHeroTargets(int index);
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            int getByHeroTargetsCount();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            java.util.List 
                getByHeroTargetsOrBuilderList();
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index);
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility}
           */
          public static final class HealingByAbility extends
              com.google.protobuf.GeneratedMessage implements
              // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)
              HealingByAbilityOrBuilder {
            // Use HealingByAbility.newBuilder() to construct.
            private HealingByAbility(com.google.protobuf.GeneratedMessage.Builder builder) {
              super(builder);
              this.unknownFields = builder.getUnknownFields();
            }
            private HealingByAbility(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

            public HealingByAbility getDefaultInstanceForType() {
              return defaultInstance;
            }

            private final com.google.protobuf.UnknownFieldSet unknownFields;
            @java.lang.Override
            public final com.google.protobuf.UnknownFieldSet
                getUnknownFields() {
              return this.unknownFields;
            }
            private HealingByAbility(
                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_ |= 0x00000002;
                      abilityId_ = input.readUInt32();
                      break;
                    }
                    case 18: {
                      if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                        byHeroTargets_ = new java.util.ArrayList();
                        mutable_bitField0_ |= 0x00000004;
                      }
                      byHeroTargets_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.PARSER, extensionRegistry));
                      break;
                    }
                    case 24: {
                      bitField0_ |= 0x00000001;
                      sourceUnitIndex_ = 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_bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
              }
            }
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder.class);
            }

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

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

            public interface ByHeroTargetOrBuilder extends
                // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)
                com.google.protobuf.MessageOrBuilder {

              /**
               * optional uint32 hero_id = 1;
               */
              boolean hasHeroId();
              /**
               * optional uint32 hero_id = 1;
               */
              int getHeroId();

              /**
               * optional uint32 healing = 2;
               */
              boolean hasHealing();
              /**
               * optional uint32 healing = 2;
               */
              int getHealing();
            }
            /**
             * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget}
             */
            public static final class ByHeroTarget extends
                com.google.protobuf.GeneratedMessage implements
                // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)
                ByHeroTargetOrBuilder {
              // Use ByHeroTarget.newBuilder() to construct.
              private ByHeroTarget(com.google.protobuf.GeneratedMessage.Builder builder) {
                super(builder);
                this.unknownFields = builder.getUnknownFields();
              }
              private ByHeroTarget(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

              public ByHeroTarget getDefaultInstanceForType() {
                return defaultInstance;
              }

              private final com.google.protobuf.UnknownFieldSet unknownFields;
              @java.lang.Override
              public final com.google.protobuf.UnknownFieldSet
                  getUnknownFields() {
                return this.unknownFields;
              }
              private ByHeroTarget(
                  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;
                        heroId_ = input.readUInt32();
                        break;
                      }
                      case 16: {
                        bitField0_ |= 0x00000002;
                        healing_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder.class);
              }

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

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

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

              public static final int HEALING_FIELD_NUMBER = 2;
              private int healing_;
              /**
               * optional uint32 healing = 2;
               */
              public boolean hasHealing() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 healing = 2;
               */
              public int getHealing() {
                return healing_;
              }

              private void initFields() {
                heroId_ = 0;
                healing_ = 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, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  output.writeUInt32(2, healing_);
                }
                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, heroId_);
                }
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  size += com.google.protobuf.CodedOutputStream
                    .computeUInt32Size(2, healing_);
                }
                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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.ByteString data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(byte[] data)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(
                  byte[] data,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws com.google.protobuf.InvalidProtocolBufferException {
                return PARSER.parseFrom(data, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseDelimitedFrom(java.io.InputStream input)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseDelimitedFrom(
                  java.io.InputStream input,
                  com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                  throws java.io.IOException {
                return PARSER.parseDelimitedFrom(input, extensionRegistry);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parseFrom(
                  com.google.protobuf.CodedInputStream input)
                  throws java.io.IOException {
                return PARSER.parseFrom(input);
              }
              public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget 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 CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget}
               */
              public static final class Builder extends
                  com.google.protobuf.GeneratedMessage.Builder implements
                  // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder {
                public static final com.google.protobuf.Descriptors.Descriptor
                    getDescriptor() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor;
                }

                protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                    internalGetFieldAccessorTable() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_fieldAccessorTable
                      .ensureFieldAccessorsInitialized(
                          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder.class);
                }

                // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.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();
                  heroId_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  healing_ = 0;
                  bitField0_ = (bitField0_ & ~0x00000002);
                  return this;
                }

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

                public com.google.protobuf.Descriptors.Descriptor
                    getDescriptorForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget getDefaultInstanceForType() {
                  return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.getDefaultInstance();
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget build() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget result = buildPartial();
                  if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                  }
                  return result;
                }

                public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget buildPartial() {
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget(this);
                  int from_bitField0_ = bitField0_;
                  int to_bitField0_ = 0;
                  if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                    to_bitField0_ |= 0x00000001;
                  }
                  result.heroId_ = heroId_;
                  if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                    to_bitField0_ |= 0x00000002;
                  }
                  result.healing_ = healing_;
                  result.bitField0_ = to_bitField0_;
                  onBuilt();
                  return result;
                }

                public Builder mergeFrom(com.google.protobuf.Message other) {
                  if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget) {
                    return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)other);
                  } else {
                    super.mergeFrom(other);
                    return this;
                  }
                }

                public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget other) {
                  if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.getDefaultInstance()) return this;
                  if (other.hasHeroId()) {
                    setHeroId(other.getHeroId());
                  }
                  if (other.hasHealing()) {
                    setHealing(other.getHealing());
                  }
                  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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget parsedMessage = null;
                  try {
                    parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget) e.getUnfinishedMessage();
                    throw e;
                  } finally {
                    if (parsedMessage != null) {
                      mergeFrom(parsedMessage);
                    }
                  }
                  return this;
                }
                private int bitField0_;

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

                private int healing_ ;
                /**
                 * optional uint32 healing = 2;
                 */
                public boolean hasHealing() {
                  return ((bitField0_ & 0x00000002) == 0x00000002);
                }
                /**
                 * optional uint32 healing = 2;
                 */
                public int getHealing() {
                  return healing_;
                }
                /**
                 * optional uint32 healing = 2;
                 */
                public Builder setHealing(int value) {
                  bitField0_ |= 0x00000002;
                  healing_ = value;
                  onChanged();
                  return this;
                }
                /**
                 * optional uint32 healing = 2;
                 */
                public Builder clearHealing() {
                  bitField0_ = (bitField0_ & ~0x00000002);
                  healing_ = 0;
                  onChanged();
                  return this;
                }

                // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)
              }

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

              // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget)
            }

            private int bitField0_;
            public static final int SOURCE_UNIT_INDEX_FIELD_NUMBER = 3;
            private int sourceUnitIndex_;
            /**
             * optional uint32 source_unit_index = 3;
             */
            public boolean hasSourceUnitIndex() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 source_unit_index = 3;
             */
            public int getSourceUnitIndex() {
              return sourceUnitIndex_;
            }

            public static final int ABILITY_ID_FIELD_NUMBER = 1;
            private int abilityId_;
            /**
             * optional uint32 ability_id = 1;
             */
            public boolean hasAbilityId() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 ability_id = 1;
             */
            public int getAbilityId() {
              return abilityId_;
            }

            public static final int BY_HERO_TARGETS_FIELD_NUMBER = 2;
            private java.util.List byHeroTargets_;
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List getByHeroTargetsList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                getByHeroTargetsOrBuilderList() {
              return byHeroTargets_;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public int getByHeroTargetsCount() {
              return byHeroTargets_.size();
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget getByHeroTargets(int index) {
              return byHeroTargets_.get(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index) {
              return byHeroTargets_.get(index);
            }

            private void initFields() {
              sourceUnitIndex_ = 0;
              abilityId_ = 0;
              byHeroTargets_ = 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_ & 0x00000002) == 0x00000002)) {
                output.writeUInt32(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                output.writeMessage(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                output.writeUInt32(3, sourceUnitIndex_);
              }
              getUnknownFields().writeTo(output);
            }

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

              size = 0;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(1, abilityId_);
              }
              for (int i = 0; i < byHeroTargets_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                  .computeMessageSize(2, byHeroTargets_.get(i));
              }
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeUInt32Size(3, sourceUnitIndex_);
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility 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 CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility}
             */
            public static final class Builder extends
                com.google.protobuf.GeneratedMessage.Builder implements
                // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder {
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder.class);
              }

              // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.newBuilder()
              private Builder() {
                maybeForceBuilderInitialization();
              }

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

              public Builder clear() {
                super.clear();
                sourceUnitIndex_ = 0;
                bitField0_ = (bitField0_ & ~0x00000001);
                abilityId_ = 0;
                bitField0_ = (bitField0_ & ~0x00000002);
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }

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

              public com.google.protobuf.Descriptors.Descriptor
                  getDescriptorForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility getDefaultInstanceForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.getDefaultInstance();
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility build() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility result = buildPartial();
                if (!result.isInitialized()) {
                  throw newUninitializedMessageException(result);
                }
                return result;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility buildPartial() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                  to_bitField0_ |= 0x00000001;
                }
                result.sourceUnitIndex_ = sourceUnitIndex_;
                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                  to_bitField0_ |= 0x00000002;
                }
                result.abilityId_ = abilityId_;
                if (byHeroTargetsBuilder_ == null) {
                  if (((bitField0_ & 0x00000004) == 0x00000004)) {
                    byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                    bitField0_ = (bitField0_ & ~0x00000004);
                  }
                  result.byHeroTargets_ = byHeroTargets_;
                } else {
                  result.byHeroTargets_ = byHeroTargetsBuilder_.build();
                }
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
              }

              public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility) {
                  return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)other);
                } else {
                  super.mergeFrom(other);
                  return this;
                }
              }

              public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility other) {
                if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.getDefaultInstance()) return this;
                if (other.hasSourceUnitIndex()) {
                  setSourceUnitIndex(other.getSourceUnitIndex());
                }
                if (other.hasAbilityId()) {
                  setAbilityId(other.getAbilityId());
                }
                if (byHeroTargetsBuilder_ == null) {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargets_.isEmpty()) {
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                    } else {
                      ensureByHeroTargetsIsMutable();
                      byHeroTargets_.addAll(other.byHeroTargets_);
                    }
                    onChanged();
                  }
                } else {
                  if (!other.byHeroTargets_.isEmpty()) {
                    if (byHeroTargetsBuilder_.isEmpty()) {
                      byHeroTargetsBuilder_.dispose();
                      byHeroTargetsBuilder_ = null;
                      byHeroTargets_ = other.byHeroTargets_;
                      bitField0_ = (bitField0_ & ~0x00000004);
                      byHeroTargetsBuilder_ = 
                        com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                           getByHeroTargetsFieldBuilder() : null;
                    } else {
                      byHeroTargetsBuilder_.addAllMessages(other.byHeroTargets_);
                    }
                  }
                }
                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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility parsedMessage = null;
                try {
                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility) e.getUnfinishedMessage();
                  throw e;
                } finally {
                  if (parsedMessage != null) {
                    mergeFrom(parsedMessage);
                  }
                }
                return this;
              }
              private int bitField0_;

              private int sourceUnitIndex_ ;
              /**
               * optional uint32 source_unit_index = 3;
               */
              public boolean hasSourceUnitIndex() {
                return ((bitField0_ & 0x00000001) == 0x00000001);
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public int getSourceUnitIndex() {
                return sourceUnitIndex_;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder setSourceUnitIndex(int value) {
                bitField0_ |= 0x00000001;
                sourceUnitIndex_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 source_unit_index = 3;
               */
              public Builder clearSourceUnitIndex() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sourceUnitIndex_ = 0;
                onChanged();
                return this;
              }

              private int abilityId_ ;
              /**
               * optional uint32 ability_id = 1;
               */
              public boolean hasAbilityId() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public int getAbilityId() {
                return abilityId_;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder setAbilityId(int value) {
                bitField0_ |= 0x00000002;
                abilityId_ = value;
                onChanged();
                return this;
              }
              /**
               * optional uint32 ability_id = 1;
               */
              public Builder clearAbilityId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                abilityId_ = 0;
                onChanged();
                return this;
              }

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

              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder> byHeroTargetsBuilder_;

              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List getByHeroTargetsList() {
                if (byHeroTargetsBuilder_ == null) {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                } else {
                  return byHeroTargetsBuilder_.getMessageList();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public int getByHeroTargetsCount() {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.size();
                } else {
                  return byHeroTargetsBuilder_.getCount();
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget getByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);
                } else {
                  return byHeroTargetsBuilder_.getMessage(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder setByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.set(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget value) {
                if (byHeroTargetsBuilder_ == null) {
                  if (value == null) {
                    throw new NullPointerException();
                  }
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, value);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, value);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addByHeroTargets(
                  int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder builderForValue) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.add(index, builderForValue.build());
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder addAllByHeroTargets(
                  java.lang.Iterable values) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  com.google.protobuf.AbstractMessageLite.Builder.addAll(
                      values, byHeroTargets_);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.addAllMessages(values);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder clearByHeroTargets() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargets_ = java.util.Collections.emptyList();
                  bitField0_ = (bitField0_ & ~0x00000004);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.clear();
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public Builder removeByHeroTargets(int index) {
                if (byHeroTargetsBuilder_ == null) {
                  ensureByHeroTargetsIsMutable();
                  byHeroTargets_.remove(index);
                  onChanged();
                } else {
                  byHeroTargetsBuilder_.remove(index);
                }
                return this;
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder getByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().getBuilder(index);
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                  int index) {
                if (byHeroTargetsBuilder_ == null) {
                  return byHeroTargets_.get(index);  } else {
                  return byHeroTargetsBuilder_.getMessageOrBuilder(index);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsOrBuilderList() {
                if (byHeroTargetsBuilder_ != null) {
                  return byHeroTargetsBuilder_.getMessageOrBuilderList();
                } else {
                  return java.util.Collections.unmodifiableList(byHeroTargets_);
                }
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder() {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder addByHeroTargetsBuilder(
                  int index) {
                return getByHeroTargetsFieldBuilder().addBuilder(
                    index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.getDefaultInstance());
              }
              /**
               * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget by_hero_targets = 2;
               */
              public java.util.List 
                   getByHeroTargetsBuilderList() {
                return getByHeroTargetsFieldBuilder().getBuilderList();
              }
              private com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder> 
                  getByHeroTargetsFieldBuilder() {
                if (byHeroTargetsBuilder_ == null) {
                  byHeroTargetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.ByHeroTargetOrBuilder>(
                          byHeroTargets_,
                          ((bitField0_ & 0x00000004) == 0x00000004),
                          getParentForChildren(),
                          isClean());
                  byHeroTargets_ = null;
                }
                return byHeroTargetsBuilder_;
              }

              // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)
            }

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

            // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility)
          }

          private int bitField0_;
          public static final int GAME_TIME_FIELD_NUMBER = 1;
          private int gameTime_;
          /**
           * optional int32 game_time = 1;
           */
          public boolean hasGameTime() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional int32 game_time = 1;
           */
          public int getGameTime() {
            return gameTime_;
          }

          public static final int DAMAGE_BY_ABILITY_FIELD_NUMBER = 2;
          private java.util.List damageByAbility_;
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public java.util.List getDamageByAbilityList() {
            return damageByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public java.util.List 
              getDamageByAbilityOrBuilderList() {
            return damageByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public int getDamageByAbilityCount() {
            return damageByAbility_.size();
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index) {
            return damageByAbility_.get(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
              int index) {
            return damageByAbility_.get(index);
          }

          public static final int HEALING_BY_ABILITY_FIELD_NUMBER = 3;
          private java.util.List healingByAbility_;
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          public java.util.List getHealingByAbilityList() {
            return healingByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          public java.util.List 
              getHealingByAbilityOrBuilderList() {
            return healingByAbility_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          public int getHealingByAbilityCount() {
            return healingByAbility_.size();
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility getHealingByAbility(int index) {
            return healingByAbility_.get(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder getHealingByAbilityOrBuilder(
              int index) {
            return healingByAbility_.get(index);
          }

          private void initFields() {
            gameTime_ = 0;
            damageByAbility_ = java.util.Collections.emptyList();
            healingByAbility_ = 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.writeInt32(1, gameTime_);
            }
            for (int i = 0; i < damageByAbility_.size(); i++) {
              output.writeMessage(2, damageByAbility_.get(i));
            }
            for (int i = 0; i < healingByAbility_.size(); i++) {
              output.writeMessage(3, healingByAbility_.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
                .computeInt32Size(1, gameTime_);
            }
            for (int i = 0; i < damageByAbility_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(2, damageByAbility_.get(i));
            }
            for (int i = 0; i < healingByAbility_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(3, healingByAbility_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment 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 CDOTAMatchPrivateMetadata.Team.Player.CombatSegment}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

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

            public Builder clear() {
              super.clear();
              gameTime_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              if (damageByAbilityBuilder_ == null) {
                damageByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                damageByAbilityBuilder_.clear();
              }
              if (healingByAbilityBuilder_ == null) {
                healingByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                healingByAbilityBuilder_.clear();
              }
              return this;
            }

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

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.gameTime_ = gameTime_;
              if (damageByAbilityBuilder_ == null) {
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  damageByAbility_ = java.util.Collections.unmodifiableList(damageByAbility_);
                  bitField0_ = (bitField0_ & ~0x00000002);
                }
                result.damageByAbility_ = damageByAbility_;
              } else {
                result.damageByAbility_ = damageByAbilityBuilder_.build();
              }
              if (healingByAbilityBuilder_ == null) {
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  healingByAbility_ = java.util.Collections.unmodifiableList(healingByAbility_);
                  bitField0_ = (bitField0_ & ~0x00000004);
                }
                result.healingByAbility_ = healingByAbility_;
              } else {
                result.healingByAbility_ = healingByAbilityBuilder_.build();
              }
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance()) return this;
              if (other.hasGameTime()) {
                setGameTime(other.getGameTime());
              }
              if (damageByAbilityBuilder_ == null) {
                if (!other.damageByAbility_.isEmpty()) {
                  if (damageByAbility_.isEmpty()) {
                    damageByAbility_ = other.damageByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000002);
                  } else {
                    ensureDamageByAbilityIsMutable();
                    damageByAbility_.addAll(other.damageByAbility_);
                  }
                  onChanged();
                }
              } else {
                if (!other.damageByAbility_.isEmpty()) {
                  if (damageByAbilityBuilder_.isEmpty()) {
                    damageByAbilityBuilder_.dispose();
                    damageByAbilityBuilder_ = null;
                    damageByAbility_ = other.damageByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000002);
                    damageByAbilityBuilder_ = 
                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                         getDamageByAbilityFieldBuilder() : null;
                  } else {
                    damageByAbilityBuilder_.addAllMessages(other.damageByAbility_);
                  }
                }
              }
              if (healingByAbilityBuilder_ == null) {
                if (!other.healingByAbility_.isEmpty()) {
                  if (healingByAbility_.isEmpty()) {
                    healingByAbility_ = other.healingByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                  } else {
                    ensureHealingByAbilityIsMutable();
                    healingByAbility_.addAll(other.healingByAbility_);
                  }
                  onChanged();
                }
              } else {
                if (!other.healingByAbility_.isEmpty()) {
                  if (healingByAbilityBuilder_.isEmpty()) {
                    healingByAbilityBuilder_.dispose();
                    healingByAbilityBuilder_ = null;
                    healingByAbility_ = other.healingByAbility_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                    healingByAbilityBuilder_ = 
                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                         getHealingByAbilityFieldBuilder() : null;
                  } else {
                    healingByAbilityBuilder_.addAllMessages(other.healingByAbility_);
                  }
                }
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int gameTime_ ;
            /**
             * optional int32 game_time = 1;
             */
            public boolean hasGameTime() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional int32 game_time = 1;
             */
            public int getGameTime() {
              return gameTime_;
            }
            /**
             * optional int32 game_time = 1;
             */
            public Builder setGameTime(int value) {
              bitField0_ |= 0x00000001;
              gameTime_ = value;
              onChanged();
              return this;
            }
            /**
             * optional int32 game_time = 1;
             */
            public Builder clearGameTime() {
              bitField0_ = (bitField0_ & ~0x00000001);
              gameTime_ = 0;
              onChanged();
              return this;
            }

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

            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder> damageByAbilityBuilder_;

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List getDamageByAbilityList() {
              if (damageByAbilityBuilder_ == null) {
                return java.util.Collections.unmodifiableList(damageByAbility_);
              } else {
                return damageByAbilityBuilder_.getMessageList();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public int getDamageByAbilityCount() {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.size();
              } else {
                return damageByAbilityBuilder_.getCount();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility getDamageByAbility(int index) {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.get(index);
              } else {
                return damageByAbilityBuilder_.getMessage(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder setDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.set(index, value);
                onChanged();
              } else {
                damageByAbilityBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder setDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.set(index, builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(value);
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility value) {
              if (damageByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(index, value);
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addDamageByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder builderForValue) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.add(index, builderForValue.build());
                onChanged();
              } else {
                damageByAbilityBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder addAllDamageByAbility(
                java.lang.Iterable values) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, damageByAbility_);
                onChanged();
              } else {
                damageByAbilityBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder clearDamageByAbility() {
              if (damageByAbilityBuilder_ == null) {
                damageByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
              } else {
                damageByAbilityBuilder_.clear();
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public Builder removeDamageByAbility(int index) {
              if (damageByAbilityBuilder_ == null) {
                ensureDamageByAbilityIsMutable();
                damageByAbility_.remove(index);
                onChanged();
              } else {
                damageByAbilityBuilder_.remove(index);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder getDamageByAbilityBuilder(
                int index) {
              return getDamageByAbilityFieldBuilder().getBuilder(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder getDamageByAbilityOrBuilder(
                int index) {
              if (damageByAbilityBuilder_ == null) {
                return damageByAbility_.get(index);  } else {
                return damageByAbilityBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List 
                 getDamageByAbilityOrBuilderList() {
              if (damageByAbilityBuilder_ != null) {
                return damageByAbilityBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(damageByAbility_);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder addDamageByAbilityBuilder() {
              return getDamageByAbilityFieldBuilder().addBuilder(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder addDamageByAbilityBuilder(
                int index) {
              return getDamageByAbilityFieldBuilder().addBuilder(
                  index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility damage_by_ability = 2;
             */
            public java.util.List 
                 getDamageByAbilityBuilderList() {
              return getDamageByAbilityFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder> 
                getDamageByAbilityFieldBuilder() {
              if (damageByAbilityBuilder_ == null) {
                damageByAbilityBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.DamageByAbilityOrBuilder>(
                        damageByAbility_,
                        ((bitField0_ & 0x00000002) == 0x00000002),
                        getParentForChildren(),
                        isClean());
                damageByAbility_ = null;
              }
              return damageByAbilityBuilder_;
            }

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

            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder> healingByAbilityBuilder_;

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public java.util.List getHealingByAbilityList() {
              if (healingByAbilityBuilder_ == null) {
                return java.util.Collections.unmodifiableList(healingByAbility_);
              } else {
                return healingByAbilityBuilder_.getMessageList();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public int getHealingByAbilityCount() {
              if (healingByAbilityBuilder_ == null) {
                return healingByAbility_.size();
              } else {
                return healingByAbilityBuilder_.getCount();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility getHealingByAbility(int index) {
              if (healingByAbilityBuilder_ == null) {
                return healingByAbility_.get(index);
              } else {
                return healingByAbilityBuilder_.getMessage(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder setHealingByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility value) {
              if (healingByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureHealingByAbilityIsMutable();
                healingByAbility_.set(index, value);
                onChanged();
              } else {
                healingByAbilityBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder setHealingByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder builderForValue) {
              if (healingByAbilityBuilder_ == null) {
                ensureHealingByAbilityIsMutable();
                healingByAbility_.set(index, builderForValue.build());
                onChanged();
              } else {
                healingByAbilityBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder addHealingByAbility(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility value) {
              if (healingByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureHealingByAbilityIsMutable();
                healingByAbility_.add(value);
                onChanged();
              } else {
                healingByAbilityBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder addHealingByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility value) {
              if (healingByAbilityBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureHealingByAbilityIsMutable();
                healingByAbility_.add(index, value);
                onChanged();
              } else {
                healingByAbilityBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder addHealingByAbility(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder builderForValue) {
              if (healingByAbilityBuilder_ == null) {
                ensureHealingByAbilityIsMutable();
                healingByAbility_.add(builderForValue.build());
                onChanged();
              } else {
                healingByAbilityBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder addHealingByAbility(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder builderForValue) {
              if (healingByAbilityBuilder_ == null) {
                ensureHealingByAbilityIsMutable();
                healingByAbility_.add(index, builderForValue.build());
                onChanged();
              } else {
                healingByAbilityBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder addAllHealingByAbility(
                java.lang.Iterable values) {
              if (healingByAbilityBuilder_ == null) {
                ensureHealingByAbilityIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, healingByAbility_);
                onChanged();
              } else {
                healingByAbilityBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder clearHealingByAbility() {
              if (healingByAbilityBuilder_ == null) {
                healingByAbility_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
              } else {
                healingByAbilityBuilder_.clear();
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public Builder removeHealingByAbility(int index) {
              if (healingByAbilityBuilder_ == null) {
                ensureHealingByAbilityIsMutable();
                healingByAbility_.remove(index);
                onChanged();
              } else {
                healingByAbilityBuilder_.remove(index);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder getHealingByAbilityBuilder(
                int index) {
              return getHealingByAbilityFieldBuilder().getBuilder(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder getHealingByAbilityOrBuilder(
                int index) {
              if (healingByAbilityBuilder_ == null) {
                return healingByAbility_.get(index);  } else {
                return healingByAbilityBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public java.util.List 
                 getHealingByAbilityOrBuilderList() {
              if (healingByAbilityBuilder_ != null) {
                return healingByAbilityBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(healingByAbility_);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder addHealingByAbilityBuilder() {
              return getHealingByAbilityFieldBuilder().addBuilder(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder addHealingByAbilityBuilder(
                int index) {
              return getHealingByAbilityFieldBuilder().addBuilder(
                  index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility healing_by_ability = 3;
             */
            public java.util.List 
                 getHealingByAbilityBuilderList() {
              return getHealingByAbilityFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder> 
                getHealingByAbilityFieldBuilder() {
              if (healingByAbilityBuilder_ == null) {
                healingByAbilityBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbility.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.HealingByAbilityOrBuilder>(
                        healingByAbility_,
                        ((bitField0_ & 0x00000004) == 0x00000004),
                        getParentForChildren(),
                        isClean());
                healingByAbility_ = null;
              }
              return healingByAbilityBuilder_;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
          }

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

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.CombatSegment)
        }

        public interface BuffRecordOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional uint32 buff_ability_id = 1;
           */
          boolean hasBuffAbilityId();
          /**
           * optional uint32 buff_ability_id = 1;
           */
          int getBuffAbilityId();

          /**
           * optional string buff_modifier_name = 3;
           */
          boolean hasBuffModifierName();
          /**
           * optional string buff_modifier_name = 3;
           */
          java.lang.String getBuffModifierName();
          /**
           * optional string buff_modifier_name = 3;
           */
          com.google.protobuf.ByteString
              getBuffModifierNameBytes();

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          java.util.List 
              getByHeroTargetsList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index);
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          int getByHeroTargetsCount();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          java.util.List 
              getByHeroTargetsOrBuilderList();
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
              int index);
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord}
         */
        public static final class BuffRecord extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
            BuffRecordOrBuilder {
          // Use BuffRecord.newBuilder() to construct.
          private BuffRecord(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private BuffRecord(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

          public BuffRecord getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private BuffRecord(
              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;
                    buffAbilityId_ = input.readUInt32();
                    break;
                  }
                  case 18: {
                    if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                      byHeroTargets_ = new java.util.ArrayList();
                      mutable_bitField0_ |= 0x00000004;
                    }
                    byHeroTargets_.add(input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.PARSER, extensionRegistry));
                    break;
                  }
                  case 26: {
                    com.google.protobuf.ByteString bs = input.readBytes();
                    bitField0_ |= 0x00000002;
                    buffModifierName_ = 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)) {
                byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
              }
              this.unknownFields = unknownFields.build();
              makeExtensionsImmutable();
            }
          }
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder.class);
          }

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

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

          public interface ByHeroTargetOrBuilder extends
              // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
              com.google.protobuf.MessageOrBuilder {

            /**
             * optional uint32 hero_id = 1;
             */
            boolean hasHeroId();
            /**
             * optional uint32 hero_id = 1;
             */
            int getHeroId();

            /**
             * optional float elapsed_duration = 2;
             */
            boolean hasElapsedDuration();
            /**
             * optional float elapsed_duration = 2;
             */
            float getElapsedDuration();

            /**
             * optional bool is_hidden = 3;
             */
            boolean hasIsHidden();
            /**
             * optional bool is_hidden = 3;
             */
            boolean getIsHidden();
          }
          /**
           * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget}
           */
          public static final class ByHeroTarget extends
              com.google.protobuf.GeneratedMessage implements
              // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
              ByHeroTargetOrBuilder {
            // Use ByHeroTarget.newBuilder() to construct.
            private ByHeroTarget(com.google.protobuf.GeneratedMessage.Builder builder) {
              super(builder);
              this.unknownFields = builder.getUnknownFields();
            }
            private ByHeroTarget(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

            public ByHeroTarget getDefaultInstanceForType() {
              return defaultInstance;
            }

            private final com.google.protobuf.UnknownFieldSet unknownFields;
            @java.lang.Override
            public final com.google.protobuf.UnknownFieldSet
                getUnknownFields() {
              return this.unknownFields;
            }
            private ByHeroTarget(
                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;
                      heroId_ = input.readUInt32();
                      break;
                    }
                    case 21: {
                      bitField0_ |= 0x00000002;
                      elapsedDuration_ = input.readFloat();
                      break;
                    }
                    case 24: {
                      bitField0_ |= 0x00000004;
                      isHidden_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder.class);
            }

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

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

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

            public static final int ELAPSED_DURATION_FIELD_NUMBER = 2;
            private float elapsedDuration_;
            /**
             * optional float elapsed_duration = 2;
             */
            public boolean hasElapsedDuration() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional float elapsed_duration = 2;
             */
            public float getElapsedDuration() {
              return elapsedDuration_;
            }

            public static final int IS_HIDDEN_FIELD_NUMBER = 3;
            private boolean isHidden_;
            /**
             * optional bool is_hidden = 3;
             */
            public boolean hasIsHidden() {
              return ((bitField0_ & 0x00000004) == 0x00000004);
            }
            /**
             * optional bool is_hidden = 3;
             */
            public boolean getIsHidden() {
              return isHidden_;
            }

            private void initFields() {
              heroId_ = 0;
              elapsedDuration_ = 0F;
              isHidden_ = 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, heroId_);
              }
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                output.writeFloat(2, elapsedDuration_);
              }
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                output.writeBool(3, isHidden_);
              }
              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, heroId_);
              }
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeFloatSize(2, elapsedDuration_);
              }
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                size += com.google.protobuf.CodedOutputStream
                  .computeBoolSize(3, isHidden_);
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              return PARSER.parseFrom(data, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseDelimitedFrom(
                java.io.InputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              return PARSER.parseDelimitedFrom(input, extensionRegistry);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
              return PARSER.parseFrom(input);
            }
            public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget 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 CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget}
             */
            public static final class Builder extends
                com.google.protobuf.GeneratedMessage.Builder implements
                // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder {
              public static final com.google.protobuf.Descriptors.Descriptor
                  getDescriptor() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
              }

              protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                  internalGetFieldAccessorTable() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder.class);
              }

              // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.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();
                heroId_ = 0;
                bitField0_ = (bitField0_ & ~0x00000001);
                elapsedDuration_ = 0F;
                bitField0_ = (bitField0_ & ~0x00000002);
                isHidden_ = false;
                bitField0_ = (bitField0_ & ~0x00000004);
                return this;
              }

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

              public com.google.protobuf.Descriptors.Descriptor
                  getDescriptorForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getDefaultInstanceForType() {
                return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance();
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget build() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget result = buildPartial();
                if (!result.isInitialized()) {
                  throw newUninitializedMessageException(result);
                }
                return result;
              }

              public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget buildPartial() {
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget(this);
                int from_bitField0_ = bitField0_;
                int to_bitField0_ = 0;
                if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                  to_bitField0_ |= 0x00000001;
                }
                result.heroId_ = heroId_;
                if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                  to_bitField0_ |= 0x00000002;
                }
                result.elapsedDuration_ = elapsedDuration_;
                if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
                  to_bitField0_ |= 0x00000004;
                }
                result.isHidden_ = isHidden_;
                result.bitField0_ = to_bitField0_;
                onBuilt();
                return result;
              }

              public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget) {
                  return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)other);
                } else {
                  super.mergeFrom(other);
                  return this;
                }
              }

              public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget other) {
                if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance()) return this;
                if (other.hasHeroId()) {
                  setHeroId(other.getHeroId());
                }
                if (other.hasElapsedDuration()) {
                  setElapsedDuration(other.getElapsedDuration());
                }
                if (other.hasIsHidden()) {
                  setIsHidden(other.getIsHidden());
                }
                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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget parsedMessage = null;
                try {
                  parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                  parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget) e.getUnfinishedMessage();
                  throw e;
                } finally {
                  if (parsedMessage != null) {
                    mergeFrom(parsedMessage);
                  }
                }
                return this;
              }
              private int bitField0_;

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

              private float elapsedDuration_ ;
              /**
               * optional float elapsed_duration = 2;
               */
              public boolean hasElapsedDuration() {
                return ((bitField0_ & 0x00000002) == 0x00000002);
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public float getElapsedDuration() {
                return elapsedDuration_;
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public Builder setElapsedDuration(float value) {
                bitField0_ |= 0x00000002;
                elapsedDuration_ = value;
                onChanged();
                return this;
              }
              /**
               * optional float elapsed_duration = 2;
               */
              public Builder clearElapsedDuration() {
                bitField0_ = (bitField0_ & ~0x00000002);
                elapsedDuration_ = 0F;
                onChanged();
                return this;
              }

              private boolean isHidden_ ;
              /**
               * optional bool is_hidden = 3;
               */
              public boolean hasIsHidden() {
                return ((bitField0_ & 0x00000004) == 0x00000004);
              }
              /**
               * optional bool is_hidden = 3;
               */
              public boolean getIsHidden() {
                return isHidden_;
              }
              /**
               * optional bool is_hidden = 3;
               */
              public Builder setIsHidden(boolean value) {
                bitField0_ |= 0x00000004;
                isHidden_ = value;
                onChanged();
                return this;
              }
              /**
               * optional bool is_hidden = 3;
               */
              public Builder clearIsHidden() {
                bitField0_ = (bitField0_ & ~0x00000004);
                isHidden_ = false;
                onChanged();
                return this;
              }

              // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
            }

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

            // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget)
          }

          private int bitField0_;
          public static final int BUFF_ABILITY_ID_FIELD_NUMBER = 1;
          private int buffAbilityId_;
          /**
           * optional uint32 buff_ability_id = 1;
           */
          public boolean hasBuffAbilityId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 buff_ability_id = 1;
           */
          public int getBuffAbilityId() {
            return buffAbilityId_;
          }

          public static final int BUFF_MODIFIER_NAME_FIELD_NUMBER = 3;
          private java.lang.Object buffModifierName_;
          /**
           * optional string buff_modifier_name = 3;
           */
          public boolean hasBuffModifierName() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional string buff_modifier_name = 3;
           */
          public java.lang.String getBuffModifierName() {
            java.lang.Object ref = buffModifierName_;
            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()) {
                buffModifierName_ = s;
              }
              return s;
            }
          }
          /**
           * optional string buff_modifier_name = 3;
           */
          public com.google.protobuf.ByteString
              getBuffModifierNameBytes() {
            java.lang.Object ref = buffModifierName_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              buffModifierName_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          public static final int BY_HERO_TARGETS_FIELD_NUMBER = 2;
          private java.util.List byHeroTargets_;
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public java.util.List getByHeroTargetsList() {
            return byHeroTargets_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public java.util.List 
              getByHeroTargetsOrBuilderList() {
            return byHeroTargets_;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public int getByHeroTargetsCount() {
            return byHeroTargets_.size();
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index) {
            return byHeroTargets_.get(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
              int index) {
            return byHeroTargets_.get(index);
          }

          private void initFields() {
            buffAbilityId_ = 0;
            buffModifierName_ = "";
            byHeroTargets_ = 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(1, buffAbilityId_);
            }
            for (int i = 0; i < byHeroTargets_.size(); i++) {
              output.writeMessage(2, byHeroTargets_.get(i));
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeBytes(3, getBuffModifierNameBytes());
            }
            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, buffAbilityId_);
            }
            for (int i = 0; i < byHeroTargets_.size(); i++) {
              size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(2, byHeroTargets_.get(i));
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeBytesSize(3, getBuffModifierNameBytes());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord 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 CDOTAMatchPrivateMetadata.Team.Player.BuffRecord}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.newBuilder()
            private Builder() {
              maybeForceBuilderInitialization();
            }

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

            public Builder clear() {
              super.clear();
              buffAbilityId_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              buffModifierName_ = "";
              bitField0_ = (bitField0_ & ~0x00000002);
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargets_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                byHeroTargetsBuilder_.clear();
              }
              return this;
            }

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

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.buffAbilityId_ = buffAbilityId_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.buffModifierName_ = buffModifierName_;
              if (byHeroTargetsBuilder_ == null) {
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  byHeroTargets_ = java.util.Collections.unmodifiableList(byHeroTargets_);
                  bitField0_ = (bitField0_ & ~0x00000004);
                }
                result.byHeroTargets_ = byHeroTargets_;
              } else {
                result.byHeroTargets_ = byHeroTargetsBuilder_.build();
              }
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance()) return this;
              if (other.hasBuffAbilityId()) {
                setBuffAbilityId(other.getBuffAbilityId());
              }
              if (other.hasBuffModifierName()) {
                bitField0_ |= 0x00000002;
                buffModifierName_ = other.buffModifierName_;
                onChanged();
              }
              if (byHeroTargetsBuilder_ == null) {
                if (!other.byHeroTargets_.isEmpty()) {
                  if (byHeroTargets_.isEmpty()) {
                    byHeroTargets_ = other.byHeroTargets_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                  } else {
                    ensureByHeroTargetsIsMutable();
                    byHeroTargets_.addAll(other.byHeroTargets_);
                  }
                  onChanged();
                }
              } else {
                if (!other.byHeroTargets_.isEmpty()) {
                  if (byHeroTargetsBuilder_.isEmpty()) {
                    byHeroTargetsBuilder_.dispose();
                    byHeroTargetsBuilder_ = null;
                    byHeroTargets_ = other.byHeroTargets_;
                    bitField0_ = (bitField0_ & ~0x00000004);
                    byHeroTargetsBuilder_ = 
                      com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                         getByHeroTargetsFieldBuilder() : null;
                  } else {
                    byHeroTargetsBuilder_.addAllMessages(other.byHeroTargets_);
                  }
                }
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int buffAbilityId_ ;
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public boolean hasBuffAbilityId() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public int getBuffAbilityId() {
              return buffAbilityId_;
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public Builder setBuffAbilityId(int value) {
              bitField0_ |= 0x00000001;
              buffAbilityId_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 buff_ability_id = 1;
             */
            public Builder clearBuffAbilityId() {
              bitField0_ = (bitField0_ & ~0x00000001);
              buffAbilityId_ = 0;
              onChanged();
              return this;
            }

            private java.lang.Object buffModifierName_ = "";
            /**
             * optional string buff_modifier_name = 3;
             */
            public boolean hasBuffModifierName() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public java.lang.String getBuffModifierName() {
              java.lang.Object ref = buffModifierName_;
              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()) {
                  buffModifierName_ = s;
                }
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public com.google.protobuf.ByteString
                getBuffModifierNameBytes() {
              java.lang.Object ref = buffModifierName_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                buffModifierName_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder setBuffModifierName(
                java.lang.String value) {
              if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
              buffModifierName_ = value;
              onChanged();
              return this;
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder clearBuffModifierName() {
              bitField0_ = (bitField0_ & ~0x00000002);
              buffModifierName_ = getDefaultInstance().getBuffModifierName();
              onChanged();
              return this;
            }
            /**
             * optional string buff_modifier_name = 3;
             */
            public Builder setBuffModifierNameBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
              buffModifierName_ = value;
              onChanged();
              return this;
            }

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

            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder> byHeroTargetsBuilder_;

            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List getByHeroTargetsList() {
              if (byHeroTargetsBuilder_ == null) {
                return java.util.Collections.unmodifiableList(byHeroTargets_);
              } else {
                return byHeroTargetsBuilder_.getMessageList();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public int getByHeroTargetsCount() {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.size();
              } else {
                return byHeroTargetsBuilder_.getCount();
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget getByHeroTargets(int index) {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.get(index);
              } else {
                return byHeroTargetsBuilder_.getMessage(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder setByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.set(index, value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.setMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder setByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.set(index, builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.setMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget value) {
              if (byHeroTargetsBuilder_ == null) {
                if (value == null) {
                  throw new NullPointerException();
                }
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(index, value);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(index, value);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addByHeroTargets(
                int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder builderForValue) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.add(index, builderForValue.build());
                onChanged();
              } else {
                byHeroTargetsBuilder_.addMessage(index, builderForValue.build());
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder addAllByHeroTargets(
                java.lang.Iterable values) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                com.google.protobuf.AbstractMessageLite.Builder.addAll(
                    values, byHeroTargets_);
                onChanged();
              } else {
                byHeroTargetsBuilder_.addAllMessages(values);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder clearByHeroTargets() {
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargets_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
              } else {
                byHeroTargetsBuilder_.clear();
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public Builder removeByHeroTargets(int index) {
              if (byHeroTargetsBuilder_ == null) {
                ensureByHeroTargetsIsMutable();
                byHeroTargets_.remove(index);
                onChanged();
              } else {
                byHeroTargetsBuilder_.remove(index);
              }
              return this;
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder getByHeroTargetsBuilder(
                int index) {
              return getByHeroTargetsFieldBuilder().getBuilder(index);
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder getByHeroTargetsOrBuilder(
                int index) {
              if (byHeroTargetsBuilder_ == null) {
                return byHeroTargets_.get(index);  } else {
                return byHeroTargetsBuilder_.getMessageOrBuilder(index);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                 getByHeroTargetsOrBuilderList() {
              if (byHeroTargetsBuilder_ != null) {
                return byHeroTargetsBuilder_.getMessageOrBuilderList();
              } else {
                return java.util.Collections.unmodifiableList(byHeroTargets_);
              }
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder addByHeroTargetsBuilder() {
              return getByHeroTargetsFieldBuilder().addBuilder(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder addByHeroTargetsBuilder(
                int index) {
              return getByHeroTargetsFieldBuilder().addBuilder(
                  index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.getDefaultInstance());
            }
            /**
             * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget by_hero_targets = 2;
             */
            public java.util.List 
                 getByHeroTargetsBuilderList() {
              return getByHeroTargetsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder> 
                getByHeroTargetsFieldBuilder() {
              if (byHeroTargetsBuilder_ == null) {
                byHeroTargetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTarget.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.ByHeroTargetOrBuilder>(
                        byHeroTargets_,
                        ((bitField0_ & 0x00000004) == 0x00000004),
                        getParentForChildren(),
                        isClean());
                byHeroTargets_ = null;
              }
              return byHeroTargetsBuilder_;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
          }

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

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.BuffRecord)
        }

        public interface GoldReceivedOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional uint32 creep = 1;
           */
          boolean hasCreep();
          /**
           * optional uint32 creep = 1;
           */
          int getCreep();

          /**
           * optional uint32 heroes = 2;
           */
          boolean hasHeroes();
          /**
           * optional uint32 heroes = 2;
           */
          int getHeroes();

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

          /**
           * optional uint32 passive = 4;
           */
          boolean hasPassive();
          /**
           * optional uint32 passive = 4;
           */
          int getPassive();

          /**
           * optional uint32 buildings = 5;
           */
          boolean hasBuildings();
          /**
           * optional uint32 buildings = 5;
           */
          int getBuildings();

          /**
           * optional uint32 abilities = 6;
           */
          boolean hasAbilities();
          /**
           * optional uint32 abilities = 6;
           */
          int getAbilities();

          /**
           * optional uint32 wards = 7;
           */
          boolean hasWards();
          /**
           * optional uint32 wards = 7;
           */
          int getWards();

          /**
           * optional uint32 other = 8;
           */
          boolean hasOther();
          /**
           * optional uint32 other = 8;
           */
          int getOther();
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.GoldReceived}
         */
        public static final class GoldReceived extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)
            GoldReceivedOrBuilder {
          // Use GoldReceived.newBuilder() to construct.
          private GoldReceived(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private GoldReceived(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

          public GoldReceived getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private GoldReceived(
              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;
                    creep_ = input.readUInt32();
                    break;
                  }
                  case 16: {
                    bitField0_ |= 0x00000002;
                    heroes_ = input.readUInt32();
                    break;
                  }
                  case 24: {
                    bitField0_ |= 0x00000004;
                    bountyRunes_ = input.readUInt32();
                    break;
                  }
                  case 32: {
                    bitField0_ |= 0x00000008;
                    passive_ = input.readUInt32();
                    break;
                  }
                  case 40: {
                    bitField0_ |= 0x00000010;
                    buildings_ = input.readUInt32();
                    break;
                  }
                  case 48: {
                    bitField0_ |= 0x00000020;
                    abilities_ = input.readUInt32();
                    break;
                  }
                  case 56: {
                    bitField0_ |= 0x00000040;
                    wards_ = input.readUInt32();
                    break;
                  }
                  case 64: {
                    bitField0_ |= 0x00000080;
                    other_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder.class);
          }

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

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

          private int bitField0_;
          public static final int CREEP_FIELD_NUMBER = 1;
          private int creep_;
          /**
           * optional uint32 creep = 1;
           */
          public boolean hasCreep() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 creep = 1;
           */
          public int getCreep() {
            return creep_;
          }

          public static final int HEROES_FIELD_NUMBER = 2;
          private int heroes_;
          /**
           * optional uint32 heroes = 2;
           */
          public boolean hasHeroes() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 heroes = 2;
           */
          public int getHeroes() {
            return heroes_;
          }

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

          public static final int PASSIVE_FIELD_NUMBER = 4;
          private int passive_;
          /**
           * optional uint32 passive = 4;
           */
          public boolean hasPassive() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 passive = 4;
           */
          public int getPassive() {
            return passive_;
          }

          public static final int BUILDINGS_FIELD_NUMBER = 5;
          private int buildings_;
          /**
           * optional uint32 buildings = 5;
           */
          public boolean hasBuildings() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 buildings = 5;
           */
          public int getBuildings() {
            return buildings_;
          }

          public static final int ABILITIES_FIELD_NUMBER = 6;
          private int abilities_;
          /**
           * optional uint32 abilities = 6;
           */
          public boolean hasAbilities() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 abilities = 6;
           */
          public int getAbilities() {
            return abilities_;
          }

          public static final int WARDS_FIELD_NUMBER = 7;
          private int wards_;
          /**
           * optional uint32 wards = 7;
           */
          public boolean hasWards() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * optional uint32 wards = 7;
           */
          public int getWards() {
            return wards_;
          }

          public static final int OTHER_FIELD_NUMBER = 8;
          private int other_;
          /**
           * optional uint32 other = 8;
           */
          public boolean hasOther() {
            return ((bitField0_ & 0x00000080) == 0x00000080);
          }
          /**
           * optional uint32 other = 8;
           */
          public int getOther() {
            return other_;
          }

          private void initFields() {
            creep_ = 0;
            heroes_ = 0;
            bountyRunes_ = 0;
            passive_ = 0;
            buildings_ = 0;
            abilities_ = 0;
            wards_ = 0;
            other_ = 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, creep_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeUInt32(2, heroes_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              output.writeUInt32(3, bountyRunes_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              output.writeUInt32(4, passive_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              output.writeUInt32(5, buildings_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              output.writeUInt32(6, abilities_);
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              output.writeUInt32(7, wards_);
            }
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              output.writeUInt32(8, other_);
            }
            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, creep_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(2, heroes_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(3, bountyRunes_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(4, passive_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(5, buildings_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(6, abilities_);
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(7, wards_);
            }
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(8, other_);
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived 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 CDOTAMatchPrivateMetadata.Team.Player.GoldReceived}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.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();
              creep_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              heroes_ = 0;
              bitField0_ = (bitField0_ & ~0x00000002);
              bountyRunes_ = 0;
              bitField0_ = (bitField0_ & ~0x00000004);
              passive_ = 0;
              bitField0_ = (bitField0_ & ~0x00000008);
              buildings_ = 0;
              bitField0_ = (bitField0_ & ~0x00000010);
              abilities_ = 0;
              bitField0_ = (bitField0_ & ~0x00000020);
              wards_ = 0;
              bitField0_ = (bitField0_ & ~0x00000040);
              other_ = 0;
              bitField0_ = (bitField0_ & ~0x00000080);
              return this;
            }

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

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.creep_ = creep_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.heroes_ = heroes_;
              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
                to_bitField0_ |= 0x00000004;
              }
              result.bountyRunes_ = bountyRunes_;
              if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
                to_bitField0_ |= 0x00000008;
              }
              result.passive_ = passive_;
              if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
                to_bitField0_ |= 0x00000010;
              }
              result.buildings_ = buildings_;
              if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
                to_bitField0_ |= 0x00000020;
              }
              result.abilities_ = abilities_;
              if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
                to_bitField0_ |= 0x00000040;
              }
              result.wards_ = wards_;
              if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
                to_bitField0_ |= 0x00000080;
              }
              result.other_ = other_;
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance()) return this;
              if (other.hasCreep()) {
                setCreep(other.getCreep());
              }
              if (other.hasHeroes()) {
                setHeroes(other.getHeroes());
              }
              if (other.hasBountyRunes()) {
                setBountyRunes(other.getBountyRunes());
              }
              if (other.hasPassive()) {
                setPassive(other.getPassive());
              }
              if (other.hasBuildings()) {
                setBuildings(other.getBuildings());
              }
              if (other.hasAbilities()) {
                setAbilities(other.getAbilities());
              }
              if (other.hasWards()) {
                setWards(other.getWards());
              }
              if (other.hasOther()) {
                setOther(other.getOther());
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int creep_ ;
            /**
             * optional uint32 creep = 1;
             */
            public boolean hasCreep() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 creep = 1;
             */
            public int getCreep() {
              return creep_;
            }
            /**
             * optional uint32 creep = 1;
             */
            public Builder setCreep(int value) {
              bitField0_ |= 0x00000001;
              creep_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 creep = 1;
             */
            public Builder clearCreep() {
              bitField0_ = (bitField0_ & ~0x00000001);
              creep_ = 0;
              onChanged();
              return this;
            }

            private int heroes_ ;
            /**
             * optional uint32 heroes = 2;
             */
            public boolean hasHeroes() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 heroes = 2;
             */
            public int getHeroes() {
              return heroes_;
            }
            /**
             * optional uint32 heroes = 2;
             */
            public Builder setHeroes(int value) {
              bitField0_ |= 0x00000002;
              heroes_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 heroes = 2;
             */
            public Builder clearHeroes() {
              bitField0_ = (bitField0_ & ~0x00000002);
              heroes_ = 0;
              onChanged();
              return this;
            }

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

            private int passive_ ;
            /**
             * optional uint32 passive = 4;
             */
            public boolean hasPassive() {
              return ((bitField0_ & 0x00000008) == 0x00000008);
            }
            /**
             * optional uint32 passive = 4;
             */
            public int getPassive() {
              return passive_;
            }
            /**
             * optional uint32 passive = 4;
             */
            public Builder setPassive(int value) {
              bitField0_ |= 0x00000008;
              passive_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 passive = 4;
             */
            public Builder clearPassive() {
              bitField0_ = (bitField0_ & ~0x00000008);
              passive_ = 0;
              onChanged();
              return this;
            }

            private int buildings_ ;
            /**
             * optional uint32 buildings = 5;
             */
            public boolean hasBuildings() {
              return ((bitField0_ & 0x00000010) == 0x00000010);
            }
            /**
             * optional uint32 buildings = 5;
             */
            public int getBuildings() {
              return buildings_;
            }
            /**
             * optional uint32 buildings = 5;
             */
            public Builder setBuildings(int value) {
              bitField0_ |= 0x00000010;
              buildings_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 buildings = 5;
             */
            public Builder clearBuildings() {
              bitField0_ = (bitField0_ & ~0x00000010);
              buildings_ = 0;
              onChanged();
              return this;
            }

            private int abilities_ ;
            /**
             * optional uint32 abilities = 6;
             */
            public boolean hasAbilities() {
              return ((bitField0_ & 0x00000020) == 0x00000020);
            }
            /**
             * optional uint32 abilities = 6;
             */
            public int getAbilities() {
              return abilities_;
            }
            /**
             * optional uint32 abilities = 6;
             */
            public Builder setAbilities(int value) {
              bitField0_ |= 0x00000020;
              abilities_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 abilities = 6;
             */
            public Builder clearAbilities() {
              bitField0_ = (bitField0_ & ~0x00000020);
              abilities_ = 0;
              onChanged();
              return this;
            }

            private int wards_ ;
            /**
             * optional uint32 wards = 7;
             */
            public boolean hasWards() {
              return ((bitField0_ & 0x00000040) == 0x00000040);
            }
            /**
             * optional uint32 wards = 7;
             */
            public int getWards() {
              return wards_;
            }
            /**
             * optional uint32 wards = 7;
             */
            public Builder setWards(int value) {
              bitField0_ |= 0x00000040;
              wards_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 wards = 7;
             */
            public Builder clearWards() {
              bitField0_ = (bitField0_ & ~0x00000040);
              wards_ = 0;
              onChanged();
              return this;
            }

            private int other_ ;
            /**
             * optional uint32 other = 8;
             */
            public boolean hasOther() {
              return ((bitField0_ & 0x00000080) == 0x00000080);
            }
            /**
             * optional uint32 other = 8;
             */
            public int getOther() {
              return other_;
            }
            /**
             * optional uint32 other = 8;
             */
            public Builder setOther(int value) {
              bitField0_ |= 0x00000080;
              other_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 other = 8;
             */
            public Builder clearOther() {
              bitField0_ = (bitField0_ & ~0x00000080);
              other_ = 0;
              onChanged();
              return this;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)
          }

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

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.GoldReceived)
        }

        public interface XPReceivedOrBuilder extends
            // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Player.XPReceived)
            com.google.protobuf.MessageOrBuilder {

          /**
           * optional uint32 creep = 1;
           */
          boolean hasCreep();
          /**
           * optional uint32 creep = 1;
           */
          int getCreep();

          /**
           * optional uint32 heroes = 2;
           */
          boolean hasHeroes();
          /**
           * optional uint32 heroes = 2;
           */
          int getHeroes();

          /**
           * optional uint32 roshan = 3;
           */
          boolean hasRoshan();
          /**
           * optional uint32 roshan = 3;
           */
          int getRoshan();

          /**
           * optional uint32 tome_of_knowledge = 4;
           */
          boolean hasTomeOfKnowledge();
          /**
           * optional uint32 tome_of_knowledge = 4;
           */
          int getTomeOfKnowledge();

          /**
           * optional uint32 outpost = 5;
           */
          boolean hasOutpost();
          /**
           * optional uint32 outpost = 5;
           */
          int getOutpost();

          /**
           * optional uint32 other = 6;
           */
          boolean hasOther();
          /**
           * optional uint32 other = 6;
           */
          int getOther();
        }
        /**
         * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Player.XPReceived}
         */
        public static final class XPReceived extends
            com.google.protobuf.GeneratedMessage implements
            // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Player.XPReceived)
            XPReceivedOrBuilder {
          // Use XPReceived.newBuilder() to construct.
          private XPReceived(com.google.protobuf.GeneratedMessage.Builder builder) {
            super(builder);
            this.unknownFields = builder.getUnknownFields();
          }
          private XPReceived(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

          public XPReceived getDefaultInstanceForType() {
            return defaultInstance;
          }

          private final com.google.protobuf.UnknownFieldSet unknownFields;
          @java.lang.Override
          public final com.google.protobuf.UnknownFieldSet
              getUnknownFields() {
            return this.unknownFields;
          }
          private XPReceived(
              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;
                    creep_ = input.readUInt32();
                    break;
                  }
                  case 16: {
                    bitField0_ |= 0x00000002;
                    heroes_ = input.readUInt32();
                    break;
                  }
                  case 24: {
                    bitField0_ |= 0x00000004;
                    roshan_ = input.readUInt32();
                    break;
                  }
                  case 32: {
                    bitField0_ |= 0x00000008;
                    tomeOfKnowledge_ = input.readUInt32();
                    break;
                  }
                  case 40: {
                    bitField0_ |= 0x00000010;
                    outpost_ = input.readUInt32();
                    break;
                  }
                  case 48: {
                    bitField0_ |= 0x00000020;
                    other_ = 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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder.class);
          }

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

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

          private int bitField0_;
          public static final int CREEP_FIELD_NUMBER = 1;
          private int creep_;
          /**
           * optional uint32 creep = 1;
           */
          public boolean hasCreep() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * optional uint32 creep = 1;
           */
          public int getCreep() {
            return creep_;
          }

          public static final int HEROES_FIELD_NUMBER = 2;
          private int heroes_;
          /**
           * optional uint32 heroes = 2;
           */
          public boolean hasHeroes() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 heroes = 2;
           */
          public int getHeroes() {
            return heroes_;
          }

          public static final int ROSHAN_FIELD_NUMBER = 3;
          private int roshan_;
          /**
           * optional uint32 roshan = 3;
           */
          public boolean hasRoshan() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 roshan = 3;
           */
          public int getRoshan() {
            return roshan_;
          }

          public static final int TOME_OF_KNOWLEDGE_FIELD_NUMBER = 4;
          private int tomeOfKnowledge_;
          /**
           * optional uint32 tome_of_knowledge = 4;
           */
          public boolean hasTomeOfKnowledge() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional uint32 tome_of_knowledge = 4;
           */
          public int getTomeOfKnowledge() {
            return tomeOfKnowledge_;
          }

          public static final int OUTPOST_FIELD_NUMBER = 5;
          private int outpost_;
          /**
           * optional uint32 outpost = 5;
           */
          public boolean hasOutpost() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * optional uint32 outpost = 5;
           */
          public int getOutpost() {
            return outpost_;
          }

          public static final int OTHER_FIELD_NUMBER = 6;
          private int other_;
          /**
           * optional uint32 other = 6;
           */
          public boolean hasOther() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * optional uint32 other = 6;
           */
          public int getOther() {
            return other_;
          }

          private void initFields() {
            creep_ = 0;
            heroes_ = 0;
            roshan_ = 0;
            tomeOfKnowledge_ = 0;
            outpost_ = 0;
            other_ = 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, creep_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              output.writeUInt32(2, heroes_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              output.writeUInt32(3, roshan_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              output.writeUInt32(4, tomeOfKnowledge_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              output.writeUInt32(5, outpost_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              output.writeUInt32(6, other_);
            }
            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, creep_);
            }
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(2, heroes_);
            }
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(3, roshan_);
            }
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(4, tomeOfKnowledge_);
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(5, outpost_);
            }
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              size += com.google.protobuf.CodedOutputStream
                .computeUInt32Size(6, other_);
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseDelimitedFrom(
              java.io.InputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return PARSER.parseDelimitedFrom(input, extensionRegistry);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return PARSER.parseFrom(input);
          }
          public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived 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 CDOTAMatchPrivateMetadata.Team.Player.XPReceived}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessage.Builder implements
              // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player.XPReceived)
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor;
            }

            protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder.class);
            }

            // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.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();
              creep_ = 0;
              bitField0_ = (bitField0_ & ~0x00000001);
              heroes_ = 0;
              bitField0_ = (bitField0_ & ~0x00000002);
              roshan_ = 0;
              bitField0_ = (bitField0_ & ~0x00000004);
              tomeOfKnowledge_ = 0;
              bitField0_ = (bitField0_ & ~0x00000008);
              outpost_ = 0;
              bitField0_ = (bitField0_ & ~0x00000010);
              other_ = 0;
              bitField0_ = (bitField0_ & ~0x00000020);
              return this;
            }

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

            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived getDefaultInstanceForType() {
              return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance();
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived build() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived buildPartial() {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived(this);
              int from_bitField0_ = bitField0_;
              int to_bitField0_ = 0;
              if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
                to_bitField0_ |= 0x00000001;
              }
              result.creep_ = creep_;
              if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
                to_bitField0_ |= 0x00000002;
              }
              result.heroes_ = heroes_;
              if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
                to_bitField0_ |= 0x00000004;
              }
              result.roshan_ = roshan_;
              if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
                to_bitField0_ |= 0x00000008;
              }
              result.tomeOfKnowledge_ = tomeOfKnowledge_;
              if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
                to_bitField0_ |= 0x00000010;
              }
              result.outpost_ = outpost_;
              if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
                to_bitField0_ |= 0x00000020;
              }
              result.other_ = other_;
              result.bitField0_ = to_bitField0_;
              onBuilt();
              return result;
            }

            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived) {
                return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived other) {
              if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance()) return this;
              if (other.hasCreep()) {
                setCreep(other.getCreep());
              }
              if (other.hasHeroes()) {
                setHeroes(other.getHeroes());
              }
              if (other.hasRoshan()) {
                setRoshan(other.getRoshan());
              }
              if (other.hasTomeOfKnowledge()) {
                setTomeOfKnowledge(other.getTomeOfKnowledge());
              }
              if (other.hasOutpost()) {
                setOutpost(other.getOutpost());
              }
              if (other.hasOther()) {
                setOther(other.getOther());
              }
              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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived parsedMessage = null;
              try {
                parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived) e.getUnfinishedMessage();
                throw e;
              } finally {
                if (parsedMessage != null) {
                  mergeFrom(parsedMessage);
                }
              }
              return this;
            }
            private int bitField0_;

            private int creep_ ;
            /**
             * optional uint32 creep = 1;
             */
            public boolean hasCreep() {
              return ((bitField0_ & 0x00000001) == 0x00000001);
            }
            /**
             * optional uint32 creep = 1;
             */
            public int getCreep() {
              return creep_;
            }
            /**
             * optional uint32 creep = 1;
             */
            public Builder setCreep(int value) {
              bitField0_ |= 0x00000001;
              creep_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 creep = 1;
             */
            public Builder clearCreep() {
              bitField0_ = (bitField0_ & ~0x00000001);
              creep_ = 0;
              onChanged();
              return this;
            }

            private int heroes_ ;
            /**
             * optional uint32 heroes = 2;
             */
            public boolean hasHeroes() {
              return ((bitField0_ & 0x00000002) == 0x00000002);
            }
            /**
             * optional uint32 heroes = 2;
             */
            public int getHeroes() {
              return heroes_;
            }
            /**
             * optional uint32 heroes = 2;
             */
            public Builder setHeroes(int value) {
              bitField0_ |= 0x00000002;
              heroes_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 heroes = 2;
             */
            public Builder clearHeroes() {
              bitField0_ = (bitField0_ & ~0x00000002);
              heroes_ = 0;
              onChanged();
              return this;
            }

            private int roshan_ ;
            /**
             * optional uint32 roshan = 3;
             */
            public boolean hasRoshan() {
              return ((bitField0_ & 0x00000004) == 0x00000004);
            }
            /**
             * optional uint32 roshan = 3;
             */
            public int getRoshan() {
              return roshan_;
            }
            /**
             * optional uint32 roshan = 3;
             */
            public Builder setRoshan(int value) {
              bitField0_ |= 0x00000004;
              roshan_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 roshan = 3;
             */
            public Builder clearRoshan() {
              bitField0_ = (bitField0_ & ~0x00000004);
              roshan_ = 0;
              onChanged();
              return this;
            }

            private int tomeOfKnowledge_ ;
            /**
             * optional uint32 tome_of_knowledge = 4;
             */
            public boolean hasTomeOfKnowledge() {
              return ((bitField0_ & 0x00000008) == 0x00000008);
            }
            /**
             * optional uint32 tome_of_knowledge = 4;
             */
            public int getTomeOfKnowledge() {
              return tomeOfKnowledge_;
            }
            /**
             * optional uint32 tome_of_knowledge = 4;
             */
            public Builder setTomeOfKnowledge(int value) {
              bitField0_ |= 0x00000008;
              tomeOfKnowledge_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 tome_of_knowledge = 4;
             */
            public Builder clearTomeOfKnowledge() {
              bitField0_ = (bitField0_ & ~0x00000008);
              tomeOfKnowledge_ = 0;
              onChanged();
              return this;
            }

            private int outpost_ ;
            /**
             * optional uint32 outpost = 5;
             */
            public boolean hasOutpost() {
              return ((bitField0_ & 0x00000010) == 0x00000010);
            }
            /**
             * optional uint32 outpost = 5;
             */
            public int getOutpost() {
              return outpost_;
            }
            /**
             * optional uint32 outpost = 5;
             */
            public Builder setOutpost(int value) {
              bitField0_ |= 0x00000010;
              outpost_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 outpost = 5;
             */
            public Builder clearOutpost() {
              bitField0_ = (bitField0_ & ~0x00000010);
              outpost_ = 0;
              onChanged();
              return this;
            }

            private int other_ ;
            /**
             * optional uint32 other = 6;
             */
            public boolean hasOther() {
              return ((bitField0_ & 0x00000020) == 0x00000020);
            }
            /**
             * optional uint32 other = 6;
             */
            public int getOther() {
              return other_;
            }
            /**
             * optional uint32 other = 6;
             */
            public Builder setOther(int value) {
              bitField0_ |= 0x00000020;
              other_ = value;
              onChanged();
              return this;
            }
            /**
             * optional uint32 other = 6;
             */
            public Builder clearOther() {
              bitField0_ = (bitField0_ & ~0x00000020);
              other_ = 0;
              onChanged();
              return this;
            }

            // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player.XPReceived)
          }

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

          // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player.XPReceived)
        }

        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 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 POSITION_STREAM_FIELD_NUMBER = 3;
        private com.google.protobuf.ByteString positionStream_;
        /**
         * optional bytes position_stream = 3;
         */
        public boolean hasPositionStream() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional bytes position_stream = 3;
         */
        public com.google.protobuf.ByteString getPositionStream() {
          return positionStream_;
        }

        public static final int COMBAT_SEGMENTS_FIELD_NUMBER = 4;
        private java.util.List combatSegments_;
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public java.util.List getCombatSegmentsList() {
          return combatSegments_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public java.util.List 
            getCombatSegmentsOrBuilderList() {
          return combatSegments_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public int getCombatSegmentsCount() {
          return combatSegments_.size();
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index) {
          return combatSegments_.get(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
            int index) {
          return combatSegments_.get(index);
        }

        public static final int DAMAGE_UNIT_NAMES_FIELD_NUMBER = 5;
        private com.google.protobuf.LazyStringList damageUnitNames_;
        /**
         * repeated string damage_unit_names = 5;
         */
        public com.google.protobuf.ProtocolStringList
            getDamageUnitNamesList() {
          return damageUnitNames_;
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public int getDamageUnitNamesCount() {
          return damageUnitNames_.size();
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public java.lang.String getDamageUnitNames(int index) {
          return damageUnitNames_.get(index);
        }
        /**
         * repeated string damage_unit_names = 5;
         */
        public com.google.protobuf.ByteString
            getDamageUnitNamesBytes(int index) {
          return damageUnitNames_.getByteString(index);
        }

        public static final int BUFF_RECORDS_FIELD_NUMBER = 6;
        private java.util.List buffRecords_;
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public java.util.List getBuffRecordsList() {
          return buffRecords_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public java.util.List 
            getBuffRecordsOrBuilderList() {
          return buffRecords_;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public int getBuffRecordsCount() {
          return buffRecords_.size();
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index) {
          return buffRecords_.get(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
            int index) {
          return buffRecords_.get(index);
        }

        public static final int GRAPH_KILLS_FIELD_NUMBER = 7;
        private java.util.List graphKills_;
        /**
         * repeated float graph_kills = 7;
         */
        public java.util.List
            getGraphKillsList() {
          return graphKills_;
        }
        /**
         * repeated float graph_kills = 7;
         */
        public int getGraphKillsCount() {
          return graphKills_.size();
        }
        /**
         * repeated float graph_kills = 7;
         */
        public float getGraphKills(int index) {
          return graphKills_.get(index);
        }

        public static final int GRAPH_DEATHS_FIELD_NUMBER = 8;
        private java.util.List graphDeaths_;
        /**
         * repeated float graph_deaths = 8;
         */
        public java.util.List
            getGraphDeathsList() {
          return graphDeaths_;
        }
        /**
         * repeated float graph_deaths = 8;
         */
        public int getGraphDeathsCount() {
          return graphDeaths_.size();
        }
        /**
         * repeated float graph_deaths = 8;
         */
        public float getGraphDeaths(int index) {
          return graphDeaths_.get(index);
        }

        public static final int GRAPH_ASSISTS_FIELD_NUMBER = 9;
        private java.util.List graphAssists_;
        /**
         * repeated float graph_assists = 9;
         */
        public java.util.List
            getGraphAssistsList() {
          return graphAssists_;
        }
        /**
         * repeated float graph_assists = 9;
         */
        public int getGraphAssistsCount() {
          return graphAssists_.size();
        }
        /**
         * repeated float graph_assists = 9;
         */
        public float getGraphAssists(int index) {
          return graphAssists_.get(index);
        }

        public static final int GRAPH_LASTHITS_FIELD_NUMBER = 10;
        private java.util.List graphLasthits_;
        /**
         * repeated float graph_lasthits = 10;
         */
        public java.util.List
            getGraphLasthitsList() {
          return graphLasthits_;
        }
        /**
         * repeated float graph_lasthits = 10;
         */
        public int getGraphLasthitsCount() {
          return graphLasthits_.size();
        }
        /**
         * repeated float graph_lasthits = 10;
         */
        public float getGraphLasthits(int index) {
          return graphLasthits_.get(index);
        }

        public static final int GRAPH_DENIES_FIELD_NUMBER = 11;
        private java.util.List graphDenies_;
        /**
         * repeated float graph_denies = 11;
         */
        public java.util.List
            getGraphDeniesList() {
          return graphDenies_;
        }
        /**
         * repeated float graph_denies = 11;
         */
        public int getGraphDeniesCount() {
          return graphDenies_.size();
        }
        /**
         * repeated float graph_denies = 11;
         */
        public float getGraphDenies(int index) {
          return graphDenies_.get(index);
        }

        public static final int GOLD_RECEIVED_FIELD_NUMBER = 12;
        private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived goldReceived_;
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        public boolean hasGoldReceived() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived getGoldReceived() {
          return goldReceived_;
        }
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder getGoldReceivedOrBuilder() {
          return goldReceived_;
        }

        public static final int XP_RECEIVED_FIELD_NUMBER = 13;
        private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived xpReceived_;
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        public boolean hasXpReceived() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived getXpReceived() {
          return xpReceived_;
        }
        /**
         * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder getXpReceivedOrBuilder() {
          return xpReceived_;
        }

        private void initFields() {
          accountId_ = 0;
          playerSlot_ = 0;
          positionStream_ = com.google.protobuf.ByteString.EMPTY;
          combatSegments_ = java.util.Collections.emptyList();
          damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          buffRecords_ = java.util.Collections.emptyList();
          graphKills_ = java.util.Collections.emptyList();
          graphDeaths_ = java.util.Collections.emptyList();
          graphAssists_ = java.util.Collections.emptyList();
          graphLasthits_ = java.util.Collections.emptyList();
          graphDenies_ = java.util.Collections.emptyList();
          goldReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance();
          xpReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance();
        }
        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.writeBytes(3, positionStream_);
          }
          for (int i = 0; i < combatSegments_.size(); i++) {
            output.writeMessage(4, combatSegments_.get(i));
          }
          for (int i = 0; i < damageUnitNames_.size(); i++) {
            output.writeBytes(5, damageUnitNames_.getByteString(i));
          }
          for (int i = 0; i < buffRecords_.size(); i++) {
            output.writeMessage(6, buffRecords_.get(i));
          }
          for (int i = 0; i < graphKills_.size(); i++) {
            output.writeFloat(7, graphKills_.get(i));
          }
          for (int i = 0; i < graphDeaths_.size(); i++) {
            output.writeFloat(8, graphDeaths_.get(i));
          }
          for (int i = 0; i < graphAssists_.size(); i++) {
            output.writeFloat(9, graphAssists_.get(i));
          }
          for (int i = 0; i < graphLasthits_.size(); i++) {
            output.writeFloat(10, graphLasthits_.get(i));
          }
          for (int i = 0; i < graphDenies_.size(); i++) {
            output.writeFloat(11, graphDenies_.get(i));
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeMessage(12, goldReceived_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            output.writeMessage(13, xpReceived_);
          }
          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
              .computeBytesSize(3, positionStream_);
          }
          for (int i = 0; i < combatSegments_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, combatSegments_.get(i));
          }
          {
            int dataSize = 0;
            for (int i = 0; i < damageUnitNames_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeBytesSizeNoTag(damageUnitNames_.getByteString(i));
            }
            size += dataSize;
            size += 1 * getDamageUnitNamesList().size();
          }
          for (int i = 0; i < buffRecords_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(6, buffRecords_.get(i));
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphKillsList().size();
            size += dataSize;
            size += 1 * getGraphKillsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphDeathsList().size();
            size += dataSize;
            size += 1 * getGraphDeathsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphAssistsList().size();
            size += dataSize;
            size += 1 * getGraphAssistsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphLasthitsList().size();
            size += dataSize;
            size += 1 * getGraphLasthitsList().size();
          }
          {
            int dataSize = 0;
            dataSize = 4 * getGraphDeniesList().size();
            size += dataSize;
            size += 1 * getGraphDeniesList().size();
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(12, goldReceived_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(13, xpReceived_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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 CDOTAMatchPrivateMetadata.Team.Player}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Player)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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) {
              getCombatSegmentsFieldBuilder();
              getBuffRecordsFieldBuilder();
              getGoldReceivedFieldBuilder();
              getXpReceivedFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }

          public Builder clear() {
            super.clear();
            accountId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            playerSlot_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            positionStream_ = com.google.protobuf.ByteString.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000004);
            if (combatSegmentsBuilder_ == null) {
              combatSegments_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              combatSegmentsBuilder_.clear();
            }
            damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000010);
            if (buffRecordsBuilder_ == null) {
              buffRecords_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              buffRecordsBuilder_.clear();
            }
            graphKills_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            graphDeaths_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            graphAssists_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            graphLasthits_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            graphDenies_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
            if (goldReceivedBuilder_ == null) {
              goldReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance();
            } else {
              goldReceivedBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000800);
            if (xpReceivedBuilder_ == null) {
              xpReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance();
            } else {
              xpReceivedBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00001000);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player(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.playerSlot_ = playerSlot_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.positionStream_ = positionStream_;
            if (combatSegmentsBuilder_ == null) {
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                combatSegments_ = java.util.Collections.unmodifiableList(combatSegments_);
                bitField0_ = (bitField0_ & ~0x00000008);
              }
              result.combatSegments_ = combatSegments_;
            } else {
              result.combatSegments_ = combatSegmentsBuilder_.build();
            }
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = damageUnitNames_.getUnmodifiableView();
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.damageUnitNames_ = damageUnitNames_;
            if (buffRecordsBuilder_ == null) {
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                buffRecords_ = java.util.Collections.unmodifiableList(buffRecords_);
                bitField0_ = (bitField0_ & ~0x00000020);
              }
              result.buffRecords_ = buffRecords_;
            } else {
              result.buffRecords_ = buffRecordsBuilder_.build();
            }
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = java.util.Collections.unmodifiableList(graphKills_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.graphKills_ = graphKills_;
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = java.util.Collections.unmodifiableList(graphDeaths_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.graphDeaths_ = graphDeaths_;
            if (((bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = java.util.Collections.unmodifiableList(graphAssists_);
              bitField0_ = (bitField0_ & ~0x00000100);
            }
            result.graphAssists_ = graphAssists_;
            if (((bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = java.util.Collections.unmodifiableList(graphLasthits_);
              bitField0_ = (bitField0_ & ~0x00000200);
            }
            result.graphLasthits_ = graphLasthits_;
            if (((bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = java.util.Collections.unmodifiableList(graphDenies_);
              bitField0_ = (bitField0_ & ~0x00000400);
            }
            result.graphDenies_ = graphDenies_;
            if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
              to_bitField0_ |= 0x00000008;
            }
            if (goldReceivedBuilder_ == null) {
              result.goldReceived_ = goldReceived_;
            } else {
              result.goldReceived_ = goldReceivedBuilder_.build();
            }
            if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
              to_bitField0_ |= 0x00000010;
            }
            if (xpReceivedBuilder_ == null) {
              result.xpReceived_ = xpReceived_;
            } else {
              result.xpReceived_ = xpReceivedBuilder_.build();
            }
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

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

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance()) return this;
            if (other.hasAccountId()) {
              setAccountId(other.getAccountId());
            }
            if (other.hasPlayerSlot()) {
              setPlayerSlot(other.getPlayerSlot());
            }
            if (other.hasPositionStream()) {
              setPositionStream(other.getPositionStream());
            }
            if (combatSegmentsBuilder_ == null) {
              if (!other.combatSegments_.isEmpty()) {
                if (combatSegments_.isEmpty()) {
                  combatSegments_ = other.combatSegments_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                } else {
                  ensureCombatSegmentsIsMutable();
                  combatSegments_.addAll(other.combatSegments_);
                }
                onChanged();
              }
            } else {
              if (!other.combatSegments_.isEmpty()) {
                if (combatSegmentsBuilder_.isEmpty()) {
                  combatSegmentsBuilder_.dispose();
                  combatSegmentsBuilder_ = null;
                  combatSegments_ = other.combatSegments_;
                  bitField0_ = (bitField0_ & ~0x00000008);
                  combatSegmentsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getCombatSegmentsFieldBuilder() : null;
                } else {
                  combatSegmentsBuilder_.addAllMessages(other.combatSegments_);
                }
              }
            }
            if (!other.damageUnitNames_.isEmpty()) {
              if (damageUnitNames_.isEmpty()) {
                damageUnitNames_ = other.damageUnitNames_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureDamageUnitNamesIsMutable();
                damageUnitNames_.addAll(other.damageUnitNames_);
              }
              onChanged();
            }
            if (buffRecordsBuilder_ == null) {
              if (!other.buffRecords_.isEmpty()) {
                if (buffRecords_.isEmpty()) {
                  buffRecords_ = other.buffRecords_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                } else {
                  ensureBuffRecordsIsMutable();
                  buffRecords_.addAll(other.buffRecords_);
                }
                onChanged();
              }
            } else {
              if (!other.buffRecords_.isEmpty()) {
                if (buffRecordsBuilder_.isEmpty()) {
                  buffRecordsBuilder_.dispose();
                  buffRecordsBuilder_ = null;
                  buffRecords_ = other.buffRecords_;
                  bitField0_ = (bitField0_ & ~0x00000020);
                  buffRecordsBuilder_ = 
                    com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                       getBuffRecordsFieldBuilder() : null;
                } else {
                  buffRecordsBuilder_.addAllMessages(other.buffRecords_);
                }
              }
            }
            if (!other.graphKills_.isEmpty()) {
              if (graphKills_.isEmpty()) {
                graphKills_ = other.graphKills_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureGraphKillsIsMutable();
                graphKills_.addAll(other.graphKills_);
              }
              onChanged();
            }
            if (!other.graphDeaths_.isEmpty()) {
              if (graphDeaths_.isEmpty()) {
                graphDeaths_ = other.graphDeaths_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureGraphDeathsIsMutable();
                graphDeaths_.addAll(other.graphDeaths_);
              }
              onChanged();
            }
            if (!other.graphAssists_.isEmpty()) {
              if (graphAssists_.isEmpty()) {
                graphAssists_ = other.graphAssists_;
                bitField0_ = (bitField0_ & ~0x00000100);
              } else {
                ensureGraphAssistsIsMutable();
                graphAssists_.addAll(other.graphAssists_);
              }
              onChanged();
            }
            if (!other.graphLasthits_.isEmpty()) {
              if (graphLasthits_.isEmpty()) {
                graphLasthits_ = other.graphLasthits_;
                bitField0_ = (bitField0_ & ~0x00000200);
              } else {
                ensureGraphLasthitsIsMutable();
                graphLasthits_.addAll(other.graphLasthits_);
              }
              onChanged();
            }
            if (!other.graphDenies_.isEmpty()) {
              if (graphDenies_.isEmpty()) {
                graphDenies_ = other.graphDenies_;
                bitField0_ = (bitField0_ & ~0x00000400);
              } else {
                ensureGraphDeniesIsMutable();
                graphDenies_.addAll(other.graphDenies_);
              }
              onChanged();
            }
            if (other.hasGoldReceived()) {
              mergeGoldReceived(other.getGoldReceived());
            }
            if (other.hasXpReceived()) {
              mergeXpReceived(other.getXpReceived());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player) 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 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 com.google.protobuf.ByteString positionStream_ = com.google.protobuf.ByteString.EMPTY;
          /**
           * optional bytes position_stream = 3;
           */
          public boolean hasPositionStream() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional bytes position_stream = 3;
           */
          public com.google.protobuf.ByteString getPositionStream() {
            return positionStream_;
          }
          /**
           * optional bytes position_stream = 3;
           */
          public Builder setPositionStream(com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
            positionStream_ = value;
            onChanged();
            return this;
          }
          /**
           * optional bytes position_stream = 3;
           */
          public Builder clearPositionStream() {
            bitField0_ = (bitField0_ & ~0x00000004);
            positionStream_ = getDefaultInstance().getPositionStream();
            onChanged();
            return this;
          }

          private java.util.List combatSegments_ =
            java.util.Collections.emptyList();
          private void ensureCombatSegmentsIsMutable() {
            if (!((bitField0_ & 0x00000008) == 0x00000008)) {
              combatSegments_ = new java.util.ArrayList(combatSegments_);
              bitField0_ |= 0x00000008;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder> combatSegmentsBuilder_;

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List getCombatSegmentsList() {
            if (combatSegmentsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(combatSegments_);
            } else {
              return combatSegmentsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public int getCombatSegmentsCount() {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.size();
            } else {
              return combatSegmentsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment getCombatSegments(int index) {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.get(index);
            } else {
              return combatSegmentsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder setCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.set(index, value);
              onChanged();
            } else {
              combatSegmentsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder setCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.set(index, builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(value);
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment value) {
            if (combatSegmentsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(index, value);
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addCombatSegments(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder builderForValue) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.add(index, builderForValue.build());
              onChanged();
            } else {
              combatSegmentsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder addAllCombatSegments(
              java.lang.Iterable values) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, combatSegments_);
              onChanged();
            } else {
              combatSegmentsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder clearCombatSegments() {
            if (combatSegmentsBuilder_ == null) {
              combatSegments_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000008);
              onChanged();
            } else {
              combatSegmentsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public Builder removeCombatSegments(int index) {
            if (combatSegmentsBuilder_ == null) {
              ensureCombatSegmentsIsMutable();
              combatSegments_.remove(index);
              onChanged();
            } else {
              combatSegmentsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder getCombatSegmentsBuilder(
              int index) {
            return getCombatSegmentsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder getCombatSegmentsOrBuilder(
              int index) {
            if (combatSegmentsBuilder_ == null) {
              return combatSegments_.get(index);  } else {
              return combatSegmentsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List 
               getCombatSegmentsOrBuilderList() {
            if (combatSegmentsBuilder_ != null) {
              return combatSegmentsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(combatSegments_);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder addCombatSegmentsBuilder() {
            return getCombatSegmentsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder addCombatSegmentsBuilder(
              int index) {
            return getCombatSegmentsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.CombatSegment combat_segments = 4;
           */
          public java.util.List 
               getCombatSegmentsBuilderList() {
            return getCombatSegmentsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder> 
              getCombatSegmentsFieldBuilder() {
            if (combatSegmentsBuilder_ == null) {
              combatSegmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegment.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.CombatSegmentOrBuilder>(
                      combatSegments_,
                      ((bitField0_ & 0x00000008) == 0x00000008),
                      getParentForChildren(),
                      isClean());
              combatSegments_ = null;
            }
            return combatSegmentsBuilder_;
          }

          private com.google.protobuf.LazyStringList damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          private void ensureDamageUnitNamesIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              damageUnitNames_ = new com.google.protobuf.LazyStringArrayList(damageUnitNames_);
              bitField0_ |= 0x00000010;
             }
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public com.google.protobuf.ProtocolStringList
              getDamageUnitNamesList() {
            return damageUnitNames_.getUnmodifiableView();
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public int getDamageUnitNamesCount() {
            return damageUnitNames_.size();
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public java.lang.String getDamageUnitNames(int index) {
            return damageUnitNames_.get(index);
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public com.google.protobuf.ByteString
              getDamageUnitNamesBytes(int index) {
            return damageUnitNames_.getByteString(index);
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder setDamageUnitNames(
              int index, java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addDamageUnitNames(
              java.lang.String value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addAllDamageUnitNames(
              java.lang.Iterable values) {
            ensureDamageUnitNamesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, damageUnitNames_);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder clearDamageUnitNames() {
            damageUnitNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
            return this;
          }
          /**
           * repeated string damage_unit_names = 5;
           */
          public Builder addDamageUnitNamesBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
    throw new NullPointerException();
  }
  ensureDamageUnitNamesIsMutable();
            damageUnitNames_.add(value);
            onChanged();
            return this;
          }

          private java.util.List buffRecords_ =
            java.util.Collections.emptyList();
          private void ensureBuffRecordsIsMutable() {
            if (!((bitField0_ & 0x00000020) == 0x00000020)) {
              buffRecords_ = new java.util.ArrayList(buffRecords_);
              bitField0_ |= 0x00000020;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder> buffRecordsBuilder_;

          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List getBuffRecordsList() {
            if (buffRecordsBuilder_ == null) {
              return java.util.Collections.unmodifiableList(buffRecords_);
            } else {
              return buffRecordsBuilder_.getMessageList();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public int getBuffRecordsCount() {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.size();
            } else {
              return buffRecordsBuilder_.getCount();
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord getBuffRecords(int index) {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.get(index);
            } else {
              return buffRecordsBuilder_.getMessage(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder setBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.set(index, value);
              onChanged();
            } else {
              buffRecordsBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder setBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.set(index, builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.add(value);
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord value) {
            if (buffRecordsBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureBuffRecordsIsMutable();
              buffRecords_.add(index, value);
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.add(builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addBuffRecords(
              int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder builderForValue) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.add(index, builderForValue.build());
              onChanged();
            } else {
              buffRecordsBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder addAllBuffRecords(
              java.lang.Iterable values) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, buffRecords_);
              onChanged();
            } else {
              buffRecordsBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder clearBuffRecords() {
            if (buffRecordsBuilder_ == null) {
              buffRecords_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000020);
              onChanged();
            } else {
              buffRecordsBuilder_.clear();
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public Builder removeBuffRecords(int index) {
            if (buffRecordsBuilder_ == null) {
              ensureBuffRecordsIsMutable();
              buffRecords_.remove(index);
              onChanged();
            } else {
              buffRecordsBuilder_.remove(index);
            }
            return this;
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder getBuffRecordsBuilder(
              int index) {
            return getBuffRecordsFieldBuilder().getBuilder(index);
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder getBuffRecordsOrBuilder(
              int index) {
            if (buffRecordsBuilder_ == null) {
              return buffRecords_.get(index);  } else {
              return buffRecordsBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List 
               getBuffRecordsOrBuilderList() {
            if (buffRecordsBuilder_ != null) {
              return buffRecordsBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(buffRecords_);
            }
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder addBuffRecordsBuilder() {
            return getBuffRecordsFieldBuilder().addBuilder(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder addBuffRecordsBuilder(
              int index) {
            return getBuffRecordsFieldBuilder().addBuilder(
                index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.getDefaultInstance());
          }
          /**
           * repeated .CDOTAMatchPrivateMetadata.Team.Player.BuffRecord buff_records = 6;
           */
          public java.util.List 
               getBuffRecordsBuilderList() {
            return getBuffRecordsFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder> 
              getBuffRecordsFieldBuilder() {
            if (buffRecordsBuilder_ == null) {
              buffRecordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecord.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.BuffRecordOrBuilder>(
                      buffRecords_,
                      ((bitField0_ & 0x00000020) == 0x00000020),
                      getParentForChildren(),
                      isClean());
              buffRecords_ = null;
            }
            return buffRecordsBuilder_;
          }

          private java.util.List graphKills_ = java.util.Collections.emptyList();
          private void ensureGraphKillsIsMutable() {
            if (!((bitField0_ & 0x00000040) == 0x00000040)) {
              graphKills_ = new java.util.ArrayList(graphKills_);
              bitField0_ |= 0x00000040;
             }
          }
          /**
           * repeated float graph_kills = 7;
           */
          public java.util.List
              getGraphKillsList() {
            return java.util.Collections.unmodifiableList(graphKills_);
          }
          /**
           * repeated float graph_kills = 7;
           */
          public int getGraphKillsCount() {
            return graphKills_.size();
          }
          /**
           * repeated float graph_kills = 7;
           */
          public float getGraphKills(int index) {
            return graphKills_.get(index);
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder setGraphKills(
              int index, float value) {
            ensureGraphKillsIsMutable();
            graphKills_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder addGraphKills(float value) {
            ensureGraphKillsIsMutable();
            graphKills_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder addAllGraphKills(
              java.lang.Iterable values) {
            ensureGraphKillsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphKills_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_kills = 7;
           */
          public Builder clearGraphKills() {
            graphKills_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
            return this;
          }

          private java.util.List graphDeaths_ = java.util.Collections.emptyList();
          private void ensureGraphDeathsIsMutable() {
            if (!((bitField0_ & 0x00000080) == 0x00000080)) {
              graphDeaths_ = new java.util.ArrayList(graphDeaths_);
              bitField0_ |= 0x00000080;
             }
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public java.util.List
              getGraphDeathsList() {
            return java.util.Collections.unmodifiableList(graphDeaths_);
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public int getGraphDeathsCount() {
            return graphDeaths_.size();
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public float getGraphDeaths(int index) {
            return graphDeaths_.get(index);
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder setGraphDeaths(
              int index, float value) {
            ensureGraphDeathsIsMutable();
            graphDeaths_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder addGraphDeaths(float value) {
            ensureGraphDeathsIsMutable();
            graphDeaths_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder addAllGraphDeaths(
              java.lang.Iterable values) {
            ensureGraphDeathsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphDeaths_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_deaths = 8;
           */
          public Builder clearGraphDeaths() {
            graphDeaths_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
            return this;
          }

          private java.util.List graphAssists_ = java.util.Collections.emptyList();
          private void ensureGraphAssistsIsMutable() {
            if (!((bitField0_ & 0x00000100) == 0x00000100)) {
              graphAssists_ = new java.util.ArrayList(graphAssists_);
              bitField0_ |= 0x00000100;
             }
          }
          /**
           * repeated float graph_assists = 9;
           */
          public java.util.List
              getGraphAssistsList() {
            return java.util.Collections.unmodifiableList(graphAssists_);
          }
          /**
           * repeated float graph_assists = 9;
           */
          public int getGraphAssistsCount() {
            return graphAssists_.size();
          }
          /**
           * repeated float graph_assists = 9;
           */
          public float getGraphAssists(int index) {
            return graphAssists_.get(index);
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder setGraphAssists(
              int index, float value) {
            ensureGraphAssistsIsMutable();
            graphAssists_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder addGraphAssists(float value) {
            ensureGraphAssistsIsMutable();
            graphAssists_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder addAllGraphAssists(
              java.lang.Iterable values) {
            ensureGraphAssistsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphAssists_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_assists = 9;
           */
          public Builder clearGraphAssists() {
            graphAssists_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            onChanged();
            return this;
          }

          private java.util.List graphLasthits_ = java.util.Collections.emptyList();
          private void ensureGraphLasthitsIsMutable() {
            if (!((bitField0_ & 0x00000200) == 0x00000200)) {
              graphLasthits_ = new java.util.ArrayList(graphLasthits_);
              bitField0_ |= 0x00000200;
             }
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public java.util.List
              getGraphLasthitsList() {
            return java.util.Collections.unmodifiableList(graphLasthits_);
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public int getGraphLasthitsCount() {
            return graphLasthits_.size();
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public float getGraphLasthits(int index) {
            return graphLasthits_.get(index);
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder setGraphLasthits(
              int index, float value) {
            ensureGraphLasthitsIsMutable();
            graphLasthits_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder addGraphLasthits(float value) {
            ensureGraphLasthitsIsMutable();
            graphLasthits_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder addAllGraphLasthits(
              java.lang.Iterable values) {
            ensureGraphLasthitsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphLasthits_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_lasthits = 10;
           */
          public Builder clearGraphLasthits() {
            graphLasthits_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            onChanged();
            return this;
          }

          private java.util.List graphDenies_ = java.util.Collections.emptyList();
          private void ensureGraphDeniesIsMutable() {
            if (!((bitField0_ & 0x00000400) == 0x00000400)) {
              graphDenies_ = new java.util.ArrayList(graphDenies_);
              bitField0_ |= 0x00000400;
             }
          }
          /**
           * repeated float graph_denies = 11;
           */
          public java.util.List
              getGraphDeniesList() {
            return java.util.Collections.unmodifiableList(graphDenies_);
          }
          /**
           * repeated float graph_denies = 11;
           */
          public int getGraphDeniesCount() {
            return graphDenies_.size();
          }
          /**
           * repeated float graph_denies = 11;
           */
          public float getGraphDenies(int index) {
            return graphDenies_.get(index);
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder setGraphDenies(
              int index, float value) {
            ensureGraphDeniesIsMutable();
            graphDenies_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder addGraphDenies(float value) {
            ensureGraphDeniesIsMutable();
            graphDenies_.add(value);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder addAllGraphDenies(
              java.lang.Iterable values) {
            ensureGraphDeniesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, graphDenies_);
            onChanged();
            return this;
          }
          /**
           * repeated float graph_denies = 11;
           */
          public Builder clearGraphDenies() {
            graphDenies_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
            onChanged();
            return this;
          }

          private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived goldReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder> goldReceivedBuilder_;
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public boolean hasGoldReceived() {
            return ((bitField0_ & 0x00000800) == 0x00000800);
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived getGoldReceived() {
            if (goldReceivedBuilder_ == null) {
              return goldReceived_;
            } else {
              return goldReceivedBuilder_.getMessage();
            }
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public Builder setGoldReceived(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived value) {
            if (goldReceivedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              goldReceived_ = value;
              onChanged();
            } else {
              goldReceivedBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00000800;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public Builder setGoldReceived(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder builderForValue) {
            if (goldReceivedBuilder_ == null) {
              goldReceived_ = builderForValue.build();
              onChanged();
            } else {
              goldReceivedBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00000800;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public Builder mergeGoldReceived(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived value) {
            if (goldReceivedBuilder_ == null) {
              if (((bitField0_ & 0x00000800) == 0x00000800) &&
                  goldReceived_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance()) {
                goldReceived_ =
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.newBuilder(goldReceived_).mergeFrom(value).buildPartial();
              } else {
                goldReceived_ = value;
              }
              onChanged();
            } else {
              goldReceivedBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00000800;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public Builder clearGoldReceived() {
            if (goldReceivedBuilder_ == null) {
              goldReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.getDefaultInstance();
              onChanged();
            } else {
              goldReceivedBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000800);
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder getGoldReceivedBuilder() {
            bitField0_ |= 0x00000800;
            onChanged();
            return getGoldReceivedFieldBuilder().getBuilder();
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder getGoldReceivedOrBuilder() {
            if (goldReceivedBuilder_ != null) {
              return goldReceivedBuilder_.getMessageOrBuilder();
            } else {
              return goldReceived_;
            }
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.GoldReceived gold_received = 12;
           */
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder> 
              getGoldReceivedFieldBuilder() {
            if (goldReceivedBuilder_ == null) {
              goldReceivedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.GoldReceivedOrBuilder>(
                      getGoldReceived(),
                      getParentForChildren(),
                      isClean());
              goldReceived_ = null;
            }
            return goldReceivedBuilder_;
          }

          private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived xpReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder> xpReceivedBuilder_;
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public boolean hasXpReceived() {
            return ((bitField0_ & 0x00001000) == 0x00001000);
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived getXpReceived() {
            if (xpReceivedBuilder_ == null) {
              return xpReceived_;
            } else {
              return xpReceivedBuilder_.getMessage();
            }
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public Builder setXpReceived(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived value) {
            if (xpReceivedBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              xpReceived_ = value;
              onChanged();
            } else {
              xpReceivedBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public Builder setXpReceived(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder builderForValue) {
            if (xpReceivedBuilder_ == null) {
              xpReceived_ = builderForValue.build();
              onChanged();
            } else {
              xpReceivedBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public Builder mergeXpReceived(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived value) {
            if (xpReceivedBuilder_ == null) {
              if (((bitField0_ & 0x00001000) == 0x00001000) &&
                  xpReceived_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance()) {
                xpReceived_ =
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.newBuilder(xpReceived_).mergeFrom(value).buildPartial();
              } else {
                xpReceived_ = value;
              }
              onChanged();
            } else {
              xpReceivedBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00001000;
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public Builder clearXpReceived() {
            if (xpReceivedBuilder_ == null) {
              xpReceived_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.getDefaultInstance();
              onChanged();
            } else {
              xpReceivedBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00001000);
            return this;
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder getXpReceivedBuilder() {
            bitField0_ |= 0x00001000;
            onChanged();
            return getXpReceivedFieldBuilder().getBuilder();
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder getXpReceivedOrBuilder() {
            if (xpReceivedBuilder_ != null) {
              return xpReceivedBuilder_.getMessageOrBuilder();
            } else {
              return xpReceived_;
            }
          }
          /**
           * optional .CDOTAMatchPrivateMetadata.Team.Player.XPReceived xp_received = 13;
           */
          private com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder> 
              getXpReceivedFieldBuilder() {
            if (xpReceivedBuilder_ == null) {
              xpReceivedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceived.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.XPReceivedOrBuilder>(
                      getXpReceived(),
                      getParentForChildren(),
                      isClean());
              xpReceived_ = null;
            }
            return xpReceivedBuilder_;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Player)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Player)
      }

      public interface BuildingOrBuilder extends
          // @@protoc_insertion_point(interface_extends:CDOTAMatchPrivateMetadata.Team.Building)
          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();

        /**
         * optional uint32 position_quant_x = 2;
         */
        boolean hasPositionQuantX();
        /**
         * optional uint32 position_quant_x = 2;
         */
        int getPositionQuantX();

        /**
         * optional uint32 position_quant_y = 3;
         */
        boolean hasPositionQuantY();
        /**
         * optional uint32 position_quant_y = 3;
         */
        int getPositionQuantY();

        /**
         * optional float death_time = 4;
         */
        boolean hasDeathTime();
        /**
         * optional float death_time = 4;
         */
        float getDeathTime();
      }
      /**
       * Protobuf type {@code CDOTAMatchPrivateMetadata.Team.Building}
       */
      public static final class Building extends
          com.google.protobuf.GeneratedMessage implements
          // @@protoc_insertion_point(message_implements:CDOTAMatchPrivateMetadata.Team.Building)
          BuildingOrBuilder {
        // Use Building.newBuilder() to construct.
        private Building(com.google.protobuf.GeneratedMessage.Builder builder) {
          super(builder);
          this.unknownFields = builder.getUnknownFields();
        }
        private Building(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

        public Building getDefaultInstanceForType() {
          return defaultInstance;
        }

        private final com.google.protobuf.UnknownFieldSet unknownFields;
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
            getUnknownFields() {
          return this.unknownFields;
        }
        private Building(
            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: {
                  bitField0_ |= 0x00000002;
                  positionQuantX_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  positionQuantY_ = input.readUInt32();
                  break;
                }
                case 37: {
                  bitField0_ |= 0x00000008;
                  deathTime_ = input.readFloat();
                  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.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder.class);
        }

        public static com.google.protobuf.Parser PARSER =
            new com.google.protobuf.AbstractParser() {
          public Building parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Building(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 POSITION_QUANT_X_FIELD_NUMBER = 2;
        private int positionQuantX_;
        /**
         * optional uint32 position_quant_x = 2;
         */
        public boolean hasPositionQuantX() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * optional uint32 position_quant_x = 2;
         */
        public int getPositionQuantX() {
          return positionQuantX_;
        }

        public static final int POSITION_QUANT_Y_FIELD_NUMBER = 3;
        private int positionQuantY_;
        /**
         * optional uint32 position_quant_y = 3;
         */
        public boolean hasPositionQuantY() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * optional uint32 position_quant_y = 3;
         */
        public int getPositionQuantY() {
          return positionQuantY_;
        }

        public static final int DEATH_TIME_FIELD_NUMBER = 4;
        private float deathTime_;
        /**
         * optional float death_time = 4;
         */
        public boolean hasDeathTime() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * optional float death_time = 4;
         */
        public float getDeathTime() {
          return deathTime_;
        }

        private void initFields() {
          unitName_ = "";
          positionQuantX_ = 0;
          positionQuantY_ = 0;
          deathTime_ = 0F;
        }
        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());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, positionQuantX_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, positionQuantY_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeFloat(4, deathTime_);
          }
          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());
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, positionQuantX_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, positionQuantY_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeFloatSize(4, deathTime_);
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return PARSER.parseDelimitedFrom(input, extensionRegistry);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return PARSER.parseFrom(input);
        }
        public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building 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 CDOTAMatchPrivateMetadata.Team.Building}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessage.Builder implements
            // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team.Building)
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
          }

          protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder.class);
          }

          // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.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);
            positionQuantX_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            positionQuantY_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            deathTime_ = 0F;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }

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

          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getDefaultInstanceForType() {
            return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance();
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building build() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building buildPartial() {
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.unitName_ = unitName_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.positionQuantX_ = positionQuantX_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.positionQuantY_ = positionQuantY_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.deathTime_ = deathTime_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }

          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building) {
              return mergeFrom((skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building other) {
            if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance()) return this;
            if (other.hasUnitName()) {
              bitField0_ |= 0x00000001;
              unitName_ = other.unitName_;
              onChanged();
            }
            if (other.hasPositionQuantX()) {
              setPositionQuantX(other.getPositionQuantX());
            }
            if (other.hasPositionQuantY()) {
              setPositionQuantY(other.getPositionQuantY());
            }
            if (other.hasDeathTime()) {
              setDeathTime(other.getDeathTime());
            }
            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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building) 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 int positionQuantX_ ;
          /**
           * optional uint32 position_quant_x = 2;
           */
          public boolean hasPositionQuantX() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public int getPositionQuantX() {
            return positionQuantX_;
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public Builder setPositionQuantX(int value) {
            bitField0_ |= 0x00000002;
            positionQuantX_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 position_quant_x = 2;
           */
          public Builder clearPositionQuantX() {
            bitField0_ = (bitField0_ & ~0x00000002);
            positionQuantX_ = 0;
            onChanged();
            return this;
          }

          private int positionQuantY_ ;
          /**
           * optional uint32 position_quant_y = 3;
           */
          public boolean hasPositionQuantY() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public int getPositionQuantY() {
            return positionQuantY_;
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public Builder setPositionQuantY(int value) {
            bitField0_ |= 0x00000004;
            positionQuantY_ = value;
            onChanged();
            return this;
          }
          /**
           * optional uint32 position_quant_y = 3;
           */
          public Builder clearPositionQuantY() {
            bitField0_ = (bitField0_ & ~0x00000004);
            positionQuantY_ = 0;
            onChanged();
            return this;
          }

          private float deathTime_ ;
          /**
           * optional float death_time = 4;
           */
          public boolean hasDeathTime() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * optional float death_time = 4;
           */
          public float getDeathTime() {
            return deathTime_;
          }
          /**
           * optional float death_time = 4;
           */
          public Builder setDeathTime(float value) {
            bitField0_ |= 0x00000008;
            deathTime_ = value;
            onChanged();
            return this;
          }
          /**
           * optional float death_time = 4;
           */
          public Builder clearDeathTime() {
            bitField0_ = (bitField0_ & ~0x00000008);
            deathTime_ = 0F;
            onChanged();
            return this;
          }

          // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team.Building)
        }

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

        // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team.Building)
      }

      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 PLAYERS_FIELD_NUMBER = 2;
      private java.util.List players_;
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public java.util.List getPlayersList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public java.util.List 
          getPlayersOrBuilderList() {
        return players_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public int getPlayersCount() {
        return players_.size();
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index) {
        return players_.get(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
          int index) {
        return players_.get(index);
      }

      public static final int BUILDINGS_FIELD_NUMBER = 3;
      private java.util.List buildings_;
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public java.util.List getBuildingsList() {
        return buildings_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public java.util.List 
          getBuildingsOrBuilderList() {
        return buildings_;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public int getBuildingsCount() {
        return buildings_.size();
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index) {
        return buildings_.get(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
          int index) {
        return buildings_.get(index);
      }

      private void initFields() {
        dotaTeam_ = 0;
        players_ = java.util.Collections.emptyList();
        buildings_ = 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(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          output.writeMessage(2, players_.get(i));
        }
        for (int i = 0; i < buildings_.size(); i++) {
          output.writeMessage(3, buildings_.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(1, dotaTeam_);
        }
        for (int i = 0; i < players_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, players_.get(i));
        }
        for (int i = 0; i < buildings_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, buildings_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team 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 CDOTAMatchPrivateMetadata.Team}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder implements
          // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata.Team)
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder.class);
        }

        // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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();
            getBuildingsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          dotaTeam_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            playersBuilder_.clear();
          }
          if (buildingsBuilder_ == null) {
            buildings_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            buildingsBuilder_.clear();
          }
          return this;
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getDefaultInstanceForType() {
          return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance();
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team build() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team buildPartial() {
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.dotaTeam_ = dotaTeam_;
          if (playersBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              players_ = java.util.Collections.unmodifiableList(players_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.players_ = players_;
          } else {
            result.players_ = playersBuilder_.build();
          }
          if (buildingsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              buildings_ = java.util.Collections.unmodifiableList(buildings_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.buildings_ = buildings_;
          } else {
            result.buildings_ = buildingsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team other) {
          if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance()) return this;
          if (other.hasDotaTeam()) {
            setDotaTeam(other.getDotaTeam());
          }
          if (playersBuilder_ == null) {
            if (!other.players_.isEmpty()) {
              if (players_.isEmpty()) {
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensurePlayersIsMutable();
                players_.addAll(other.players_);
              }
              onChanged();
            }
          } else {
            if (!other.players_.isEmpty()) {
              if (playersBuilder_.isEmpty()) {
                playersBuilder_.dispose();
                playersBuilder_ = null;
                players_ = other.players_;
                bitField0_ = (bitField0_ & ~0x00000002);
                playersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPlayersFieldBuilder() : null;
              } else {
                playersBuilder_.addAllMessages(other.players_);
              }
            }
          }
          if (buildingsBuilder_ == null) {
            if (!other.buildings_.isEmpty()) {
              if (buildings_.isEmpty()) {
                buildings_ = other.buildings_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureBuildingsIsMutable();
                buildings_.addAll(other.buildings_);
              }
              onChanged();
            }
          } else {
            if (!other.buildings_.isEmpty()) {
              if (buildingsBuilder_.isEmpty()) {
                buildingsBuilder_.dispose();
                buildingsBuilder_ = null;
                buildings_ = other.buildings_;
                bitField0_ = (bitField0_ & ~0x00000004);
                buildingsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getBuildingsFieldBuilder() : null;
              } else {
                buildingsBuilder_.addAllMessages(other.buildings_);
              }
            }
          }
          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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team) 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 java.util.List players_ =
          java.util.Collections.emptyList();
        private void ensurePlayersIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            players_ = new java.util.ArrayList(players_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder> playersBuilder_;

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List getPlayersList() {
          if (playersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(players_);
          } else {
            return playersBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public int getPlayersCount() {
          if (playersBuilder_ == null) {
            return players_.size();
          } else {
            return playersBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player getPlayers(int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);
          } else {
            return playersBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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 .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder setPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.set(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player value) {
          if (playersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePlayersIsMutable();
            players_.add(value);
            onChanged();
          } else {
            playersBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.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 .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder addPlayers(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder builderForValue) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.add(index, builderForValue.build());
            onChanged();
          } else {
            playersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        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 .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder clearPlayers() {
          if (playersBuilder_ == null) {
            players_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            playersBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public Builder removePlayers(int index) {
          if (playersBuilder_ == null) {
            ensurePlayersIsMutable();
            players_.remove(index);
            onChanged();
          } else {
            playersBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder getPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder getPlayersOrBuilder(
            int index) {
          if (playersBuilder_ == null) {
            return players_.get(index);  } else {
            return playersBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersOrBuilderList() {
          if (playersBuilder_ != null) {
            return playersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(players_);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder addPlayersBuilder() {
          return getPlayersFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder addPlayersBuilder(
            int index) {
          return getPlayersFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Player players = 2;
         */
        public java.util.List 
             getPlayersBuilderList() {
          return getPlayersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder> 
            getPlayersFieldBuilder() {
          if (playersBuilder_ == null) {
            playersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Player.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.PlayerOrBuilder>(
                    players_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            players_ = null;
          }
          return playersBuilder_;
        }

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

        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder> buildingsBuilder_;

        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List getBuildingsList() {
          if (buildingsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(buildings_);
          } else {
            return buildingsBuilder_.getMessageList();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public int getBuildingsCount() {
          if (buildingsBuilder_ == null) {
            return buildings_.size();
          } else {
            return buildingsBuilder_.getCount();
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building getBuildings(int index) {
          if (buildingsBuilder_ == null) {
            return buildings_.get(index);
          } else {
            return buildingsBuilder_.getMessage(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder setBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.set(index, value);
            onChanged();
          } else {
            buildingsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder setBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.set(index, builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.add(value);
            onChanged();
          } else {
            buildingsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building value) {
          if (buildingsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBuildingsIsMutable();
            buildings_.add(index, value);
            onChanged();
          } else {
            buildingsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.add(builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addBuildings(
            int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder builderForValue) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.add(index, builderForValue.build());
            onChanged();
          } else {
            buildingsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder addAllBuildings(
            java.lang.Iterable values) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, buildings_);
            onChanged();
          } else {
            buildingsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder clearBuildings() {
          if (buildingsBuilder_ == null) {
            buildings_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            buildingsBuilder_.clear();
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public Builder removeBuildings(int index) {
          if (buildingsBuilder_ == null) {
            ensureBuildingsIsMutable();
            buildings_.remove(index);
            onChanged();
          } else {
            buildingsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder getBuildingsBuilder(
            int index) {
          return getBuildingsFieldBuilder().getBuilder(index);
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder getBuildingsOrBuilder(
            int index) {
          if (buildingsBuilder_ == null) {
            return buildings_.get(index);  } else {
            return buildingsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List 
             getBuildingsOrBuilderList() {
          if (buildingsBuilder_ != null) {
            return buildingsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(buildings_);
          }
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder addBuildingsBuilder() {
          return getBuildingsFieldBuilder().addBuilder(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder addBuildingsBuilder(
            int index) {
          return getBuildingsFieldBuilder().addBuilder(
              index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.getDefaultInstance());
        }
        /**
         * repeated .CDOTAMatchPrivateMetadata.Team.Building buildings = 3;
         */
        public java.util.List 
             getBuildingsBuilderList() {
          return getBuildingsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder> 
            getBuildingsFieldBuilder() {
          if (buildingsBuilder_ == null) {
            buildingsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Building.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.BuildingOrBuilder>(
                    buildings_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            buildings_ = null;
          }
          return buildingsBuilder_;
        }

        // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata.Team)
      }

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

      // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata.Team)
    }

    public static final int TEAMS_FIELD_NUMBER = 1;
    private java.util.List teams_;
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public java.util.List getTeamsList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public java.util.List 
        getTeamsOrBuilderList() {
      return teams_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public int getTeamsCount() {
      return teams_.size();
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index) {
      return teams_.get(index);
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
        int index) {
      return teams_.get(index);
    }

    public static final int GRAPH_WIN_PROBABILITY_FIELD_NUMBER = 2;
    private java.util.List graphWinProbability_;
    /**
     * repeated float graph_win_probability = 2;
     */
    public java.util.List
        getGraphWinProbabilityList() {
      return graphWinProbability_;
    }
    /**
     * repeated float graph_win_probability = 2;
     */
    public int getGraphWinProbabilityCount() {
      return graphWinProbability_.size();
    }
    /**
     * repeated float graph_win_probability = 2;
     */
    public float getGraphWinProbability(int index) {
      return graphWinProbability_.get(index);
    }

    public static final int STRING_NAMES_FIELD_NUMBER = 3;
    private java.util.List stringNames_;
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    public java.util.List getStringNamesList() {
      return stringNames_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    public java.util.List 
        getStringNamesOrBuilderList() {
      return stringNames_;
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    public int getStringNamesCount() {
      return stringNames_.size();
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName getStringNames(int index) {
      return stringNames_.get(index);
    }
    /**
     * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder getStringNamesOrBuilder(
        int index) {
      return stringNames_.get(index);
    }

    private void initFields() {
      teams_ = java.util.Collections.emptyList();
      graphWinProbability_ = java.util.Collections.emptyList();
      stringNames_ = 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();
      for (int i = 0; i < teams_.size(); i++) {
        output.writeMessage(1, teams_.get(i));
      }
      for (int i = 0; i < graphWinProbability_.size(); i++) {
        output.writeFloat(2, graphWinProbability_.get(i));
      }
      for (int i = 0; i < stringNames_.size(); i++) {
        output.writeMessage(3, stringNames_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < teams_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, teams_.get(i));
      }
      {
        int dataSize = 0;
        dataSize = 4 * getGraphWinProbabilityList().size();
        size += dataSize;
        size += 1 * getGraphWinProbabilityList().size();
      }
      for (int i = 0; i < stringNames_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, stringNames_.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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata 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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata 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 CDOTAMatchPrivateMetadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CDOTAMatchPrivateMetadata)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          teamsBuilder_.clear();
        }
        graphWinProbability_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        if (stringNamesBuilder_ == null) {
          stringNames_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          stringNamesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CDOTAMatchPrivateMetadata_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.getDefaultInstance();
      }

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

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata(this);
        int from_bitField0_ = bitField0_;
        if (teamsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            teams_ = java.util.Collections.unmodifiableList(teams_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.teams_ = teams_;
        } else {
          result.teams_ = teamsBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = java.util.Collections.unmodifiableList(graphWinProbability_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.graphWinProbability_ = graphWinProbability_;
        if (stringNamesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            stringNames_ = java.util.Collections.unmodifiableList(stringNames_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.stringNames_ = stringNames_;
        } else {
          result.stringNames_ = stringNamesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.getDefaultInstance()) return this;
        if (teamsBuilder_ == null) {
          if (!other.teams_.isEmpty()) {
            if (teams_.isEmpty()) {
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTeamsIsMutable();
              teams_.addAll(other.teams_);
            }
            onChanged();
          }
        } else {
          if (!other.teams_.isEmpty()) {
            if (teamsBuilder_.isEmpty()) {
              teamsBuilder_.dispose();
              teamsBuilder_ = null;
              teams_ = other.teams_;
              bitField0_ = (bitField0_ & ~0x00000001);
              teamsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTeamsFieldBuilder() : null;
            } else {
              teamsBuilder_.addAllMessages(other.teams_);
            }
          }
        }
        if (!other.graphWinProbability_.isEmpty()) {
          if (graphWinProbability_.isEmpty()) {
            graphWinProbability_ = other.graphWinProbability_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureGraphWinProbabilityIsMutable();
            graphWinProbability_.addAll(other.graphWinProbability_);
          }
          onChanged();
        }
        if (stringNamesBuilder_ == null) {
          if (!other.stringNames_.isEmpty()) {
            if (stringNames_.isEmpty()) {
              stringNames_ = other.stringNames_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureStringNamesIsMutable();
              stringNames_.addAll(other.stringNames_);
            }
            onChanged();
          }
        } else {
          if (!other.stringNames_.isEmpty()) {
            if (stringNamesBuilder_.isEmpty()) {
              stringNamesBuilder_.dispose();
              stringNamesBuilder_ = null;
              stringNames_ = other.stringNames_;
              bitField0_ = (bitField0_ & ~0x00000004);
              stringNamesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getStringNamesFieldBuilder() : null;
            } else {
              stringNamesBuilder_.addAllMessages(other.stringNames_);
            }
          }
        }
        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.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List teams_ =
        java.util.Collections.emptyList();
      private void ensureTeamsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          teams_ = new java.util.ArrayList(teams_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder> teamsBuilder_;

      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List getTeamsList() {
        if (teamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(teams_);
        } else {
          return teamsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public int getTeamsCount() {
        if (teamsBuilder_ == null) {
          return teams_.size();
        } else {
          return teamsBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team getTeams(int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);
        } else {
          return teamsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.set(index, value);
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder setTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.set(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team value) {
        if (teamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTeamsIsMutable();
          teams_.add(index, value);
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addTeams(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder builderForValue) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.add(index, builderForValue.build());
          onChanged();
        } else {
          teamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder addAllTeams(
          java.lang.Iterable values) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, teams_);
          onChanged();
        } else {
          teamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder clearTeams() {
        if (teamsBuilder_ == null) {
          teams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          teamsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public Builder removeTeams(int index) {
        if (teamsBuilder_ == null) {
          ensureTeamsIsMutable();
          teams_.remove(index);
          onChanged();
        } else {
          teamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder getTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder getTeamsOrBuilder(
          int index) {
        if (teamsBuilder_ == null) {
          return teams_.get(index);  } else {
          return teamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsOrBuilderList() {
        if (teamsBuilder_ != null) {
          return teamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(teams_);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder addTeamsBuilder() {
        return getTeamsFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder addTeamsBuilder(
          int index) {
        return getTeamsFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.Team teams = 1;
       */
      public java.util.List 
           getTeamsBuilderList() {
        return getTeamsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder> 
          getTeamsFieldBuilder() {
        if (teamsBuilder_ == null) {
          teamsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.Team.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.TeamOrBuilder>(
                  teams_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          teams_ = null;
        }
        return teamsBuilder_;
      }

      private java.util.List graphWinProbability_ = java.util.Collections.emptyList();
      private void ensureGraphWinProbabilityIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          graphWinProbability_ = new java.util.ArrayList(graphWinProbability_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public java.util.List
          getGraphWinProbabilityList() {
        return java.util.Collections.unmodifiableList(graphWinProbability_);
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public int getGraphWinProbabilityCount() {
        return graphWinProbability_.size();
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public float getGraphWinProbability(int index) {
        return graphWinProbability_.get(index);
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder setGraphWinProbability(
          int index, float value) {
        ensureGraphWinProbabilityIsMutable();
        graphWinProbability_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder addGraphWinProbability(float value) {
        ensureGraphWinProbabilityIsMutable();
        graphWinProbability_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder addAllGraphWinProbability(
          java.lang.Iterable values) {
        ensureGraphWinProbabilityIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, graphWinProbability_);
        onChanged();
        return this;
      }
      /**
       * repeated float graph_win_probability = 2;
       */
      public Builder clearGraphWinProbability() {
        graphWinProbability_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

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

      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder> stringNamesBuilder_;

      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public java.util.List getStringNamesList() {
        if (stringNamesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(stringNames_);
        } else {
          return stringNamesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public int getStringNamesCount() {
        if (stringNamesBuilder_ == null) {
          return stringNames_.size();
        } else {
          return stringNamesBuilder_.getCount();
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName getStringNames(int index) {
        if (stringNamesBuilder_ == null) {
          return stringNames_.get(index);
        } else {
          return stringNamesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder setStringNames(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName value) {
        if (stringNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringNamesIsMutable();
          stringNames_.set(index, value);
          onChanged();
        } else {
          stringNamesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder setStringNames(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder builderForValue) {
        if (stringNamesBuilder_ == null) {
          ensureStringNamesIsMutable();
          stringNames_.set(index, builderForValue.build());
          onChanged();
        } else {
          stringNamesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder addStringNames(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName value) {
        if (stringNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringNamesIsMutable();
          stringNames_.add(value);
          onChanged();
        } else {
          stringNamesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder addStringNames(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName value) {
        if (stringNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringNamesIsMutable();
          stringNames_.add(index, value);
          onChanged();
        } else {
          stringNamesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder addStringNames(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder builderForValue) {
        if (stringNamesBuilder_ == null) {
          ensureStringNamesIsMutable();
          stringNames_.add(builderForValue.build());
          onChanged();
        } else {
          stringNamesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder addStringNames(
          int index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder builderForValue) {
        if (stringNamesBuilder_ == null) {
          ensureStringNamesIsMutable();
          stringNames_.add(index, builderForValue.build());
          onChanged();
        } else {
          stringNamesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder addAllStringNames(
          java.lang.Iterable values) {
        if (stringNamesBuilder_ == null) {
          ensureStringNamesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringNames_);
          onChanged();
        } else {
          stringNamesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder clearStringNames() {
        if (stringNamesBuilder_ == null) {
          stringNames_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          stringNamesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public Builder removeStringNames(int index) {
        if (stringNamesBuilder_ == null) {
          ensureStringNamesIsMutable();
          stringNames_.remove(index);
          onChanged();
        } else {
          stringNamesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder getStringNamesBuilder(
          int index) {
        return getStringNamesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder getStringNamesOrBuilder(
          int index) {
        if (stringNamesBuilder_ == null) {
          return stringNames_.get(index);  } else {
          return stringNamesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public java.util.List 
           getStringNamesOrBuilderList() {
        if (stringNamesBuilder_ != null) {
          return stringNamesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(stringNames_);
        }
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder addStringNamesBuilder() {
        return getStringNamesFieldBuilder().addBuilder(
            skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder addStringNamesBuilder(
          int index) {
        return getStringNamesFieldBuilder().addBuilder(
            index, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.getDefaultInstance());
      }
      /**
       * repeated .CDOTAMatchPrivateMetadata.StringName string_names = 3;
       */
      public java.util.List 
           getStringNamesBuilderList() {
        return getStringNamesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder> 
          getStringNamesFieldBuilder() {
        if (stringNamesBuilder_ == null) {
          stringNamesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringName.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchPrivateMetadata.StringNameOrBuilder>(
                  stringNames_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          stringNames_ = null;
        }
        return stringNamesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CDOTAMatchPrivateMetadata)
    }

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

    // @@protoc_insertion_point(class_scope:CDOTAMatchPrivateMetadata)
  }

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

    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    boolean hasMatch();
    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch getMatch();
    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder getMatchOrBuilder();

    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    boolean hasMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata();
    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder();
  }
  /**
   * Protobuf type {@code CMsgDOTADPCMatch}
   */
  public static final class CMsgDOTADPCMatch extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:CMsgDOTADPCMatch)
      CMsgDOTADPCMatchOrBuilder {
    // Use CMsgDOTADPCMatch.newBuilder() to construct.
    private CMsgDOTADPCMatch(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private CMsgDOTADPCMatch(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public CMsgDOTADPCMatch getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private CMsgDOTADPCMatch(
        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: {
              skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = match_.toBuilder();
              }
              match_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(match_);
                match_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              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.s2.proto.S2DotaMatchMetadata.internal_static_CMsgDOTADPCMatch_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgDOTADPCMatch_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.Builder.class);
    }

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

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

    private int bitField0_;
    public static final int MATCH_FIELD_NUMBER = 1;
    private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch match_;
    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    public boolean hasMatch() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch getMatch() {
      return match_;
    }
    /**
     * optional .CMsgDOTAMatch match = 1;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder getMatchOrBuilder() {
      return match_;
    }

    public static final int METADATA_FIELD_NUMBER = 2;
    private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_;
    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
      return metadata_;
    }
    /**
     * optional .CDOTAMatchMetadata metadata = 2;
     */
    public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
      return metadata_;
    }

    private void initFields() {
      match_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.getDefaultInstance();
      metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
    }
    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.writeMessage(1, match_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, metadata_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, match_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, metadata_);
      }
      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.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch 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.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch 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.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch 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 CMsgDOTADPCMatch}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:CMsgDOTADPCMatch)
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatchOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgDOTADPCMatch_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgDOTADPCMatch_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.class, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.Builder.class);
      }

      // Construct using skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (matchBuilder_ == null) {
          match_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.getDefaultInstance();
        } else {
          matchBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.internal_static_CMsgDOTADPCMatch_descriptor;
      }

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch getDefaultInstanceForType() {
        return skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.getDefaultInstance();
      }

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

      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch buildPartial() {
        skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch result = new skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (matchBuilder_ == null) {
          result.match_ = match_;
        } else {
          result.match_ = matchBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch other) {
        if (other == skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch.getDefaultInstance()) return this;
        if (other.hasMatch()) {
          mergeMatch(other.getMatch());
        }
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        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.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CMsgDOTADPCMatch) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch match_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder> matchBuilder_;
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public boolean hasMatch() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch getMatch() {
        if (matchBuilder_ == null) {
          return match_;
        } else {
          return matchBuilder_.getMessage();
        }
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public Builder setMatch(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch value) {
        if (matchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          match_ = value;
          onChanged();
        } else {
          matchBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public Builder setMatch(
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder builderForValue) {
        if (matchBuilder_ == null) {
          match_ = builderForValue.build();
          onChanged();
        } else {
          matchBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public Builder mergeMatch(skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch value) {
        if (matchBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              match_ != skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.getDefaultInstance()) {
            match_ =
              skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.newBuilder(match_).mergeFrom(value).buildPartial();
          } else {
            match_ = value;
          }
          onChanged();
        } else {
          matchBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public Builder clearMatch() {
        if (matchBuilder_ == null) {
          match_ = skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.getDefaultInstance();
          onChanged();
        } else {
          matchBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder getMatchBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMatchFieldBuilder().getBuilder();
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder getMatchOrBuilder() {
        if (matchBuilder_ != null) {
          return matchBuilder_.getMessageOrBuilder();
        } else {
          return match_;
        }
      }
      /**
       * optional .CMsgDOTAMatch match = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder> 
          getMatchFieldBuilder() {
        if (matchBuilder_ == null) {
          matchBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatch.Builder, skadistats.clarity.wire.s2.proto.S2DotaGcCommon.CMsgDOTAMatchOrBuilder>(
                  getMatch(),
                  getParentForChildren(),
                  isClean());
          match_ = null;
        }
        return matchBuilder_;
      }

      private skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> metadataBuilder_;
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public Builder setMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public Builder setMetadata(
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public Builder mergeMetadata(skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              metadata_ != skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance()) {
            metadata_ =
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.getDefaultInstance();
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      public skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_;
        }
      }
      /**
       * optional .CDOTAMatchMetadata metadata = 2;
       */
      private com.google.protobuf.SingleFieldBuilder<
          skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadata.Builder, skadistats.clarity.wire.s2.proto.S2DotaMatchMetadata.CDOTAMatchMetadataOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:CMsgDOTADPCMatch)
    }

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

    // @@protoc_insertion_point(class_scope:CMsgDOTADPCMatch)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadataFile_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadataFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_CandyGrant_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_EventData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_GauntletProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_GuildChallengeProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_StringName_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_CMsgDOTADPCMatch_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_CMsgDOTADPCMatch_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\034s2_dota_match_metadata.proto\032\030s2_base_" +
      "gcmessages.proto\032\037s2_dota_gcmessages_com" +
      "mon.proto\0320s2_dota_gcmessages_common_mat" +
      "ch_management.proto\"|\n\026CDOTAMatchMetadat" +
      "aFile\022\017\n\007version\030\001 \002(\005\022\020\n\010match_id\030\002 \002(\004" +
      "\022%\n\010metadata\030\003 \001(\0132\023.CDOTAMatchMetadata\022" +
      "\030\n\020private_metadata\030\005 \001(\014\"\270$\n\022CDOTAMatch" +
      "Metadata\022\'\n\005teams\030\001 \003(\0132\030.CDOTAMatchMeta" +
      "data.Team\022/\n\014item_rewards\030\002 \003(\0132\031.CLobby" +
      "TimedRewardDetails\022\020\n\010lobby_id\030\003 \001(\006\022\031\n\021",
      "report_until_time\030\004 \001(\006\022\037\n\027event_game_cu" +
      "stom_table\030\005 \001(\014\022\030\n\020primary_event_id\030\006 \001" +
      "(\r\022\"\n\nmatch_tips\030\007 \003(\0132\016.CMsgMatchTips\0225" +
      "\n\021matchmaking_stats\030\010 \001(\0132\032.CMsgMatchMat" +
      "chmakingStats\022\033\n\010mvp_data\030\t \001(\0132\t.CMvpDa" +
      "ta\022L\n\030guild_challenge_progress\030\n \003(\0132*.C" +
      "DOTAMatchMetadata.GuildChallengeProgress" +
      "\032\204\036\n\004Team\022\021\n\tdota_team\030\001 \001(\r\0220\n\007players\030" +
      "\002 \003(\0132\037.CDOTAMatchMetadata.Team.Player\022\030" +
      "\n\020graph_experience\030\003 \003(\002\022\031\n\021graph_gold_e",
      "arned\030\004 \003(\002\022\027\n\017graph_net_worth\030\005 \003(\002\022\025\n\r" +
      "cm_first_pick\030\006 \001(\010\022\034\n\024cm_captain_player" +
      "_id\030\007 \001(\r\022\017\n\007cm_bans\030\010 \003(\r\022\020\n\010cm_picks\030\t" +
      " \003(\r\022\022\n\ncm_penalty\030\n \001(\r\0320\n\nPlayerKill\022\023" +
      "\n\013victim_slot\030\001 \001(\r\022\r\n\005count\030\002 \001(\r\0326\n\014It" +
      "emPurchase\022\017\n\007item_id\030\001 \001(\r\022\025\n\rpurchase_" +
      "time\030\002 \001(\005\032v\n\021InventorySnapshot\022\017\n\007item_" +
      "id\030\001 \003(\r\022\021\n\tgame_time\030\002 \001(\005\022\r\n\005kills\030\003 \001" +
      "(\r\022\016\n\006deaths\030\004 \001(\r\022\017\n\007assists\030\005 \001(\r\022\r\n\005l" +
      "evel\030\006 \001(\r\0326\n\021AutoStyleCriteria\022\022\n\nname_",
      "token\030\001 \001(\r\022\r\n\005value\030\002 \001(\002\032\306\001\n\022StrangeGe" +
      "mProgress\022\027\n\017kill_eater_type\030\001 \001(\r\022\032\n\022ge" +
      "m_item_def_index\030\002 \001(\r\022\030\n\020required_hero_" +
      "id\030\003 \001(\r\022\026\n\016starting_value\030\004 \001(\r\022\024\n\014endi" +
      "ng_value\030\005 \001(\r\022\034\n\024owner_item_def_index\030\006" +
      " \001(\r\022\025\n\rowner_item_id\030\007 \001(\004\032h\n\021VictoryPr" +
      "ediction\022\017\n\007item_id\030\001 \001(\004\022\026\n\016item_def_in" +
      "dex\030\002 \001(\r\022\026\n\016starting_value\030\003 \001(\r\022\022\n\nis_" +
      "victory\030\004 \001(\010\032Z\n\014SubChallenge\022\017\n\007slot_id" +
      "\030\001 \001(\r\022\023\n\013start_value\030\002 \001(\r\022\021\n\tend_value",
      "\030\003 \001(\r\022\021\n\tcompleted\030\004 \001(\010\032K\n\025CavernChall" +
      "engeResult\022\031\n\021completed_path_id\030\001 \001(\r\022\027\n" +
      "\017claimed_room_id\030\002 \001(\r\032A\n\013ActionGrant\022\021\n" +
      "\taction_id\030\001 \001(\r\022\020\n\010quantity\030\002 \001(\r\022\r\n\005au" +
      "dit\030\003 \001(\r\032,\n\nCandyGrant\022\016\n\006points\030\001 \001(\r\022" +
      "\016\n\006reason\030\002 \001(\r\032\332\006\n\tEventData\022\020\n\010event_i" +
      "d\030\001 \001(\r\022\024\n\014event_points\030\002 \001(\r\022\035\n\025challen" +
      "ge_instance_id\030\003 \001(\r\022\032\n\022challenge_quest_" +
      "id\030\004 \001(\r\022$\n\034challenge_quest_challenge_id" +
      "\030\005 \001(\r\022\033\n\023challenge_completed\030\006 \001(\010\022 \n\030c",
      "hallenge_rank_completed\030\007 \001(\r\022+\n#challen" +
      "ge_rank_previously_completed\030\010 \001(\r\022\023\n\013ev" +
      "ent_owned\030\t \001(\010\022K\n\034sub_challenges_with_p" +
      "rogress\030\n \003(\0132%.CDOTAMatchMetadata.Team." +
      "SubChallenge\022\026\n\016wager_winnings\030\013 \001(\r\022\037\n\027" +
      "cavern_challenge_active\030\014 \001(\010\022!\n\031cavern_" +
      "challenge_winnings\030\r \001(\r\022\026\n\016amount_wager" +
      "ed\030\016 \001(\r\022\"\n\032periodic_point_adjustments\030\020" +
      " \001(\r\022T\n\034cavern_challenge_map_results\030\021 \003" +
      "(\0132..CDOTAMatchMetadata.Team.CavernChall",
      "engeResult\022,\n$cavern_challenge_plus_shar" +
      "d_winnings\030\022 \001(\r\022=\n\017actions_granted\030\023 \003(" +
      "\0132$.CDOTAMatchMetadata.Team.ActionGrant\022" +
      " \n\030cavern_crawl_map_variant\030\024 \001(\r\022\034\n\024tea" +
      "m_wager_bonus_pct\030\025 \001(\r\022\030\n\020wager_streak_" +
      "pct\030\026 \001(\r\022A\n\024candy_points_granted\030\027 \003(\0132" +
      "#.CDOTAMatchMetadata.Team.CandyGrant\032Y\n\020" +
      "GauntletProgress\022\025\n\rgauntlet_tier\030\002 \001(\r\022" +
      "\025\n\rgauntlet_wins\030\003 \001(\r\022\027\n\017gauntlet_losse" +
      "s\030\004 \001(\r\032\335\r\n\006Player\022\022\n\naccount_id\030\001 \001(\r\022\030",
      "\n\020ability_upgrades\030\002 \003(\r\022\023\n\013player_slot\030" +
      "\003 \001(\r\022)\n\023equipped_econ_items\030\004 \003(\0132\014.CSO" +
      "EconItem\0222\n\005kills\030\005 \003(\0132#.CDOTAMatchMeta" +
      "data.Team.PlayerKill\0224\n\005items\030\006 \003(\0132%.CD" +
      "OTAMatchMetadata.Team.ItemPurchase\022\025\n\rav" +
      "g_kills_x16\030\007 \001(\r\022\026\n\016avg_deaths_x16\030\010 \001(" +
      "\r\022\027\n\017avg_assists_x16\030\t \001(\r\022\023\n\013avg_gpm_x1" +
      "6\030\n \001(\r\022\023\n\013avg_xpm_x16\030\013 \001(\r\022\026\n\016best_kil" +
      "ls_x16\030\014 \001(\r\022\030\n\020best_assists_x16\030\r \001(\r\022\024" +
      "\n\014best_gpm_x16\030\016 \001(\r\022\024\n\014best_xpm_x16\030\017 \001",
      "(\r\022\022\n\nwin_streak\030\020 \001(\r\022\027\n\017best_win_strea" +
      "k\030\021 \001(\r\022\023\n\013fight_score\030\022 \001(\002\022\022\n\nfarm_sco" +
      "re\030\023 \001(\002\022\025\n\rsupport_score\030\024 \001(\002\022\022\n\npush_" +
      "score\030\025 \001(\002\022\026\n\016level_up_times\030\026 \003(\r\022\027\n\017g" +
      "raph_net_worth\030\027 \003(\002\022F\n\022inventory_snapsh" +
      "ot\030\030 \003(\0132*.CDOTAMatchMetadata.Team.Inven" +
      "torySnapshot\022\034\n\024avg_stats_calibrated\030\031 \001" +
      "(\010\022G\n\023auto_style_criteria\030\032 \003(\0132*.CDOTAM" +
      "atchMetadata.Team.AutoStyleCriteria\0226\n\ne" +
      "vent_data\030\035 \003(\0132\".CDOTAMatchMetadata.Tea",
      "m.EventData\022I\n\024strange_gem_progress\030\036 \003(" +
      "\0132+.CDOTAMatchMetadata.Team.StrangeGemPr" +
      "ogress\022\017\n\007hero_xp\030\037 \001(\r\022\025\n\rcamps_stacked" +
      "\030  \001(\r\022F\n\022victory_prediction\030! \003(\0132*.CDO" +
      "TAMatchMetadata.Team.VictoryPrediction\022\034" +
      "\n\024lane_selection_flags\030\" \001(\r\022\020\n\010rampages" +
      "\030# \001(\r\022\024\n\014triple_kills\030$ \001(\r\022\026\n\016aegis_sn" +
      "atched\030% \001(\r\022\031\n\021rapiers_purchased\030& \001(\r\022" +
      "\027\n\017couriers_killed\030\' \001(\r\022\026\n\016net_worth_ra" +
      "nk\030( \001(\r\022\032\n\022support_gold_spent\030) \001(\r\022\035\n\025",
      "observer_wards_placed\030* \001(\r\022\033\n\023sentry_wa" +
      "rds_placed\030+ \001(\r\022\026\n\016wards_dewarded\030, \001(\r" +
      "\022\025\n\rstun_duration\030- \001(\002\022I\n\023rank_mmr_boos" +
      "t_type\030. \001(\0162\022.EDOTAMMRBoostType:\030k_EDOT" +
      "AMMRBoostType_None\022D\n\021gauntlet_progress\030" +
      "/ \001(\0132).CDOTAMatchMetadata.Team.Gauntlet" +
      "Progress\022K\n\021contract_progress\0300 \003(\01320.CD" +
      "OTAMatchMetadata.Team.Player.ContractPro" +
      "gress\022\021\n\tguild_ids\0301 \003(\r\032\264\001\n\020ContractPro" +
      "gress\022\020\n\010guild_id\030\001 \001(\r\022\020\n\010event_id\030\002 \001(",
      "\r\022\035\n\025challenge_instance_id\030\003 \001(\r\022\033\n\023chal" +
      "lenge_parameter\030\004 \001(\r\022\026\n\016contract_stars\030" +
      "\005 \001(\r\022\025\n\rcontract_slot\030\006 \001(\r\022\021\n\tcomplete" +
      "d\030\007 \001(\010\032\222\003\n\026GuildChallengeProgress\022\020\n\010gu" +
      "ild_id\030\001 \001(\r\022(\n\010event_id\030\002 \001(\0162\007.EEvent:" +
      "\rEVENT_ID_NONE\022\035\n\025challenge_instance_id\030" +
      "\003 \001(\r\022\033\n\023challenge_parameter\030\004 \001(\r\022\033\n\023ch" +
      "allenge_timestamp\030\005 \001(\r\022#\n\033challenge_pro" +
      "gress_at_start\030\006 \001(\r\022&\n\036challenge_progre" +
      "ss_accumulated\030\007 \001(\r\022Z\n\023individual_progr",
      "ess\030\010 \003(\0132=.CDOTAMatchMetadata.GuildChal" +
      "lengeProgress.IndividualProgress\032:\n\022Indi" +
      "vidualProgress\022\022\n\naccount_id\030\001 \001(\r\022\020\n\010pr" +
      "ogress\030\002 \001(\r\"\366\020\n\031CDOTAMatchPrivateMetada" +
      "ta\022.\n\005teams\030\001 \003(\0132\037.CDOTAMatchPrivateMet" +
      "adata.Team\022\035\n\025graph_win_probability\030\002 \003(" +
      "\002\022;\n\014string_names\030\003 \003(\0132%.CDOTAMatchPriv" +
      "ateMetadata.StringName\032&\n\nStringName\022\n\n\002" +
      "id\030\001 \001(\r\022\014\n\004name\030\002 \001(\t\032\244\017\n\004Team\022\021\n\tdota_" +
      "team\030\001 \001(\r\0227\n\007players\030\002 \003(\0132&.CDOTAMatch",
      "PrivateMetadata.Team.Player\022;\n\tbuildings" +
      "\030\003 \003(\0132(.CDOTAMatchPrivateMetadata.Team." +
      "Building\032\253\r\n\006Player\022\022\n\naccount_id\030\001 \001(\r\022" +
      "\023\n\013player_slot\030\002 \001(\r\022\027\n\017position_stream\030" +
      "\003 \001(\014\022M\n\017combat_segments\030\004 \003(\01324.CDOTAMa" +
      "tchPrivateMetadata.Team.Player.CombatSeg" +
      "ment\022\031\n\021damage_unit_names\030\005 \003(\t\022G\n\014buff_" +
      "records\030\006 \003(\01321.CDOTAMatchPrivateMetadat" +
      "a.Team.Player.BuffRecord\022\023\n\013graph_kills\030" +
      "\007 \003(\002\022\024\n\014graph_deaths\030\010 \003(\002\022\025\n\rgraph_ass",
      "ists\030\t \003(\002\022\026\n\016graph_lasthits\030\n \003(\002\022\024\n\014gr" +
      "aph_denies\030\013 \003(\002\022J\n\rgold_received\030\014 \001(\0132" +
      "3.CDOTAMatchPrivateMetadata.Team.Player." +
      "GoldReceived\022F\n\013xp_received\030\r \001(\01321.CDOT" +
      "AMatchPrivateMetadata.Team.Player.XPRece" +
      "ived\032\251\005\n\rCombatSegment\022\021\n\tgame_time\030\001 \001(" +
      "\005\022_\n\021damage_by_ability\030\002 \003(\0132D.CDOTAMatc" +
      "hPrivateMetadata.Team.Player.CombatSegme" +
      "nt.DamageByAbility\022a\n\022healing_by_ability" +
      "\030\003 \003(\0132E.CDOTAMatchPrivateMetadata.Team.",
      "Player.CombatSegment.HealingByAbility\032\335\001" +
      "\n\017DamageByAbility\022\031\n\021source_unit_index\030\003" +
      " \001(\r\022\022\n\nability_id\030\001 \001(\r\022j\n\017by_hero_targ" +
      "ets\030\002 \003(\0132Q.CDOTAMatchPrivateMetadata.Te" +
      "am.Player.CombatSegment.DamageByAbility." +
      "ByHeroTarget\032/\n\014ByHeroTarget\022\017\n\007hero_id\030" +
      "\001 \001(\r\022\016\n\006damage\030\002 \001(\r\032\340\001\n\020HealingByAbili" +
      "ty\022\031\n\021source_unit_index\030\003 \001(\r\022\022\n\nability" +
      "_id\030\001 \001(\r\022k\n\017by_hero_targets\030\002 \003(\0132R.CDO" +
      "TAMatchPrivateMetadata.Team.Player.Comba",
      "tSegment.HealingByAbility.ByHeroTarget\0320" +
      "\n\014ByHeroTarget\022\017\n\007hero_id\030\001 \001(\r\022\017\n\007heali" +
      "ng\030\002 \001(\r\032\350\001\n\nBuffRecord\022\027\n\017buff_ability_" +
      "id\030\001 \001(\r\022\032\n\022buff_modifier_name\030\003 \001(\t\022W\n\017" +
      "by_hero_targets\030\002 \003(\0132>.CDOTAMatchPrivat" +
      "eMetadata.Team.Player.BuffRecord.ByHeroT" +
      "arget\032L\n\014ByHeroTarget\022\017\n\007hero_id\030\001 \001(\r\022\030" +
      "\n\020elapsed_duration\030\002 \001(\002\022\021\n\tis_hidden\030\003 " +
      "\001(\010\032\230\001\n\014GoldReceived\022\r\n\005creep\030\001 \001(\r\022\016\n\006h" +
      "eroes\030\002 \001(\r\022\024\n\014bounty_runes\030\003 \001(\r\022\017\n\007pas",
      "sive\030\004 \001(\r\022\021\n\tbuildings\030\005 \001(\r\022\021\n\tabiliti" +
      "es\030\006 \001(\r\022\r\n\005wards\030\007 \001(\r\022\r\n\005other\030\010 \001(\r\032v" +
      "\n\nXPReceived\022\r\n\005creep\030\001 \001(\r\022\016\n\006heroes\030\002 " +
      "\001(\r\022\016\n\006roshan\030\003 \001(\r\022\031\n\021tome_of_knowledge" +
      "\030\004 \001(\r\022\017\n\007outpost\030\005 \001(\r\022\r\n\005other\030\006 \001(\r\032e" +
      "\n\010Building\022\021\n\tunit_name\030\001 \001(\t\022\030\n\020positio" +
      "n_quant_x\030\002 \001(\r\022\030\n\020position_quant_y\030\003 \001(" +
      "\r\022\022\n\ndeath_time\030\004 \001(\002\"X\n\020CMsgDOTADPCMatc" +
      "h\022\035\n\005match\030\001 \001(\0132\016.CMsgDOTAMatch\022%\n\010meta" +
      "data\030\002 \001(\0132\023.CDOTAMatchMetadataB:\n skadi",
      "stats.clarity.wire.s2.protoB\023S2DotaMatch" +
      "Metadata\200\001\000"
    };
    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.s2.proto.S2BaseGcMessages.getDescriptor(),
          skadistats.clarity.wire.s2.proto.S2DotaGcCommon.getDescriptor(),
          skadistats.clarity.wire.s2.proto.S2DotaGcMM.getDescriptor(),
        }, assigner);
    internal_static_CDOTAMatchMetadataFile_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_CDOTAMatchMetadataFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadataFile_descriptor,
        new java.lang.String[] { "Version", "MatchId", "Metadata", "PrivateMetadata", });
    internal_static_CDOTAMatchMetadata_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_CDOTAMatchMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_descriptor,
        new java.lang.String[] { "Teams", "ItemRewards", "LobbyId", "ReportUntilTime", "EventGameCustomTable", "PrimaryEventId", "MatchTips", "MatchmakingStats", "MvpData", "GuildChallengeProgress", });
    internal_static_CDOTAMatchMetadata_Team_descriptor =
      internal_static_CDOTAMatchMetadata_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_Team_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_descriptor,
        new java.lang.String[] { "DotaTeam", "Players", "GraphExperience", "GraphGoldEarned", "GraphNetWorth", "CmFirstPick", "CmCaptainPlayerId", "CmBans", "CmPicks", "CmPenalty", });
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_Team_PlayerKill_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_PlayerKill_descriptor,
        new java.lang.String[] { "VictimSlot", "Count", });
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchMetadata_Team_ItemPurchase_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_ItemPurchase_descriptor,
        new java.lang.String[] { "ItemId", "PurchaseTime", });
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(2);
    internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_InventorySnapshot_descriptor,
        new java.lang.String[] { "ItemId", "GameTime", "Kills", "Deaths", "Assists", "Level", });
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(3);
    internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_AutoStyleCriteria_descriptor,
        new java.lang.String[] { "NameToken", "Value", });
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(4);
    internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_StrangeGemProgress_descriptor,
        new java.lang.String[] { "KillEaterType", "GemItemDefIndex", "RequiredHeroId", "StartingValue", "EndingValue", "OwnerItemDefIndex", "OwnerItemId", });
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(5);
    internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_VictoryPrediction_descriptor,
        new java.lang.String[] { "ItemId", "ItemDefIndex", "StartingValue", "IsVictory", });
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(6);
    internal_static_CDOTAMatchMetadata_Team_SubChallenge_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_SubChallenge_descriptor,
        new java.lang.String[] { "SlotId", "StartValue", "EndValue", "Completed", });
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(7);
    internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_CavernChallengeResult_descriptor,
        new java.lang.String[] { "CompletedPathId", "ClaimedRoomId", });
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(8);
    internal_static_CDOTAMatchMetadata_Team_ActionGrant_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_ActionGrant_descriptor,
        new java.lang.String[] { "ActionId", "Quantity", "Audit", });
    internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(9);
    internal_static_CDOTAMatchMetadata_Team_CandyGrant_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_CandyGrant_descriptor,
        new java.lang.String[] { "Points", "Reason", });
    internal_static_CDOTAMatchMetadata_Team_EventData_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(10);
    internal_static_CDOTAMatchMetadata_Team_EventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_EventData_descriptor,
        new java.lang.String[] { "EventId", "EventPoints", "ChallengeInstanceId", "ChallengeQuestId", "ChallengeQuestChallengeId", "ChallengeCompleted", "ChallengeRankCompleted", "ChallengeRankPreviouslyCompleted", "EventOwned", "SubChallengesWithProgress", "WagerWinnings", "CavernChallengeActive", "CavernChallengeWinnings", "AmountWagered", "PeriodicPointAdjustments", "CavernChallengeMapResults", "CavernChallengePlusShardWinnings", "ActionsGranted", "CavernCrawlMapVariant", "TeamWagerBonusPct", "WagerStreakPct", "CandyPointsGranted", });
    internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(11);
    internal_static_CDOTAMatchMetadata_Team_GauntletProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_GauntletProgress_descriptor,
        new java.lang.String[] { "GauntletTier", "GauntletWins", "GauntletLosses", });
    internal_static_CDOTAMatchMetadata_Team_Player_descriptor =
      internal_static_CDOTAMatchMetadata_Team_descriptor.getNestedTypes().get(12);
    internal_static_CDOTAMatchMetadata_Team_Player_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_Player_descriptor,
        new java.lang.String[] { "AccountId", "AbilityUpgrades", "PlayerSlot", "EquippedEconItems", "Kills", "Items", "AvgKillsX16", "AvgDeathsX16", "AvgAssistsX16", "AvgGpmX16", "AvgXpmX16", "BestKillsX16", "BestAssistsX16", "BestGpmX16", "BestXpmX16", "WinStreak", "BestWinStreak", "FightScore", "FarmScore", "SupportScore", "PushScore", "LevelUpTimes", "GraphNetWorth", "InventorySnapshot", "AvgStatsCalibrated", "AutoStyleCriteria", "EventData", "StrangeGemProgress", "HeroXp", "CampsStacked", "VictoryPrediction", "LaneSelectionFlags", "Rampages", "TripleKills", "AegisSnatched", "RapiersPurchased", "CouriersKilled", "NetWorthRank", "SupportGoldSpent", "ObserverWardsPlaced", "SentryWardsPlaced", "WardsDewarded", "StunDuration", "RankMmrBoostType", "GauntletProgress", "ContractProgress", "GuildIds", });
    internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor =
      internal_static_CDOTAMatchMetadata_Team_Player_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_Team_Player_ContractProgress_descriptor,
        new java.lang.String[] { "GuildId", "EventId", "ChallengeInstanceId", "ChallengeParameter", "ContractStars", "ContractSlot", "Completed", });
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor =
      internal_static_CDOTAMatchMetadata_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor,
        new java.lang.String[] { "GuildId", "EventId", "ChallengeInstanceId", "ChallengeParameter", "ChallengeTimestamp", "ChallengeProgressAtStart", "ChallengeProgressAccumulated", "IndividualProgress", });
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor =
      internal_static_CDOTAMatchMetadata_GuildChallengeProgress_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchMetadata_GuildChallengeProgress_IndividualProgress_descriptor,
        new java.lang.String[] { "AccountId", "Progress", });
    internal_static_CDOTAMatchPrivateMetadata_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_CDOTAMatchPrivateMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_descriptor,
        new java.lang.String[] { "Teams", "GraphWinProbability", "StringNames", });
    internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_StringName_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_StringName_descriptor,
        new java.lang.String[] { "Id", "Name", });
    internal_static_CDOTAMatchPrivateMetadata_Team_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_descriptor,
        new java.lang.String[] { "DotaTeam", "Players", "Buildings", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor,
        new java.lang.String[] { "AccountId", "PlayerSlot", "PositionStream", "CombatSegments", "DamageUnitNames", "BuffRecords", "GraphKills", "GraphDeaths", "GraphAssists", "GraphLasthits", "GraphDenies", "GoldReceived", "XpReceived", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor,
        new java.lang.String[] { "GameTime", "DamageByAbility", "HealingByAbility", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor,
        new java.lang.String[] { "SourceUnitIndex", "AbilityId", "ByHeroTargets", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_DamageByAbility_ByHeroTarget_descriptor,
        new java.lang.String[] { "HeroId", "Damage", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor,
        new java.lang.String[] { "SourceUnitIndex", "AbilityId", "ByHeroTargets", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_CombatSegment_HealingByAbility_ByHeroTarget_descriptor,
        new java.lang.String[] { "HeroId", "Healing", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor,
        new java.lang.String[] { "BuffAbilityId", "BuffModifierName", "ByHeroTargets", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_descriptor.getNestedTypes().get(0);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_BuffRecord_ByHeroTarget_descriptor,
        new java.lang.String[] { "HeroId", "ElapsedDuration", "IsHidden", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(2);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_GoldReceived_descriptor,
        new java.lang.String[] { "Creep", "Heroes", "BountyRunes", "Passive", "Buildings", "Abilities", "Wards", "Other", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_Player_descriptor.getNestedTypes().get(3);
    internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Player_XPReceived_descriptor,
        new java.lang.String[] { "Creep", "Heroes", "Roshan", "TomeOfKnowledge", "Outpost", "Other", });
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor =
      internal_static_CDOTAMatchPrivateMetadata_Team_descriptor.getNestedTypes().get(1);
    internal_static_CDOTAMatchPrivateMetadata_Team_Building_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CDOTAMatchPrivateMetadata_Team_Building_descriptor,
        new java.lang.String[] { "UnitName", "PositionQuantX", "PositionQuantY", "DeathTime", });
    internal_static_CMsgDOTADPCMatch_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_CMsgDOTADPCMatch_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_CMsgDOTADPCMatch_descriptor,
        new java.lang.String[] { "Match", "Metadata", });
    skadistats.clarity.wire.s2.proto.S2BaseGcMessages.getDescriptor();
    skadistats.clarity.wire.s2.proto.S2DotaGcCommon.getDescriptor();
    skadistats.clarity.wire.s2.proto.S2DotaGcMM.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy