content: /*
   * Tencent is pleased to support the open source community by making Angel available.
   *
   * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
   * compliance with the License. You may obtain a copy of the License at
   *
   * https://opensource.org/licenses/Apache-2.0
   *
   * Unless required by applicable law or agreed to in writing, software distributed under the License
   * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
   * or implied. See the License for the specific language governing permissions and limitations under
   * the License.
   *
   */
  // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: metrics/serving_metrics.proto
  
  package com.tencent.angel.metrics;
  
  public final class ServingMetricsProtos {
    private ServingMetricsProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface MetricsResponseOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.serving.MetricsResponse)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
      int getModelsCount();
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
      boolean containsModels(
          java.lang.String key);
      /**
       * Use {@link #getModelsMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
      getModels();
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
      java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
      getModelsMap();
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrDefault(
          java.lang.String key,
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions defaultValue);
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrThrow(
          java.lang.String key);
    }
    /**
     * Protobuf type {@code angel.serving.MetricsResponse}
     */
    public  static final class MetricsResponse extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.serving.MetricsResponse)
        MetricsResponseOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use MetricsResponse.newBuilder() to construct.
      private MetricsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private MetricsResponse() {
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private MetricsResponse(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        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 (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  models_ = com.google.protobuf.MapField.newMapField(
                      ModelsDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000001;
                }
                com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
                models__ = input.readMessage(
                    ModelsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                models_.getMutableMap().put(
                    models__.getKey(), models__.getValue());
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_descriptor;
      }
  
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetModels();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.class, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Builder.class);
      }
  
      public interface VersionsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:angel.serving.MetricsResponse.Versions)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
        int getVersionsCount();
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
        boolean containsVersions(
            java.lang.String key);
        /**
         * Use {@link #getVersionsMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
        getVersions();
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
        java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
        getVersionsMap();
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrDefault(
            java.lang.String key,
            com.tencent.angel.metrics.ServingMetricsProtos.Metrics defaultValue);
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrThrow(
            java.lang.String key);
      }
      /**
       * Protobuf type {@code angel.serving.MetricsResponse.Versions}
       */
      public  static final class Versions extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:angel.serving.MetricsResponse.Versions)
          VersionsOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Versions.newBuilder() to construct.
        private Versions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Versions() {
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Versions(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          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 (!parseUnknownFieldProto3(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    versions_ = com.google.protobuf.MapField.newMapField(
                        VersionsDefaultEntryHolder.defaultEntry);
                    mutable_bitField0_ |= 0x00000001;
                  }
                  com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
                  versions__ = input.readMessage(
                      VersionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                  versions_.getMutableMap().put(
                      versions__.getKey(), versions__.getValue());
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_descriptor;
        }
  
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetVersions();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.class, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.Builder.class);
        }
  
        public static final int VERSIONS_FIELD_NUMBER = 1;
        private static final class VersionsDefaultEntryHolder {
          static final com.google.protobuf.MapEntry<
              java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> defaultEntry =
                  com.google.protobuf.MapEntry
                  .<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>newDefaultInstance(
                      com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_descriptor, 
                      com.google.protobuf.WireFormat.FieldType.STRING,
                      "",
                      com.google.protobuf.WireFormat.FieldType.MESSAGE,
                      com.tencent.angel.metrics.ServingMetricsProtos.Metrics.getDefaultInstance());
        }
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> versions_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
        internalGetVersions() {
          if (versions_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                VersionsDefaultEntryHolder.defaultEntry);
          }
          return versions_;
        }
  
        public int getVersionsCount() {
          return internalGetVersions().getMap().size();
        }
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        public boolean containsVersions(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          return internalGetVersions().getMap().containsKey(key);
        }
        /**
         * Use {@link #getVersionsMap()} instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> getVersions() {
          return getVersionsMap();
        }
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> getVersionsMap() {
          return internalGetVersions().getMap();
        }
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrDefault(
            java.lang.String key,
            com.tencent.angel.metrics.ServingMetricsProtos.Metrics defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> map =
              internalGetVersions().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
         */
  
        public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> map =
              internalGetVersions().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
  
        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 {
          com.google.protobuf.GeneratedMessageV3
            .serializeStringMapTo(
              output,
              internalGetVersions(),
              VersionsDefaultEntryHolder.defaultEntry,
              1);
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          for (java.util.Map.Entry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> entry
               : internalGetVersions().getMap().entrySet()) {
            com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
            versions__ = VersionsDefaultEntryHolder.defaultEntry.newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
            size += com.google.protobuf.CodedOutputStream
                .computeMessageSize(1, versions__);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions)) {
            return super.equals(obj);
          }
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions other = (com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions) obj;
  
          boolean result = true;
          result = result && internalGetVersions().equals(
              other.internalGetVersions());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (!internalGetVersions().getMap().isEmpty()) {
            hash = (37 * hash) + VERSIONS_FIELD_NUMBER;
            hash = (53 * hash) + internalGetVersions().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code angel.serving.MetricsResponse.Versions}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:angel.serving.MetricsResponse.Versions)
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.VersionsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_descriptor;
          }
  
          @SuppressWarnings({"rawtypes"})
          protected com.google.protobuf.MapField internalGetMapField(
              int number) {
            switch (number) {
              case 1:
                return internalGetVersions();
              default:
                throw new RuntimeException(
                    "Invalid map field number: " + number);
            }
          }
          @SuppressWarnings({"rawtypes"})
          protected com.google.protobuf.MapField internalGetMutableMapField(
              int number) {
            switch (number) {
              case 1:
                return internalGetMutableVersions();
              default:
                throw new RuntimeException(
                    "Invalid map field number: " + number);
            }
          }
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.class, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.Builder.class);
          }
  
          // Construct using com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            internalGetMutableVersions().clear();
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_Versions_descriptor;
          }
  
          public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getDefaultInstanceForType() {
            return com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.getDefaultInstance();
          }
  
          public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions build() {
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions buildPartial() {
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions result = new com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions(this);
            int from_bitField0_ = bitField0_;
            result.versions_ = internalGetVersions();
            result.versions_.makeImmutable();
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions) {
              return mergeFrom((com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions other) {
            if (other == com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.getDefaultInstance()) return this;
            internalGetMutableVersions().mergeFrom(
                other.internalGetVersions());
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            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 {
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private com.google.protobuf.MapField<
              java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> versions_;
          private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
          internalGetVersions() {
            if (versions_ == null) {
              return com.google.protobuf.MapField.emptyMapField(
                  VersionsDefaultEntryHolder.defaultEntry);
            }
            return versions_;
          }
          private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
          internalGetMutableVersions() {
            onChanged();;
            if (versions_ == null) {
              versions_ = com.google.protobuf.MapField.newMapField(
                  VersionsDefaultEntryHolder.defaultEntry);
            }
            if (!versions_.isMutable()) {
              versions_ = versions_.copy();
            }
            return versions_;
          }
  
          public int getVersionsCount() {
            return internalGetVersions().getMap().size();
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public boolean containsVersions(
              java.lang.String key) {
            if (key == null) { throw new java.lang.NullPointerException(); }
            return internalGetVersions().getMap().containsKey(key);
          }
          /**
           * Use {@link #getVersionsMap()} instead.
           */
          @java.lang.Deprecated
          public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> getVersions() {
            return getVersionsMap();
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> getVersionsMap() {
            return internalGetVersions().getMap();
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrDefault(
              java.lang.String key,
              com.tencent.angel.metrics.ServingMetricsProtos.Metrics defaultValue) {
            if (key == null) { throw new java.lang.NullPointerException(); }
            java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> map =
                internalGetVersions().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getVersionsOrThrow(
              java.lang.String key) {
            if (key == null) { throw new java.lang.NullPointerException(); }
            java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> map =
                internalGetVersions().getMap();
            if (!map.containsKey(key)) {
              throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
          }
  
          public Builder clearVersions() {
            internalGetMutableVersions().getMutableMap()
                .clear();
            return this;
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public Builder removeVersions(
              java.lang.String key) {
            if (key == null) { throw new java.lang.NullPointerException(); }
            internalGetMutableVersions().getMutableMap()
                .remove(key);
            return this;
          }
          /**
           * Use alternate mutation accessors instead.
           */
          @java.lang.Deprecated
          public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics>
          getMutableVersions() {
            return internalGetMutableVersions().getMutableMap();
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
          public Builder putVersions(
              java.lang.String key,
              com.tencent.angel.metrics.ServingMetricsProtos.Metrics value) {
            if (key == null) { throw new java.lang.NullPointerException(); }
            if (value == null) { throw new java.lang.NullPointerException(); }
            internalGetMutableVersions().getMutableMap()
                .put(key, value);
            return this;
          }
          /**
           * <code>map&lt;string, .angel.serving.Metrics&gt; versions = 1;</code>
           */
  
          public Builder putAllVersions(
              java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.Metrics> values) {
            internalGetMutableVersions().getMutableMap()
                .putAll(values);
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFieldsProto3(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:angel.serving.MetricsResponse.Versions)
        }
  
        // @@protoc_insertion_point(class_scope:angel.serving.MetricsResponse.Versions)
        private static final com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions();
        }
  
        public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        private static final com.google.protobuf.Parser<Versions>
            PARSER = new com.google.protobuf.AbstractParser<Versions>() {
          public Versions parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new Versions(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<Versions> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<Versions> getParserForType() {
          return PARSER;
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public static final int MODELS_FIELD_NUMBER = 1;
      private static final class ModelsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>newDefaultInstance(
                    com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_ModelsEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> models_;
      private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
      internalGetModels() {
        if (models_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ModelsDefaultEntryHolder.defaultEntry);
        }
        return models_;
      }
  
      public int getModelsCount() {
        return internalGetModels().getMap().size();
      }
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      public boolean containsModels(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetModels().getMap().containsKey(key);
      }
      /**
       * Use {@link #getModelsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> getModels() {
        return getModelsMap();
      }
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> getModelsMap() {
        return internalGetModels().getMap();
      }
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrDefault(
          java.lang.String key,
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> map =
            internalGetModels().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
       */
  
      public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> map =
            internalGetModels().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
  
      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 {
        com.google.protobuf.GeneratedMessageV3
          .serializeStringMapTo(
            output,
            internalGetModels(),
            ModelsDefaultEntryHolder.defaultEntry,
            1);
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (java.util.Map.Entry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> entry
             : internalGetModels().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
          models__ = ModelsDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, models__);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse)) {
          return super.equals(obj);
        }
        com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse other = (com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse) obj;
  
        boolean result = true;
        result = result && internalGetModels().equals(
            other.internalGetModels());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (!internalGetModels().getMap().isEmpty()) {
          hash = (37 * hash) + MODELS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetModels().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code angel.serving.MetricsResponse}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.serving.MetricsResponse)
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponseOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_descriptor;
        }
  
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetModels();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetMutableModels();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.class, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Builder.class);
        }
  
        // Construct using com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          internalGetMutableModels().clear();
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_MetricsResponse_descriptor;
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse getDefaultInstanceForType() {
          return com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.getDefaultInstance();
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse build() {
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse buildPartial() {
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse result = new com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse(this);
          int from_bitField0_ = bitField0_;
          result.models_ = internalGetModels();
          result.models_.makeImmutable();
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse) {
            return mergeFrom((com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse other) {
          if (other == com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.getDefaultInstance()) return this;
          internalGetMutableModels().mergeFrom(
              other.internalGetModels());
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          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 {
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.google.protobuf.MapField<
            java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> models_;
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
        internalGetModels() {
          if (models_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                ModelsDefaultEntryHolder.defaultEntry);
          }
          return models_;
        }
        private com.google.protobuf.MapField<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
        internalGetMutableModels() {
          onChanged();;
          if (models_ == null) {
            models_ = com.google.protobuf.MapField.newMapField(
                ModelsDefaultEntryHolder.defaultEntry);
          }
          if (!models_.isMutable()) {
            models_ = models_.copy();
          }
          return models_;
        }
  
        public int getModelsCount() {
          return internalGetModels().getMap().size();
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public boolean containsModels(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          return internalGetModels().getMap().containsKey(key);
        }
        /**
         * Use {@link #getModelsMap()} instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> getModels() {
          return getModelsMap();
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> getModelsMap() {
          return internalGetModels().getMap();
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrDefault(
            java.lang.String key,
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions defaultValue) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> map =
              internalGetModels().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions getModelsOrThrow(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> map =
              internalGetModels().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
  
        public Builder clearModels() {
          internalGetMutableModels().getMutableMap()
              .clear();
          return this;
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public Builder removeModels(
            java.lang.String key) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableModels().getMutableMap()
              .remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions>
        getMutableModels() {
          return internalGetMutableModels().getMutableMap();
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
        public Builder putModels(
            java.lang.String key,
            com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions value) {
          if (key == null) { throw new java.lang.NullPointerException(); }
          if (value == null) { throw new java.lang.NullPointerException(); }
          internalGetMutableModels().getMutableMap()
              .put(key, value);
          return this;
        }
        /**
         * <code>map&lt;string, .angel.serving.MetricsResponse.Versions&gt; models = 1;</code>
         */
  
        public Builder putAllModels(
            java.util.Map<java.lang.String, com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse.Versions> values) {
          internalGetMutableModels().getMutableMap()
              .putAll(values);
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.serving.MetricsResponse)
      }
  
      // @@protoc_insertion_point(class_scope:angel.serving.MetricsResponse)
      private static final com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse();
      }
  
      public static com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<MetricsResponse>
          PARSER = new com.google.protobuf.AbstractParser<MetricsResponse>() {
        public MetricsResponse parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new MetricsResponse(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<MetricsResponse> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<MetricsResponse> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.metrics.ServingMetricsProtos.MetricsResponse getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface MetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:angel.serving.Metrics)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       * 模型名
       * </pre>
       *
       * <code>string model_name = 1;</code>
       */
      java.lang.String getModelName();
      /**
       * <pre>
       * 模型名
       * </pre>
       *
       * <code>string model_name = 1;</code>
       */
      com.google.protobuf.ByteString
          getModelNameBytes();
  
      /**
       * <pre>
       * 版本
       * </pre>
       *
       * <code>uint32 model_version = 2;</code>
       */
      int getModelVersion();
  
      /**
       * <pre>
       * 请求总数：查询时刻之前的累加请求总数.
       * </pre>
       *
       * <code>uint64 prediction_count_total = 3;</code>
       */
      long getPredictionCountTotal();
  
      /**
       * <pre>
       * 请求成功总数：查询时刻之前的累加请求成功总数.
       * </pre>
       *
       * <code>uint64 prediction_count_success = 4;</code>
       */
      long getPredictionCountSuccess();
  
      /**
       * <pre>
       * 请求失败总数：查询时刻之前的累加请求失败总数.
       * </pre>
       *
       * <code>uint64 prediction_count_failed = 5;</code>
       */
      long getPredictionCountFailed();
  
      /**
       * <pre>
       * 请求成功的总耗时:查询时刻之前的累加请求成功的总耗时(单位: ms)
       * </pre>
       *
       * <code>double total_predict_time_ms = 6;</code>
       */
      double getTotalPredictTimeMs();
  
      /**
       * <pre>
       * 请求成功次数 0~5ms
       * </pre>
       *
       * <code>uint64 count_distribution0 = 7;</code>
       */
      long getCountDistribution0();
  
      /**
       * <pre>
       * 请求成功次数 5~10ms
       * </pre>
       *
       * <code>uint64 count_distribution1 = 8;</code>
       */
      long getCountDistribution1();
  
      /**
       * <pre>
       * 请求成功次数 10~15ms
       * </pre>
       *
       * <code>uint64 count_distribution2 = 9;</code>
       */
      long getCountDistribution2();
  
      /**
       * <pre>
       * 请求成功次数 &gt;15ms
       * </pre>
       *
       * <code>uint64 count_distribution3 = 10;</code>
       */
      long getCountDistribution3();
    }
    /**
     * Protobuf type {@code angel.serving.Metrics}
     */
    public  static final class Metrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:angel.serving.Metrics)
        MetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Metrics.newBuilder() to construct.
      private Metrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Metrics() {
        modelName_ = "";
        modelVersion_ = 0;
        predictionCountTotal_ = 0L;
        predictionCountSuccess_ = 0L;
        predictionCountFailed_ = 0L;
        totalPredictTimeMs_ = 0D;
        countDistribution0_ = 0L;
        countDistribution1_ = 0L;
        countDistribution2_ = 0L;
        countDistribution3_ = 0L;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Metrics(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        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 (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
  
                modelName_ = s;
                break;
              }
              case 16: {
  
                modelVersion_ = input.readUInt32();
                break;
              }
              case 24: {
  
                predictionCountTotal_ = input.readUInt64();
                break;
              }
              case 32: {
  
                predictionCountSuccess_ = input.readUInt64();
                break;
              }
              case 40: {
  
                predictionCountFailed_ = input.readUInt64();
                break;
              }
              case 49: {
  
                totalPredictTimeMs_ = input.readDouble();
                break;
              }
              case 56: {
  
                countDistribution0_ = input.readUInt64();
                break;
              }
              case 64: {
  
                countDistribution1_ = input.readUInt64();
                break;
              }
              case 72: {
  
                countDistribution2_ = input.readUInt64();
                break;
              }
              case 80: {
  
                countDistribution3_ = 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).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_Metrics_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_Metrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.tencent.angel.metrics.ServingMetricsProtos.Metrics.class, com.tencent.angel.metrics.ServingMetricsProtos.Metrics.Builder.class);
      }
  
      public static final int MODEL_NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object modelName_;
      /**
       * <pre>
       * 模型名
       * </pre>
       *
       * <code>string model_name = 1;</code>
       */
      public java.lang.String getModelName() {
        java.lang.Object ref = modelName_;
        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();
          modelName_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * 模型名
       * </pre>
       *
       * <code>string model_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getModelNameBytes() {
        java.lang.Object ref = modelName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int MODEL_VERSION_FIELD_NUMBER = 2;
      private int modelVersion_;
      /**
       * <pre>
       * 版本
       * </pre>
       *
       * <code>uint32 model_version = 2;</code>
       */
      public int getModelVersion() {
        return modelVersion_;
      }
  
      public static final int PREDICTION_COUNT_TOTAL_FIELD_NUMBER = 3;
      private long predictionCountTotal_;
      /**
       * <pre>
       * 请求总数：查询时刻之前的累加请求总数.
       * </pre>
       *
       * <code>uint64 prediction_count_total = 3;</code>
       */
      public long getPredictionCountTotal() {
        return predictionCountTotal_;
      }
  
      public static final int PREDICTION_COUNT_SUCCESS_FIELD_NUMBER = 4;
      private long predictionCountSuccess_;
      /**
       * <pre>
       * 请求成功总数：查询时刻之前的累加请求成功总数.
       * </pre>
       *
       * <code>uint64 prediction_count_success = 4;</code>
       */
      public long getPredictionCountSuccess() {
        return predictionCountSuccess_;
      }
  
      public static final int PREDICTION_COUNT_FAILED_FIELD_NUMBER = 5;
      private long predictionCountFailed_;
      /**
       * <pre>
       * 请求失败总数：查询时刻之前的累加请求失败总数.
       * </pre>
       *
       * <code>uint64 prediction_count_failed = 5;</code>
       */
      public long getPredictionCountFailed() {
        return predictionCountFailed_;
      }
  
      public static final int TOTAL_PREDICT_TIME_MS_FIELD_NUMBER = 6;
      private double totalPredictTimeMs_;
      /**
       * <pre>
       * 请求成功的总耗时:查询时刻之前的累加请求成功的总耗时(单位: ms)
       * </pre>
       *
       * <code>double total_predict_time_ms = 6;</code>
       */
      public double getTotalPredictTimeMs() {
        return totalPredictTimeMs_;
      }
  
      public static final int COUNT_DISTRIBUTION0_FIELD_NUMBER = 7;
      private long countDistribution0_;
      /**
       * <pre>
       * 请求成功次数 0~5ms
       * </pre>
       *
       * <code>uint64 count_distribution0 = 7;</code>
       */
      public long getCountDistribution0() {
        return countDistribution0_;
      }
  
      public static final int COUNT_DISTRIBUTION1_FIELD_NUMBER = 8;
      private long countDistribution1_;
      /**
       * <pre>
       * 请求成功次数 5~10ms
       * </pre>
       *
       * <code>uint64 count_distribution1 = 8;</code>
       */
      public long getCountDistribution1() {
        return countDistribution1_;
      }
  
      public static final int COUNT_DISTRIBUTION2_FIELD_NUMBER = 9;
      private long countDistribution2_;
      /**
       * <pre>
       * 请求成功次数 10~15ms
       * </pre>
       *
       * <code>uint64 count_distribution2 = 9;</code>
       */
      public long getCountDistribution2() {
        return countDistribution2_;
      }
  
      public static final int COUNT_DISTRIBUTION3_FIELD_NUMBER = 10;
      private long countDistribution3_;
      /**
       * <pre>
       * 请求成功次数 &gt;15ms
       * </pre>
       *
       * <code>uint64 count_distribution3 = 10;</code>
       */
      public long getCountDistribution3() {
        return countDistribution3_;
      }
  
      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 {
        if (!getModelNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, modelName_);
        }
        if (modelVersion_ != 0) {
          output.writeUInt32(2, modelVersion_);
        }
        if (predictionCountTotal_ != 0L) {
          output.writeUInt64(3, predictionCountTotal_);
        }
        if (predictionCountSuccess_ != 0L) {
          output.writeUInt64(4, predictionCountSuccess_);
        }
        if (predictionCountFailed_ != 0L) {
          output.writeUInt64(5, predictionCountFailed_);
        }
        if (totalPredictTimeMs_ != 0D) {
          output.writeDouble(6, totalPredictTimeMs_);
        }
        if (countDistribution0_ != 0L) {
          output.writeUInt64(7, countDistribution0_);
        }
        if (countDistribution1_ != 0L) {
          output.writeUInt64(8, countDistribution1_);
        }
        if (countDistribution2_ != 0L) {
          output.writeUInt64(9, countDistribution2_);
        }
        if (countDistribution3_ != 0L) {
          output.writeUInt64(10, countDistribution3_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (!getModelNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, modelName_);
        }
        if (modelVersion_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, modelVersion_);
        }
        if (predictionCountTotal_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, predictionCountTotal_);
        }
        if (predictionCountSuccess_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(4, predictionCountSuccess_);
        }
        if (predictionCountFailed_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(5, predictionCountFailed_);
        }
        if (totalPredictTimeMs_ != 0D) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(6, totalPredictTimeMs_);
        }
        if (countDistribution0_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(7, countDistribution0_);
        }
        if (countDistribution1_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(8, countDistribution1_);
        }
        if (countDistribution2_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(9, countDistribution2_);
        }
        if (countDistribution3_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(10, countDistribution3_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.tencent.angel.metrics.ServingMetricsProtos.Metrics)) {
          return super.equals(obj);
        }
        com.tencent.angel.metrics.ServingMetricsProtos.Metrics other = (com.tencent.angel.metrics.ServingMetricsProtos.Metrics) obj;
  
        boolean result = true;
        result = result && getModelName()
            .equals(other.getModelName());
        result = result && (getModelVersion()
            == other.getModelVersion());
        result = result && (getPredictionCountTotal()
            == other.getPredictionCountTotal());
        result = result && (getPredictionCountSuccess()
            == other.getPredictionCountSuccess());
        result = result && (getPredictionCountFailed()
            == other.getPredictionCountFailed());
        result = result && (
            java.lang.Double.doubleToLongBits(getTotalPredictTimeMs())
            == java.lang.Double.doubleToLongBits(
                other.getTotalPredictTimeMs()));
        result = result && (getCountDistribution0()
            == other.getCountDistribution0());
        result = result && (getCountDistribution1()
            == other.getCountDistribution1());
        result = result && (getCountDistribution2()
            == other.getCountDistribution2());
        result = result && (getCountDistribution3()
            == other.getCountDistribution3());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + MODEL_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getModelName().hashCode();
        hash = (37 * hash) + MODEL_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getModelVersion();
        hash = (37 * hash) + PREDICTION_COUNT_TOTAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getPredictionCountTotal());
        hash = (37 * hash) + PREDICTION_COUNT_SUCCESS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getPredictionCountSuccess());
        hash = (37 * hash) + PREDICTION_COUNT_FAILED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getPredictionCountFailed());
        hash = (37 * hash) + TOTAL_PREDICT_TIME_MS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getTotalPredictTimeMs()));
        hash = (37 * hash) + COUNT_DISTRIBUTION0_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCountDistribution0());
        hash = (37 * hash) + COUNT_DISTRIBUTION1_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCountDistribution1());
        hash = (37 * hash) + COUNT_DISTRIBUTION2_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCountDistribution2());
        hash = (37 * hash) + COUNT_DISTRIBUTION3_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCountDistribution3());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.tencent.angel.metrics.ServingMetricsProtos.Metrics prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code angel.serving.Metrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:angel.serving.Metrics)
          com.tencent.angel.metrics.ServingMetricsProtos.MetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_Metrics_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_Metrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.tencent.angel.metrics.ServingMetricsProtos.Metrics.class, com.tencent.angel.metrics.ServingMetricsProtos.Metrics.Builder.class);
        }
  
        // Construct using com.tencent.angel.metrics.ServingMetricsProtos.Metrics.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          modelName_ = "";
  
          modelVersion_ = 0;
  
          predictionCountTotal_ = 0L;
  
          predictionCountSuccess_ = 0L;
  
          predictionCountFailed_ = 0L;
  
          totalPredictTimeMs_ = 0D;
  
          countDistribution0_ = 0L;
  
          countDistribution1_ = 0L;
  
          countDistribution2_ = 0L;
  
          countDistribution3_ = 0L;
  
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.tencent.angel.metrics.ServingMetricsProtos.internal_static_angel_serving_Metrics_descriptor;
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getDefaultInstanceForType() {
          return com.tencent.angel.metrics.ServingMetricsProtos.Metrics.getDefaultInstance();
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.Metrics build() {
          com.tencent.angel.metrics.ServingMetricsProtos.Metrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.tencent.angel.metrics.ServingMetricsProtos.Metrics buildPartial() {
          com.tencent.angel.metrics.ServingMetricsProtos.Metrics result = new com.tencent.angel.metrics.ServingMetricsProtos.Metrics(this);
          result.modelName_ = modelName_;
          result.modelVersion_ = modelVersion_;
          result.predictionCountTotal_ = predictionCountTotal_;
          result.predictionCountSuccess_ = predictionCountSuccess_;
          result.predictionCountFailed_ = predictionCountFailed_;
          result.totalPredictTimeMs_ = totalPredictTimeMs_;
          result.countDistribution0_ = countDistribution0_;
          result.countDistribution1_ = countDistribution1_;
          result.countDistribution2_ = countDistribution2_;
          result.countDistribution3_ = countDistribution3_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.tencent.angel.metrics.ServingMetricsProtos.Metrics) {
            return mergeFrom((com.tencent.angel.metrics.ServingMetricsProtos.Metrics)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.tencent.angel.metrics.ServingMetricsProtos.Metrics other) {
          if (other == com.tencent.angel.metrics.ServingMetricsProtos.Metrics.getDefaultInstance()) return this;
          if (!other.getModelName().isEmpty()) {
            modelName_ = other.modelName_;
            onChanged();
          }
          if (other.getModelVersion() != 0) {
            setModelVersion(other.getModelVersion());
          }
          if (other.getPredictionCountTotal() != 0L) {
            setPredictionCountTotal(other.getPredictionCountTotal());
          }
          if (other.getPredictionCountSuccess() != 0L) {
            setPredictionCountSuccess(other.getPredictionCountSuccess());
          }
          if (other.getPredictionCountFailed() != 0L) {
            setPredictionCountFailed(other.getPredictionCountFailed());
          }
          if (other.getTotalPredictTimeMs() != 0D) {
            setTotalPredictTimeMs(other.getTotalPredictTimeMs());
          }
          if (other.getCountDistribution0() != 0L) {
            setCountDistribution0(other.getCountDistribution0());
          }
          if (other.getCountDistribution1() != 0L) {
            setCountDistribution1(other.getCountDistribution1());
          }
          if (other.getCountDistribution2() != 0L) {
            setCountDistribution2(other.getCountDistribution2());
          }
          if (other.getCountDistribution3() != 0L) {
            setCountDistribution3(other.getCountDistribution3());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          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 {
          com.tencent.angel.metrics.ServingMetricsProtos.Metrics parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.tencent.angel.metrics.ServingMetricsProtos.Metrics) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
  
        private java.lang.Object modelName_ = "";
        /**
         * <pre>
         * 模型名
         * </pre>
         *
         * <code>string model_name = 1;</code>
         */
        public java.lang.String getModelName() {
          java.lang.Object ref = modelName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            modelName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * 模型名
         * </pre>
         *
         * <code>string model_name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getModelNameBytes() {
          java.lang.Object ref = modelName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            modelName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * 模型名
         * </pre>
         *
         * <code>string model_name = 1;</code>
         */
        public Builder setModelName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    
          modelName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 模型名
         * </pre>
         *
         * <code>string model_name = 1;</code>
         */
        public Builder clearModelName() {
          
          modelName_ = getDefaultInstance().getModelName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 模型名
         * </pre>
         *
         * <code>string model_name = 1;</code>
         */
        public Builder setModelNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    checkByteStringIsUtf8(value);
          
          modelName_ = value;
          onChanged();
          return this;
        }
  
        private int modelVersion_ ;
        /**
         * <pre>
         * 版本
         * </pre>
         *
         * <code>uint32 model_version = 2;</code>
         */
        public int getModelVersion() {
          return modelVersion_;
        }
        /**
         * <pre>
         * 版本
         * </pre>
         *
         * <code>uint32 model_version = 2;</code>
         */
        public Builder setModelVersion(int value) {
          
          modelVersion_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 版本
         * </pre>
         *
         * <code>uint32 model_version = 2;</code>
         */
        public Builder clearModelVersion() {
          
          modelVersion_ = 0;
          onChanged();
          return this;
        }
  
        private long predictionCountTotal_ ;
        /**
         * <pre>
         * 请求总数：查询时刻之前的累加请求总数.
         * </pre>
         *
         * <code>uint64 prediction_count_total = 3;</code>
         */
        public long getPredictionCountTotal() {
          return predictionCountTotal_;
        }
        /**
         * <pre>
         * 请求总数：查询时刻之前的累加请求总数.
         * </pre>
         *
         * <code>uint64 prediction_count_total = 3;</code>
         */
        public Builder setPredictionCountTotal(long value) {
          
          predictionCountTotal_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求总数：查询时刻之前的累加请求总数.
         * </pre>
         *
         * <code>uint64 prediction_count_total = 3;</code>
         */
        public Builder clearPredictionCountTotal() {
          
          predictionCountTotal_ = 0L;
          onChanged();
          return this;
        }
  
        private long predictionCountSuccess_ ;
        /**
         * <pre>
         * 请求成功总数：查询时刻之前的累加请求成功总数.
         * </pre>
         *
         * <code>uint64 prediction_count_success = 4;</code>
         */
        public long getPredictionCountSuccess() {
          return predictionCountSuccess_;
        }
        /**
         * <pre>
         * 请求成功总数：查询时刻之前的累加请求成功总数.
         * </pre>
         *
         * <code>uint64 prediction_count_success = 4;</code>
         */
        public Builder setPredictionCountSuccess(long value) {
          
          predictionCountSuccess_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功总数：查询时刻之前的累加请求成功总数.
         * </pre>
         *
         * <code>uint64 prediction_count_success = 4;</code>
         */
        public Builder clearPredictionCountSuccess() {
          
          predictionCountSuccess_ = 0L;
          onChanged();
          return this;
        }
  
        private long predictionCountFailed_ ;
        /**
         * <pre>
         * 请求失败总数：查询时刻之前的累加请求失败总数.
         * </pre>
         *
         * <code>uint64 prediction_count_failed = 5;</code>
         */
        public long getPredictionCountFailed() {
          return predictionCountFailed_;
        }
        /**
         * <pre>
         * 请求失败总数：查询时刻之前的累加请求失败总数.
         * </pre>
         *
         * <code>uint64 prediction_count_failed = 5;</code>
         */
        public Builder setPredictionCountFailed(long value) {
          
          predictionCountFailed_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求失败总数：查询时刻之前的累加请求失败总数.
         * </pre>
         *
         * <code>uint64 prediction_count_failed = 5;</code>
         */
        public Builder clearPredictionCountFailed() {
          
          predictionCountFailed_ = 0L;
          onChanged();
          return this;
        }
  
        private double totalPredictTimeMs_ ;
        /**
         * <pre>
         * 请求成功的总耗时:查询时刻之前的累加请求成功的总耗时(单位: ms)
         * </pre>
         *
         * <code>double total_predict_time_ms = 6;</code>
         */
        public double getTotalPredictTimeMs() {
          return totalPredictTimeMs_;
        }
        /**
         * <pre>
         * 请求成功的总耗时:查询时刻之前的累加请求成功的总耗时(单位: ms)
         * </pre>
         *
         * <code>double total_predict_time_ms = 6;</code>
         */
        public Builder setTotalPredictTimeMs(double value) {
          
          totalPredictTimeMs_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功的总耗时:查询时刻之前的累加请求成功的总耗时(单位: ms)
         * </pre>
         *
         * <code>double total_predict_time_ms = 6;</code>
         */
        public Builder clearTotalPredictTimeMs() {
          
          totalPredictTimeMs_ = 0D;
          onChanged();
          return this;
        }
  
        private long countDistribution0_ ;
        /**
         * <pre>
         * 请求成功次数 0~5ms
         * </pre>
         *
         * <code>uint64 count_distribution0 = 7;</code>
         */
        public long getCountDistribution0() {
          return countDistribution0_;
        }
        /**
         * <pre>
         * 请求成功次数 0~5ms
         * </pre>
         *
         * <code>uint64 count_distribution0 = 7;</code>
         */
        public Builder setCountDistribution0(long value) {
          
          countDistribution0_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功次数 0~5ms
         * </pre>
         *
         * <code>uint64 count_distribution0 = 7;</code>
         */
        public Builder clearCountDistribution0() {
          
          countDistribution0_ = 0L;
          onChanged();
          return this;
        }
  
        private long countDistribution1_ ;
        /**
         * <pre>
         * 请求成功次数 5~10ms
         * </pre>
         *
         * <code>uint64 count_distribution1 = 8;</code>
         */
        public long getCountDistribution1() {
          return countDistribution1_;
        }
        /**
         * <pre>
         * 请求成功次数 5~10ms
         * </pre>
         *
         * <code>uint64 count_distribution1 = 8;</code>
         */
        public Builder setCountDistribution1(long value) {
          
          countDistribution1_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功次数 5~10ms
         * </pre>
         *
         * <code>uint64 count_distribution1 = 8;</code>
         */
        public Builder clearCountDistribution1() {
          
          countDistribution1_ = 0L;
          onChanged();
          return this;
        }
  
        private long countDistribution2_ ;
        /**
         * <pre>
         * 请求成功次数 10~15ms
         * </pre>
         *
         * <code>uint64 count_distribution2 = 9;</code>
         */
        public long getCountDistribution2() {
          return countDistribution2_;
        }
        /**
         * <pre>
         * 请求成功次数 10~15ms
         * </pre>
         *
         * <code>uint64 count_distribution2 = 9;</code>
         */
        public Builder setCountDistribution2(long value) {
          
          countDistribution2_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功次数 10~15ms
         * </pre>
         *
         * <code>uint64 count_distribution2 = 9;</code>
         */
        public Builder clearCountDistribution2() {
          
          countDistribution2_ = 0L;
          onChanged();
          return this;
        }
  
        private long countDistribution3_ ;
        /**
         * <pre>
         * 请求成功次数 &gt;15ms
         * </pre>
         *
         * <code>uint64 count_distribution3 = 10;</code>
         */
        public long getCountDistribution3() {
          return countDistribution3_;
        }
        /**
         * <pre>
         * 请求成功次数 &gt;15ms
         * </pre>
         *
         * <code>uint64 count_distribution3 = 10;</code>
         */
        public Builder setCountDistribution3(long value) {
          
          countDistribution3_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * 请求成功次数 &gt;15ms
         * </pre>
         *
         * <code>uint64 count_distribution3 = 10;</code>
         */
        public Builder clearCountDistribution3() {
          
          countDistribution3_ = 0L;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:angel.serving.Metrics)
      }
  
      // @@protoc_insertion_point(class_scope:angel.serving.Metrics)
      private static final com.tencent.angel.metrics.ServingMetricsProtos.Metrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.tencent.angel.metrics.ServingMetricsProtos.Metrics();
      }
  
      public static com.tencent.angel.metrics.ServingMetricsProtos.Metrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<Metrics>
          PARSER = new com.google.protobuf.AbstractParser<Metrics>() {
        public Metrics parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Metrics(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Metrics> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Metrics> getParserForType() {
        return PARSER;
      }
  
      public com.tencent.angel.metrics.ServingMetricsProtos.Metrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_serving_MetricsResponse_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_serving_MetricsResponse_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_serving_MetricsResponse_ModelsEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_serving_MetricsResponse_ModelsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_serving_MetricsResponse_Versions_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_serving_MetricsResponse_Versions_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_angel_serving_Metrics_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_angel_serving_Metrics_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\035metrics/serving_metrics.proto\022\rangel.s" +
        "erving\"\304\002\n\017MetricsResponse\022:\n\006models\030\001 \003" +
        "(\0132*.angel.serving.MetricsResponse.Model" +
        "sEntry\032V\n\013ModelsEntry\022\013\n\003key\030\001 \001(\t\0226\n\005va" +
        "lue\030\002 \001(\0132\'.angel.serving.MetricsRespons" +
        "e.Versions:\0028\001\032\234\001\n\010Versions\022G\n\010versions\030" +
        "\001 \003(\01325.angel.serving.MetricsResponse.Ve" +
        "rsions.VersionsEntry\032G\n\rVersionsEntry\022\013\n" +
        "\003key\030\001 \001(\t\022%\n\005value\030\002 \001(\0132\026.angel.servin" +
        "g.Metrics:\0028\001\"\252\002\n\007Metrics\022\022\n\nmodel_name\030" +
        "\001 \001(\t\022\025\n\rmodel_version\030\002 \001(\r\022\036\n\026predicti" +
        "on_count_total\030\003 \001(\004\022 \n\030prediction_count" +
        "_success\030\004 \001(\004\022\037\n\027prediction_count_faile" +
        "d\030\005 \001(\004\022\035\n\025total_predict_time_ms\030\006 \001(\001\022\033" +
        "\n\023count_distribution0\030\007 \001(\004\022\033\n\023count_dis" +
        "tribution1\030\010 \001(\004\022\033\n\023count_distribution2\030" +
        "\t \001(\004\022\033\n\023count_distribution3\030\n \001(\004B1\n\031co" +
        "m.tencent.angel.metricsB\024ServingMetricsP" +
        "rotosb\006proto3"
      };
      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[] {
          }, assigner);
      internal_static_angel_serving_MetricsResponse_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_angel_serving_MetricsResponse_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_serving_MetricsResponse_descriptor,
          new java.lang.String[] { "Models", });
      internal_static_angel_serving_MetricsResponse_ModelsEntry_descriptor =
        internal_static_angel_serving_MetricsResponse_descriptor.getNestedTypes().get(0);
      internal_static_angel_serving_MetricsResponse_ModelsEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_serving_MetricsResponse_ModelsEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_serving_MetricsResponse_Versions_descriptor =
        internal_static_angel_serving_MetricsResponse_descriptor.getNestedTypes().get(1);
      internal_static_angel_serving_MetricsResponse_Versions_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_serving_MetricsResponse_Versions_descriptor,
          new java.lang.String[] { "Versions", });
      internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_descriptor =
        internal_static_angel_serving_MetricsResponse_Versions_descriptor.getNestedTypes().get(0);
      internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_serving_MetricsResponse_Versions_VersionsEntry_descriptor,
          new java.lang.String[] { "Key", "Value", });
      internal_static_angel_serving_Metrics_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_angel_serving_Metrics_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_angel_serving_Metrics_descriptor,
          new java.lang.String[] { "ModelName", "ModelVersion", "PredictionCountTotal", "PredictionCountSuccess", "PredictionCountFailed", "TotalPredictTimeMs", "CountDistribution0", "CountDistribution1", "CountDistribution2", "CountDistribution3", });
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  