// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_stream_v1.proto

package ru.keyapis.telemetry_control.v1;

public final class KeyapisTelemetryControlV1Proto {
  private KeyapisTelemetryControlV1Proto() {}
  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 PostResourceFullDuplexResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     * @return Whether the upsertResourceEvent field is set.
     */
    boolean hasUpsertResourceEvent();
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     * @return The upsertResourceEvent.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getUpsertResourceEvent();
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder getUpsertResourceEventOrBuilder();

    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     * @return Whether the removeResourceEvent field is set.
     */
    boolean hasRemoveResourceEvent();
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     * @return The removeResourceEvent.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getRemoveResourceEvent();
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder getRemoveResourceEventOrBuilder();

    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.EventCase getEventCase();
  }
  /**
   * <pre>
   * Событие создания/изменения ресурса
   * </pre>
   *
   * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse}
   */
  public static final class PostResourceFullDuplexResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse)
      PostResourceFullDuplexResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostResourceFullDuplexResponse.newBuilder() to construct.
    private PostResourceFullDuplexResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostResourceFullDuplexResponse() {
      requestId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PostResourceFullDuplexResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.Builder.class);
    }

    public interface RemoveResourceEventOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resourceId field is set.
       */
      boolean hasResourceId();
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resourceId.
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId();
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder();
    }
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent}
     */
    public static final class RemoveResourceEvent extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent)
        RemoveResourceEventOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use RemoveResourceEvent.newBuilder() to construct.
      private RemoveResourceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RemoveResourceEvent() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new RemoveResourceEvent();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder.class);
      }

      public static final int RESOURCE_ID_FIELD_NUMBER = 1;
      private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId resourceId_;
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resourceId field is set.
       */
      @java.lang.Override
      public boolean hasResourceId() {
        return resourceId_ != null;
      }
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resourceId.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId() {
        return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
      }
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder() {
        return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (resourceId_ != null) {
          output.writeMessage(1, getResourceId());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (resourceId_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getResourceId());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent)) {
          return super.equals(obj);
        }
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) obj;

        if (hasResourceId() != other.hasResourceId()) return false;
        if (hasResourceId()) {
          if (!getResourceId()
              .equals(other.getResourceId())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasResourceId()) {
          hash = (37 * hash) + RESOURCE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getResourceId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      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;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent)
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder.class);
        }

        // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          resourceId_ = null;
          if (resourceIdBuilder_ != null) {
            resourceIdBuilder_.dispose();
            resourceIdBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getDefaultInstanceForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent build() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent buildPartial() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.resourceId_ = resourceIdBuilder_ == null
                ? resourceId_
                : resourceIdBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) {
            return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent other) {
          if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance()) return this;
          if (other.hasResourceId()) {
            mergeResourceId(other.getResourceId());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getResourceIdFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId resourceId_;
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder> resourceIdBuilder_;
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return Whether the resourceId field is set.
         */
        public boolean hasResourceId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The resourceId.
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId() {
          if (resourceIdBuilder_ == null) {
            return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
          } else {
            return resourceIdBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResourceId(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId value) {
          if (resourceIdBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            resourceId_ = value;
          } else {
            resourceIdBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResourceId(
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder builderForValue) {
          if (resourceIdBuilder_ == null) {
            resourceId_ = builderForValue.build();
          } else {
            resourceIdBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder mergeResourceId(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId value) {
          if (resourceIdBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              resourceId_ != null &&
              resourceId_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance()) {
              getResourceIdBuilder().mergeFrom(value);
            } else {
              resourceId_ = value;
            }
          } else {
            resourceIdBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder clearResourceId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          resourceId_ = null;
          if (resourceIdBuilder_ != null) {
            resourceIdBuilder_.dispose();
            resourceIdBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder getResourceIdBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getResourceIdFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder() {
          if (resourceIdBuilder_ != null) {
            return resourceIdBuilder_.getMessageOrBuilder();
          } else {
            return resourceId_ == null ?
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
          }
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder> 
            getResourceIdFieldBuilder() {
          if (resourceIdBuilder_ == null) {
            resourceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder>(
                    getResourceId(),
                    getParentForChildren(),
                    isClean());
            resourceId_ = null;
          }
          return resourceIdBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent)
      }

      // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent)
      private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent();
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<RemoveResourceEvent>
          PARSER = new com.google.protobuf.AbstractParser<RemoveResourceEvent>() {
        @java.lang.Override
        public RemoveResourceEvent parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<RemoveResourceEvent> parser() {
        return PARSER;
      }

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

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface UpsertResourceEventOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resource field is set.
       */
      boolean hasResource();
      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resource.
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getResource();
      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder getResourceOrBuilder();
    }
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent}
     */
    public static final class UpsertResourceEvent extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent)
        UpsertResourceEventOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UpsertResourceEvent.newBuilder() to construct.
      private UpsertResourceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UpsertResourceEvent() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new UpsertResourceEvent();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder.class);
      }

      public static final int RESOURCE_FIELD_NUMBER = 1;
      private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource resource_;
      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resource field is set.
       */
      @java.lang.Override
      public boolean hasResource() {
        return resource_ != null;
      }
      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resource.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getResource() {
        return resource_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance() : resource_;
      }
      /**
       * <pre>
       * Ресурс
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder getResourceOrBuilder() {
        return resource_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance() : resource_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (resource_ != null) {
          output.writeMessage(1, getResource());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (resource_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getResource());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent)) {
          return super.equals(obj);
        }
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) obj;

        if (hasResource() != other.hasResource()) return false;
        if (hasResource()) {
          if (!getResource()
              .equals(other.getResource())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasResource()) {
          hash = (37 * hash) + RESOURCE_FIELD_NUMBER;
          hash = (53 * hash) + getResource().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      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;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent)
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder.class);
        }

        // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          resource_ = null;
          if (resourceBuilder_ != null) {
            resourceBuilder_.dispose();
            resourceBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getDefaultInstanceForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent build() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent buildPartial() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.resource_ = resourceBuilder_ == null
                ? resource_
                : resourceBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) {
            return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent other) {
          if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance()) return this;
          if (other.hasResource()) {
            mergeResource(other.getResource());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getResourceFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource resource_;
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder> resourceBuilder_;
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return Whether the resource field is set.
         */
        public boolean hasResource() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The resource.
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getResource() {
          if (resourceBuilder_ == null) {
            return resource_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance() : resource_;
          } else {
            return resourceBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResource(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource value) {
          if (resourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            resource_ = value;
          } else {
            resourceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResource(
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder builderForValue) {
          if (resourceBuilder_ == null) {
            resource_ = builderForValue.build();
          } else {
            resourceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder mergeResource(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource value) {
          if (resourceBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              resource_ != null &&
              resource_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance()) {
              getResourceBuilder().mergeFrom(value);
            } else {
              resource_ = value;
            }
          } else {
            resourceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder clearResource() {
          bitField0_ = (bitField0_ & ~0x00000001);
          resource_ = null;
          if (resourceBuilder_ != null) {
            resourceBuilder_.dispose();
            resourceBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder getResourceBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getResourceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder getResourceOrBuilder() {
          if (resourceBuilder_ != null) {
            return resourceBuilder_.getMessageOrBuilder();
          } else {
            return resource_ == null ?
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance() : resource_;
          }
        }
        /**
         * <pre>
         * Ресурс
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.Resource resource = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder> 
            getResourceFieldBuilder() {
          if (resourceBuilder_ == null) {
            resourceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder>(
                    getResource(),
                    getParentForChildren(),
                    isClean());
            resource_ = null;
          }
          return resourceBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent)
      }

      // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent)
      private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent();
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<UpsertResourceEvent>
          PARSER = new com.google.protobuf.AbstractParser<UpsertResourceEvent>() {
        @java.lang.Override
        public UpsertResourceEvent parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<UpsertResourceEvent> parser() {
        return PARSER;
      }

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

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int eventCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object event_;
    public enum EventCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      UPSERT_RESOURCE_EVENT(2),
      REMOVE_RESOURCE_EVENT(3),
      EVENT_NOT_SET(0);
      private final int value;
      private EventCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventCase valueOf(int value) {
        return forNumber(value);
      }

      public static EventCase forNumber(int value) {
        switch (value) {
          case 2: return UPSERT_RESOURCE_EVENT;
          case 3: return REMOVE_RESOURCE_EVENT;
          case 0: return EVENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EventCase
    getEventCase() {
      return EventCase.forNumber(
          eventCase_);
    }

    public static final int REQUEST_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requestId_ = "";
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      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();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UPSERT_RESOURCE_EVENT_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     * @return Whether the upsertResourceEvent field is set.
     */
    @java.lang.Override
    public boolean hasUpsertResourceEvent() {
      return eventCase_ == 2;
    }
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     * @return The upsertResourceEvent.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getUpsertResourceEvent() {
      if (eventCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
    }
    /**
     * <pre>
     * Событие создания/обновления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder getUpsertResourceEventOrBuilder() {
      if (eventCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
    }

    public static final int REMOVE_RESOURCE_EVENT_FIELD_NUMBER = 3;
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     * @return Whether the removeResourceEvent field is set.
     */
    @java.lang.Override
    public boolean hasRemoveResourceEvent() {
      return eventCase_ == 3;
    }
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     * @return The removeResourceEvent.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getRemoveResourceEvent() {
      if (eventCase_ == 3) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
    }
    /**
     * <pre>
     * Событие удаления ресурса
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder getRemoveResourceEventOrBuilder() {
      if (eventCase_ == 3) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, requestId_);
      }
      if (eventCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_);
      }
      if (eventCase_ == 3) {
        output.writeMessage(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, requestId_);
      }
      if (eventCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_);
      }
      if (eventCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse) obj;

      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (!getEventCase().equals(other.getEventCase())) return false;
      switch (eventCase_) {
        case 2:
          if (!getUpsertResourceEvent()
              .equals(other.getUpsertResourceEvent())) return false;
          break;
        case 3:
          if (!getRemoveResourceEvent()
              .equals(other.getRemoveResourceEvent())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REQUEST_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      switch (eventCase_) {
        case 2:
          hash = (37 * hash) + UPSERT_RESOURCE_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getUpsertResourceEvent().hashCode();
          break;
        case 3:
          hash = (37 * hash) + REMOVE_RESOURCE_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getRemoveResourceEvent().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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;
    }
    /**
     * <pre>
     * Событие создания/изменения ресурса
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse)
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.Builder.class);
      }

      // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        requestId_ = "";
        if (upsertResourceEventBuilder_ != null) {
          upsertResourceEventBuilder_.clear();
        }
        if (removeResourceEventBuilder_ != null) {
          removeResourceEventBuilder_.clear();
        }
        eventCase_ = 0;
        event_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse getDefaultInstanceForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse build() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse buildPartial() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.requestId_ = requestId_;
        }
      }

      private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse result) {
        result.eventCase_ = eventCase_;
        result.event_ = this.event_;
        if (eventCase_ == 2 &&
            upsertResourceEventBuilder_ != null) {
          result.event_ = upsertResourceEventBuilder_.build();
        }
        if (eventCase_ == 3 &&
            removeResourceEventBuilder_ != null) {
          result.event_ = removeResourceEventBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse) {
          return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse other) {
        if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.getDefaultInstance()) return this;
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        switch (other.getEventCase()) {
          case UPSERT_RESOURCE_EVENT: {
            mergeUpsertResourceEvent(other.getUpsertResourceEvent());
            break;
          }
          case REMOVE_RESOURCE_EVENT: {
            mergeRemoveResourceEvent(other.getRemoveResourceEvent());
            break;
          }
          case EVENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                requestId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getUpsertResourceEventFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventCase_ = 2;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getRemoveResourceEventFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventCase_ = 3;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int eventCase_ = 0;
      private java.lang.Object event_;
      public EventCase
          getEventCase() {
        return EventCase.forNumber(
            eventCase_);
      }

      public Builder clearEvent() {
        eventCase_ = 0;
        event_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requestId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        requestId_ = getDefaultInstance().getRequestId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        requestId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder> upsertResourceEventBuilder_;
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       * @return Whether the upsertResourceEvent field is set.
       */
      @java.lang.Override
      public boolean hasUpsertResourceEvent() {
        return eventCase_ == 2;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       * @return The upsertResourceEvent.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent getUpsertResourceEvent() {
        if (upsertResourceEventBuilder_ == null) {
          if (eventCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 2) {
            return upsertResourceEventBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      public Builder setUpsertResourceEvent(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent value) {
        if (upsertResourceEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          upsertResourceEventBuilder_.setMessage(value);
        }
        eventCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      public Builder setUpsertResourceEvent(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder builderForValue) {
        if (upsertResourceEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          upsertResourceEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      public Builder mergeUpsertResourceEvent(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent value) {
        if (upsertResourceEventBuilder_ == null) {
          if (eventCase_ == 2 &&
              event_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance()) {
            event_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 2) {
            upsertResourceEventBuilder_.mergeFrom(value);
          } else {
            upsertResourceEventBuilder_.setMessage(value);
          }
        }
        eventCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      public Builder clearUpsertResourceEvent() {
        if (upsertResourceEventBuilder_ == null) {
          if (eventCase_ == 2) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 2) {
            eventCase_ = 0;
            event_ = null;
          }
          upsertResourceEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder getUpsertResourceEventBuilder() {
        return getUpsertResourceEventFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder getUpsertResourceEventOrBuilder() {
        if ((eventCase_ == 2) && (upsertResourceEventBuilder_ != null)) {
          return upsertResourceEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Событие создания/обновления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.UpsertResourceEvent upsert_resource_event = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder> 
          getUpsertResourceEventFieldBuilder() {
        if (upsertResourceEventBuilder_ == null) {
          if (!(eventCase_ == 2)) {
            event_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.getDefaultInstance();
          }
          upsertResourceEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEventOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.UpsertResourceEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 2;
        onChanged();
        return upsertResourceEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder> removeResourceEventBuilder_;
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       * @return Whether the removeResourceEvent field is set.
       */
      @java.lang.Override
      public boolean hasRemoveResourceEvent() {
        return eventCase_ == 3;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       * @return The removeResourceEvent.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent getRemoveResourceEvent() {
        if (removeResourceEventBuilder_ == null) {
          if (eventCase_ == 3) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 3) {
            return removeResourceEventBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      public Builder setRemoveResourceEvent(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent value) {
        if (removeResourceEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          removeResourceEventBuilder_.setMessage(value);
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      public Builder setRemoveResourceEvent(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder builderForValue) {
        if (removeResourceEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          removeResourceEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      public Builder mergeRemoveResourceEvent(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent value) {
        if (removeResourceEventBuilder_ == null) {
          if (eventCase_ == 3 &&
              event_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance()) {
            event_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 3) {
            removeResourceEventBuilder_.mergeFrom(value);
          } else {
            removeResourceEventBuilder_.setMessage(value);
          }
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      public Builder clearRemoveResourceEvent() {
        if (removeResourceEventBuilder_ == null) {
          if (eventCase_ == 3) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 3) {
            eventCase_ = 0;
            event_ = null;
          }
          removeResourceEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder getRemoveResourceEventBuilder() {
        return getRemoveResourceEventFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder getRemoveResourceEventOrBuilder() {
        if ((eventCase_ == 3) && (removeResourceEventBuilder_ != null)) {
          return removeResourceEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 3) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Событие удаления ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexResponse.RemoveResourceEvent remove_resource_event = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder> 
          getRemoveResourceEventFieldBuilder() {
        if (removeResourceEventBuilder_ == null) {
          if (!(eventCase_ == 3)) {
            event_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.getDefaultInstance();
          }
          removeResourceEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEventOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse.RemoveResourceEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 3;
        onChanged();
        return removeResourceEventBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexResponse)
    private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse();
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostResourceFullDuplexResponse>
        PARSER = new com.google.protobuf.AbstractParser<PostResourceFullDuplexResponse>() {
      @java.lang.Override
      public PostResourceFullDuplexResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PostResourceFullDuplexResponse> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.ResourceId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор объекта строительства
     * </pre>
     *
     * <code>int32 building_id = 1;</code>
     * @return Whether the buildingId field is set.
     */
    boolean hasBuildingId();
    /**
     * <pre>
     * Идентификатор объекта строительства
     * </pre>
     *
     * <code>int32 building_id = 1;</code>
     * @return The buildingId.
     */
    int getBuildingId();

    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>int32 device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    boolean hasDeviceId();
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>int32 device_id = 2;</code>
     * @return The deviceId.
     */
    int getDeviceId();

    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return Whether the metricPointId field is set.
     */
    boolean hasMetricPointId();
    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return The metricPointId.
     */
    java.lang.String getMetricPointId();
    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return The bytes for metricPointId.
     */
    com.google.protobuf.ByteString
        getMetricPointIdBytes();

    /**
     * <pre>
     * Идентификатор индикатора
     * </pre>
     *
     * <code>int32 indicator_id = 4;</code>
     * @return Whether the indicatorId field is set.
     */
    boolean hasIndicatorId();
    /**
     * <pre>
     * Идентификатор индикатора
     * </pre>
     *
     * <code>int32 indicator_id = 4;</code>
     * @return The indicatorId.
     */
    int getIndicatorId();

    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return Whether the indicatorMetricPoint field is set.
     */
    boolean hasIndicatorMetricPoint();
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return The indicatorMetricPoint.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint();
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder();

    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Идентификатор ресурса
   * </pre>
   *
   * Protobuf type {@code keyapis.telemetry_control.v1.ResourceId}
   */
  public static final class ResourceId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.ResourceId)
      ResourceIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResourceId.newBuilder() to construct.
    private ResourceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResourceId() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResourceId();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_ResourceId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder.class);
    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      BUILDING_ID(1),
      DEVICE_ID(2),
      METRIC_POINT_ID(3),
      INDICATOR_ID(4),
      INDICATOR_METRIC_POINT(5),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return BUILDING_ID;
          case 2: return DEVICE_ID;
          case 3: return METRIC_POINT_ID;
          case 4: return INDICATOR_ID;
          case 5: return INDICATOR_METRIC_POINT;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int BUILDING_ID_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Идентификатор объекта строительства
     * </pre>
     *
     * <code>int32 building_id = 1;</code>
     * @return Whether the buildingId field is set.
     */
    @java.lang.Override
    public boolean hasBuildingId() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Идентификатор объекта строительства
     * </pre>
     *
     * <code>int32 building_id = 1;</code>
     * @return The buildingId.
     */
    @java.lang.Override
    public int getBuildingId() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    public static final int DEVICE_ID_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>int32 device_id = 2;</code>
     * @return Whether the deviceId field is set.
     */
    @java.lang.Override
    public boolean hasDeviceId() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>int32 device_id = 2;</code>
     * @return The deviceId.
     */
    @java.lang.Override
    public int getDeviceId() {
      if (typeCase_ == 2) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    public static final int METRIC_POINT_ID_FIELD_NUMBER = 3;
    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return Whether the metricPointId field is set.
     */
    public boolean hasMetricPointId() {
      return typeCase_ == 3;
    }
    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return The metricPointId.
     */
    public java.lang.String getMetricPointId() {
      java.lang.Object ref = "";
      if (typeCase_ == 3) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (typeCase_ == 3) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор ТУ
     * </pre>
     *
     * <code>string metric_point_id = 3;</code>
     * @return The bytes for metricPointId.
     */
    public com.google.protobuf.ByteString
        getMetricPointIdBytes() {
      java.lang.Object ref = "";
      if (typeCase_ == 3) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (typeCase_ == 3) {
          type_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INDICATOR_ID_FIELD_NUMBER = 4;
    /**
     * <pre>
     * Идентификатор индикатора
     * </pre>
     *
     * <code>int32 indicator_id = 4;</code>
     * @return Whether the indicatorId field is set.
     */
    @java.lang.Override
    public boolean hasIndicatorId() {
      return typeCase_ == 4;
    }
    /**
     * <pre>
     * Идентификатор индикатора
     * </pre>
     *
     * <code>int32 indicator_id = 4;</code>
     * @return The indicatorId.
     */
    @java.lang.Override
    public int getIndicatorId() {
      if (typeCase_ == 4) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    public static final int INDICATOR_METRIC_POINT_FIELD_NUMBER = 5;
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return Whether the indicatorMetricPoint field is set.
     */
    @java.lang.Override
    public boolean hasIndicatorMetricPoint() {
      return typeCase_ == 5;
    }
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return The indicatorMetricPoint.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint() {
      if (typeCase_ == 5) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
    }
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder() {
      if (typeCase_ == 5) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        output.writeInt32(
            2, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
      }
      if (typeCase_ == 4) {
        output.writeInt32(
            4, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 5) {
        output.writeMessage(5, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              2, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
      }
      if (typeCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              4, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId)) {
        return super.equals(obj);
      }
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (getBuildingId()
              != other.getBuildingId()) return false;
          break;
        case 2:
          if (getDeviceId()
              != other.getDeviceId()) return false;
          break;
        case 3:
          if (!getMetricPointId()
              .equals(other.getMetricPointId())) return false;
          break;
        case 4:
          if (getIndicatorId()
              != other.getIndicatorId()) return false;
          break;
        case 5:
          if (!getIndicatorMetricPoint()
              .equals(other.getIndicatorMetricPoint())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + BUILDING_ID_FIELD_NUMBER;
          hash = (53 * hash) + getBuildingId();
          break;
        case 2:
          hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getDeviceId();
          break;
        case 3:
          hash = (37 * hash) + METRIC_POINT_ID_FIELD_NUMBER;
          hash = (53 * hash) + getMetricPointId().hashCode();
          break;
        case 4:
          hash = (37 * hash) + INDICATOR_ID_FIELD_NUMBER;
          hash = (53 * hash) + getIndicatorId();
          break;
        case 5:
          hash = (37 * hash) + INDICATOR_METRIC_POINT_FIELD_NUMBER;
          hash = (53 * hash) + getIndicatorMetricPoint().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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;
    }
    /**
     * <pre>
     * Идентификатор ресурса
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.ResourceId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.ResourceId)
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_ResourceId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder.class);
      }

      // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (indicatorMetricPointBuilder_ != null) {
          indicatorMetricPointBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getDefaultInstanceForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId build() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId buildPartial() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 5 &&
            indicatorMetricPointBuilder_ != null) {
          result.type_ = indicatorMetricPointBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId) {
          return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId other) {
        if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case BUILDING_ID: {
            setBuildingId(other.getBuildingId());
            break;
          }
          case DEVICE_ID: {
            setDeviceId(other.getDeviceId());
            break;
          }
          case METRIC_POINT_ID: {
            typeCase_ = 3;
            type_ = other.type_;
            onChanged();
            break;
          }
          case INDICATOR_ID: {
            setIndicatorId(other.getIndicatorId());
            break;
          }
          case INDICATOR_METRIC_POINT: {
            mergeIndicatorMetricPoint(other.getIndicatorMetricPoint());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readInt32();
                typeCase_ = 1;
                break;
              } // case 8
              case 16: {
                type_ = input.readInt32();
                typeCase_ = 2;
                break;
              } // case 16
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                typeCase_ = 3;
                type_ = s;
                break;
              } // case 26
              case 32: {
                type_ = input.readInt32();
                typeCase_ = 4;
                break;
              } // case 32
              case 42: {
                input.readMessage(
                    getIndicatorMetricPointFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 5;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <pre>
       * Идентификатор объекта строительства
       * </pre>
       *
       * <code>int32 building_id = 1;</code>
       * @return Whether the buildingId field is set.
       */
      public boolean hasBuildingId() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Идентификатор объекта строительства
       * </pre>
       *
       * <code>int32 building_id = 1;</code>
       * @return The buildingId.
       */
      public int getBuildingId() {
        if (typeCase_ == 1) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Идентификатор объекта строительства
       * </pre>
       *
       * <code>int32 building_id = 1;</code>
       * @param value The buildingId to set.
       * @return This builder for chaining.
       */
      public Builder setBuildingId(int value) {

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор объекта строительства
       * </pre>
       *
       * <code>int32 building_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuildingId() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>int32 device_id = 2;</code>
       * @return Whether the deviceId field is set.
       */
      public boolean hasDeviceId() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>int32 device_id = 2;</code>
       * @return The deviceId.
       */
      public int getDeviceId() {
        if (typeCase_ == 2) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>int32 device_id = 2;</code>
       * @param value The deviceId to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceId(int value) {

        typeCase_ = 2;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>int32 device_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeviceId() {
        if (typeCase_ == 2) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @return Whether the metricPointId field is set.
       */
      @java.lang.Override
      public boolean hasMetricPointId() {
        return typeCase_ == 3;
      }
      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @return The metricPointId.
       */
      @java.lang.Override
      public java.lang.String getMetricPointId() {
        java.lang.Object ref = "";
        if (typeCase_ == 3) {
          ref = type_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (typeCase_ == 3) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @return The bytes for metricPointId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getMetricPointIdBytes() {
        java.lang.Object ref = "";
        if (typeCase_ == 3) {
          ref = type_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (typeCase_ == 3) {
            type_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @param value The metricPointId to set.
       * @return This builder for chaining.
       */
      public Builder setMetricPointId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        typeCase_ = 3;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMetricPointId() {
        if (typeCase_ == 3) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Идентификатор ТУ
       * </pre>
       *
       * <code>string metric_point_id = 3;</code>
       * @param value The bytes for metricPointId to set.
       * @return This builder for chaining.
       */
      public Builder setMetricPointIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        typeCase_ = 3;
        type_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * Идентификатор индикатора
       * </pre>
       *
       * <code>int32 indicator_id = 4;</code>
       * @return Whether the indicatorId field is set.
       */
      public boolean hasIndicatorId() {
        return typeCase_ == 4;
      }
      /**
       * <pre>
       * Идентификатор индикатора
       * </pre>
       *
       * <code>int32 indicator_id = 4;</code>
       * @return The indicatorId.
       */
      public int getIndicatorId() {
        if (typeCase_ == 4) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Идентификатор индикатора
       * </pre>
       *
       * <code>int32 indicator_id = 4;</code>
       * @param value The indicatorId to set.
       * @return This builder for chaining.
       */
      public Builder setIndicatorId(int value) {

        typeCase_ = 4;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор индикатора
       * </pre>
       *
       * <code>int32 indicator_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndicatorId() {
        if (typeCase_ == 4) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder> indicatorMetricPointBuilder_;
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       * @return Whether the indicatorMetricPoint field is set.
       */
      @java.lang.Override
      public boolean hasIndicatorMetricPoint() {
        return typeCase_ == 5;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       * @return The indicatorMetricPoint.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint() {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        } else {
          if (typeCase_ == 5) {
            return indicatorMetricPointBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder setIndicatorMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint value) {
        if (indicatorMetricPointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          indicatorMetricPointBuilder_.setMessage(value);
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder setIndicatorMetricPoint(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder builderForValue) {
        if (indicatorMetricPointBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          indicatorMetricPointBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder mergeIndicatorMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint value) {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 5) {
            indicatorMetricPointBuilder_.mergeFrom(value);
          } else {
            indicatorMetricPointBuilder_.setMessage(value);
          }
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder clearIndicatorMetricPoint() {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 5) {
            typeCase_ = 0;
            type_ = null;
          }
          indicatorMetricPointBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder getIndicatorMetricPointBuilder() {
        return getIndicatorMetricPointFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder() {
        if ((typeCase_ == 5) && (indicatorMetricPointBuilder_ != null)) {
          return indicatorMetricPointBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 5) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder> 
          getIndicatorMetricPointFieldBuilder() {
        if (indicatorMetricPointBuilder_ == null) {
          if (!(typeCase_ == 5)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
          }
          indicatorMetricPointBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 5;
        onChanged();
        return indicatorMetricPointBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.ResourceId)
    }

    // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.ResourceId)
    private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId();
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResourceId>
        PARSER = new com.google.protobuf.AbstractParser<ResourceId>() {
      @java.lang.Override
      public ResourceId parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ResourceId> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResourceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.Resource)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     * @return Whether the building field is set.
     */
    boolean hasBuilding();
    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     * @return The building.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building getBuilding();
    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder getBuildingOrBuilder();

    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     * @return Whether the device field is set.
     */
    boolean hasDevice();
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     * @return The device.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device getDevice();
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder getDeviceOrBuilder();

    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     * @return Whether the metricPoint field is set.
     */
    boolean hasMetricPoint();
    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     * @return The metricPoint.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint getMetricPoint();
    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder getMetricPointOrBuilder();

    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     * @return Whether the indicator field is set.
     */
    boolean hasIndicator();
    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     * @return The indicator.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator getIndicator();
    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder getIndicatorOrBuilder();

    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return Whether the indicatorMetricPoint field is set.
     */
    boolean hasIndicatorMetricPoint();
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return The indicatorMetricPoint.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint();
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder();

    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ресурс
   * </pre>
   *
   * Protobuf type {@code keyapis.telemetry_control.v1.Resource}
   */
  public static final class Resource extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.Resource)
      ResourceOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Resource.newBuilder() to construct.
    private Resource(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Resource() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Resource();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_Resource_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_Resource_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder.class);
    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      BUILDING(1),
      DEVICE(2),
      METRIC_POINT(3),
      INDICATOR(4),
      INDICATOR_METRIC_POINT(5),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return BUILDING;
          case 2: return DEVICE;
          case 3: return METRIC_POINT;
          case 4: return INDICATOR;
          case 5: return INDICATOR_METRIC_POINT;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int BUILDING_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     * @return Whether the building field is set.
     */
    @java.lang.Override
    public boolean hasBuilding() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     * @return The building.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building getBuilding() {
      if (typeCase_ == 1) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
    }
    /**
     * <pre>
     * Объект строительства
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder getBuildingOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
    }

    public static final int DEVICE_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     * @return Whether the device field is set.
     */
    @java.lang.Override
    public boolean hasDevice() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     * @return The device.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device getDevice() {
      if (typeCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
    }
    /**
     * <pre>
     * Идентификатор ПУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder getDeviceOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
    }

    public static final int METRIC_POINT_FIELD_NUMBER = 3;
    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     * @return Whether the metricPoint field is set.
     */
    @java.lang.Override
    public boolean hasMetricPoint() {
      return typeCase_ == 3;
    }
    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     * @return The metricPoint.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint getMetricPoint() {
      if (typeCase_ == 3) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
    }
    /**
     * <pre>
     * Точка учета
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder getMetricPointOrBuilder() {
      if (typeCase_ == 3) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
    }

    public static final int INDICATOR_FIELD_NUMBER = 4;
    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     * @return Whether the indicator field is set.
     */
    @java.lang.Override
    public boolean hasIndicator() {
      return typeCase_ == 4;
    }
    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     * @return The indicator.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator getIndicator() {
      if (typeCase_ == 4) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
    }
    /**
     * <pre>
     * Индикатор
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder getIndicatorOrBuilder() {
      if (typeCase_ == 4) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
    }

    public static final int INDICATOR_METRIC_POINT_FIELD_NUMBER = 5;
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return Whether the indicatorMetricPoint field is set.
     */
    @java.lang.Override
    public boolean hasIndicatorMetricPoint() {
      return typeCase_ == 5;
    }
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     * @return The indicatorMetricPoint.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint() {
      if (typeCase_ == 5) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
    }
    /**
     * <pre>
     * Связка индикатора и ТУ
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder() {
      if (typeCase_ == 5) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_);
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_);
      }
      if (typeCase_ == 3) {
        output.writeMessage(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_);
      }
      if (typeCase_ == 4) {
        output.writeMessage(4, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_);
      }
      if (typeCase_ == 5) {
        output.writeMessage(5, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_);
      }
      if (typeCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_);
      }
      if (typeCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_);
      }
      if (typeCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource)) {
        return super.equals(obj);
      }
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getBuilding()
              .equals(other.getBuilding())) return false;
          break;
        case 2:
          if (!getDevice()
              .equals(other.getDevice())) return false;
          break;
        case 3:
          if (!getMetricPoint()
              .equals(other.getMetricPoint())) return false;
          break;
        case 4:
          if (!getIndicator()
              .equals(other.getIndicator())) return false;
          break;
        case 5:
          if (!getIndicatorMetricPoint()
              .equals(other.getIndicatorMetricPoint())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + BUILDING_FIELD_NUMBER;
          hash = (53 * hash) + getBuilding().hashCode();
          break;
        case 2:
          hash = (37 * hash) + DEVICE_FIELD_NUMBER;
          hash = (53 * hash) + getDevice().hashCode();
          break;
        case 3:
          hash = (37 * hash) + METRIC_POINT_FIELD_NUMBER;
          hash = (53 * hash) + getMetricPoint().hashCode();
          break;
        case 4:
          hash = (37 * hash) + INDICATOR_FIELD_NUMBER;
          hash = (53 * hash) + getIndicator().hashCode();
          break;
        case 5:
          hash = (37 * hash) + INDICATOR_METRIC_POINT_FIELD_NUMBER;
          hash = (53 * hash) + getIndicatorMetricPoint().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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;
    }
    /**
     * <pre>
     * Ресурс
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.Resource}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.Resource)
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_Resource_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_Resource_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.Builder.class);
      }

      // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (buildingBuilder_ != null) {
          buildingBuilder_.clear();
        }
        if (deviceBuilder_ != null) {
          deviceBuilder_.clear();
        }
        if (metricPointBuilder_ != null) {
          metricPointBuilder_.clear();
        }
        if (indicatorBuilder_ != null) {
          indicatorBuilder_.clear();
        }
        if (indicatorMetricPointBuilder_ != null) {
          indicatorMetricPointBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_Resource_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getDefaultInstanceForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource build() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource buildPartial() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            buildingBuilder_ != null) {
          result.type_ = buildingBuilder_.build();
        }
        if (typeCase_ == 2 &&
            deviceBuilder_ != null) {
          result.type_ = deviceBuilder_.build();
        }
        if (typeCase_ == 3 &&
            metricPointBuilder_ != null) {
          result.type_ = metricPointBuilder_.build();
        }
        if (typeCase_ == 4 &&
            indicatorBuilder_ != null) {
          result.type_ = indicatorBuilder_.build();
        }
        if (typeCase_ == 5 &&
            indicatorMetricPointBuilder_ != null) {
          result.type_ = indicatorMetricPointBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource) {
          return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource other) {
        if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case BUILDING: {
            mergeBuilding(other.getBuilding());
            break;
          }
          case DEVICE: {
            mergeDevice(other.getDevice());
            break;
          }
          case METRIC_POINT: {
            mergeMetricPoint(other.getMetricPoint());
            break;
          }
          case INDICATOR: {
            mergeIndicator(other.getIndicator());
            break;
          }
          case INDICATOR_METRIC_POINT: {
            mergeIndicatorMetricPoint(other.getIndicatorMetricPoint());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getBuildingFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getDeviceFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 2;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getMetricPointFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 3;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getIndicatorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 4;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getIndicatorMetricPointFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 5;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder> buildingBuilder_;
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       * @return Whether the building field is set.
       */
      @java.lang.Override
      public boolean hasBuilding() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       * @return The building.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building getBuilding() {
        if (buildingBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return buildingBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      public Builder setBuilding(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building value) {
        if (buildingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          buildingBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      public Builder setBuilding(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.Builder builderForValue) {
        if (buildingBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          buildingBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      public Builder mergeBuilding(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building value) {
        if (buildingBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            buildingBuilder_.mergeFrom(value);
          } else {
            buildingBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      public Builder clearBuilding() {
        if (buildingBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          buildingBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.Builder getBuildingBuilder() {
        return getBuildingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder getBuildingOrBuilder() {
        if ((typeCase_ == 1) && (buildingBuilder_ != null)) {
          return buildingBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Объект строительства
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Building building = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder> 
          getBuildingFieldBuilder() {
        if (buildingBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.getDefaultInstance();
          }
          buildingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.BuildingOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Building) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return buildingBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder> deviceBuilder_;
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       * @return Whether the device field is set.
       */
      @java.lang.Override
      public boolean hasDevice() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       * @return The device.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device getDevice() {
        if (deviceBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return deviceBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      public Builder setDevice(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device value) {
        if (deviceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          deviceBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      public Builder setDevice(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.Builder builderForValue) {
        if (deviceBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          deviceBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      public Builder mergeDevice(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device value) {
        if (deviceBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            deviceBuilder_.mergeFrom(value);
          } else {
            deviceBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      public Builder clearDevice() {
        if (deviceBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          deviceBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.Builder getDeviceBuilder() {
        return getDeviceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder getDeviceOrBuilder() {
        if ((typeCase_ == 2) && (deviceBuilder_ != null)) {
          return deviceBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Идентификатор ПУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device device = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder> 
          getDeviceFieldBuilder() {
        if (deviceBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.getDefaultInstance();
          }
          deviceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        onChanged();
        return deviceBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder> metricPointBuilder_;
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       * @return Whether the metricPoint field is set.
       */
      @java.lang.Override
      public boolean hasMetricPoint() {
        return typeCase_ == 3;
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       * @return The metricPoint.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint getMetricPoint() {
        if (metricPointBuilder_ == null) {
          if (typeCase_ == 3) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
        } else {
          if (typeCase_ == 3) {
            return metricPointBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      public Builder setMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint value) {
        if (metricPointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          metricPointBuilder_.setMessage(value);
        }
        typeCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      public Builder setMetricPoint(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.Builder builderForValue) {
        if (metricPointBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          metricPointBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      public Builder mergeMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint value) {
        if (metricPointBuilder_ == null) {
          if (typeCase_ == 3 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 3) {
            metricPointBuilder_.mergeFrom(value);
          } else {
            metricPointBuilder_.setMessage(value);
          }
        }
        typeCase_ = 3;
        return this;
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      public Builder clearMetricPoint() {
        if (metricPointBuilder_ == null) {
          if (typeCase_ == 3) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 3) {
            typeCase_ = 0;
            type_ = null;
          }
          metricPointBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.Builder getMetricPointBuilder() {
        return getMetricPointFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder getMetricPointOrBuilder() {
        if ((typeCase_ == 3) && (metricPointBuilder_ != null)) {
          return metricPointBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 3) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Точка учета
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder> 
          getMetricPointFieldBuilder() {
        if (metricPointBuilder_ == null) {
          if (!(typeCase_ == 3)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.getDefaultInstance();
          }
          metricPointBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPointOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Device.MetricPoint) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 3;
        onChanged();
        return metricPointBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder> indicatorBuilder_;
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       * @return Whether the indicator field is set.
       */
      @java.lang.Override
      public boolean hasIndicator() {
        return typeCase_ == 4;
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       * @return The indicator.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator getIndicator() {
        if (indicatorBuilder_ == null) {
          if (typeCase_ == 4) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
        } else {
          if (typeCase_ == 4) {
            return indicatorBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      public Builder setIndicator(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator value) {
        if (indicatorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          indicatorBuilder_.setMessage(value);
        }
        typeCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      public Builder setIndicator(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.Builder builderForValue) {
        if (indicatorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          indicatorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      public Builder mergeIndicator(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator value) {
        if (indicatorBuilder_ == null) {
          if (typeCase_ == 4 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 4) {
            indicatorBuilder_.mergeFrom(value);
          } else {
            indicatorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 4;
        return this;
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      public Builder clearIndicator() {
        if (indicatorBuilder_ == null) {
          if (typeCase_ == 4) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 4) {
            typeCase_ = 0;
            type_ = null;
          }
          indicatorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.Builder getIndicatorBuilder() {
        return getIndicatorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder getIndicatorOrBuilder() {
        if ((typeCase_ == 4) && (indicatorBuilder_ != null)) {
          return indicatorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 4) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Индикатор
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.Indicator indicator = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder> 
          getIndicatorFieldBuilder() {
        if (indicatorBuilder_ == null) {
          if (!(typeCase_ == 4)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.getDefaultInstance();
          }
          indicatorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.IndicatorOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Indicator) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 4;
        onChanged();
        return indicatorBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder> indicatorMetricPointBuilder_;
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       * @return Whether the indicatorMetricPoint field is set.
       */
      @java.lang.Override
      public boolean hasIndicatorMetricPoint() {
        return typeCase_ == 5;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       * @return The indicatorMetricPoint.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint getIndicatorMetricPoint() {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        } else {
          if (typeCase_ == 5) {
            return indicatorMetricPointBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder setIndicatorMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint value) {
        if (indicatorMetricPointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          indicatorMetricPointBuilder_.setMessage(value);
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder setIndicatorMetricPoint(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder builderForValue) {
        if (indicatorMetricPointBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          indicatorMetricPointBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder mergeIndicatorMetricPoint(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint value) {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5 &&
              type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance()) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 5) {
            indicatorMetricPointBuilder_.mergeFrom(value);
          } else {
            indicatorMetricPointBuilder_.setMessage(value);
          }
        }
        typeCase_ = 5;
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public Builder clearIndicatorMetricPoint() {
        if (indicatorMetricPointBuilder_ == null) {
          if (typeCase_ == 5) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 5) {
            typeCase_ = 0;
            type_ = null;
          }
          indicatorMetricPointBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder getIndicatorMetricPointBuilder() {
        return getIndicatorMetricPointFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder getIndicatorMetricPointOrBuilder() {
        if ((typeCase_ == 5) && (indicatorMetricPointBuilder_ != null)) {
          return indicatorMetricPointBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 5) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связка индикатора и ТУ
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint indicator_metric_point = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder> 
          getIndicatorMetricPointFieldBuilder() {
        if (indicatorMetricPointBuilder_ == null) {
          if (!(typeCase_ == 5)) {
            type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.getDefaultInstance();
          }
          indicatorMetricPointBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPointOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.DeviceIndicatorMetricPoint) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 5;
        onChanged();
        return indicatorMetricPointBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.Resource)
    }

    // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.Resource)
    private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource();
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Resource>
        PARSER = new com.google.protobuf.AbstractParser<Resource>() {
      @java.lang.Override
      public Resource parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<Resource> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.Resource getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostResourceFullDuplexRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     * @return Whether the resourceAsyncStatus field is set.
     */
    boolean hasResourceAsyncStatus();
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     * @return The resourceAsyncStatus.
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getResourceAsyncStatus();
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     */
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder getResourceAsyncStatusOrBuilder();

    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.TaskCase getTaskCase();
  }
  /**
   * <pre>
   * Запрос создания задачи с клиента на сервере
   * </pre>
   *
   * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest}
   */
  public static final class PostResourceFullDuplexRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest)
      PostResourceFullDuplexRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostResourceFullDuplexRequest.newBuilder() to construct.
    private PostResourceFullDuplexRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostResourceFullDuplexRequest() {
      requestId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PostResourceFullDuplexRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.Builder.class);
    }

    public interface ResourceAsyncStatusOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resourceId field is set.
       */
      boolean hasResourceId();
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resourceId.
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId();
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder();

      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       * @return Whether the data field is set.
       */
      boolean hasData();
      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       * @return The data.
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getData();
      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder getDataOrBuilder();

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       * @return Whether the error field is set.
       */
      boolean hasError();
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       * @return The error.
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getError();
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       */
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder getErrorOrBuilder();

      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.TypeCase getTypeCase();
    }
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus}
     */
    public static final class ResourceAsyncStatus extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus)
        ResourceAsyncStatusOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ResourceAsyncStatus.newBuilder() to construct.
      private ResourceAsyncStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ResourceAsyncStatus() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ResourceAsyncStatus();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder.class);
      }

      public interface SuccessOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Команда принята
       * </pre>
       *
       * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success}
       */
      public static final class Success extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)
          SuccessOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Success.newBuilder() to construct.
        private Success(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Success() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new Success();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

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

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

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

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)) {
            return super.equals(obj);
          }
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        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;
        }
        /**
         * <pre>
         * Команда принята
         * </pre>
         *
         * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder.class);
          }

          // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getDefaultInstanceForType() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success build() {
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success buildPartial() {
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) {
              return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success other) {
            if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)
        }

        // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success)
        private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success();
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Success>
            PARSER = new com.google.protobuf.AbstractParser<Success>() {
          @java.lang.Override
          public Success parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<Success> parser() {
          return PARSER;
        }

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

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface ErrorOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         * @return Whether the unknown field is set.
         */
        boolean hasUnknown();
        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         * @return The unknown.
         */
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getUnknown();
        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         */
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder getUnknownOrBuilder();

        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.ReasonCase getReasonCase();
      }
      /**
       * <pre>
       * Ошибки обработки ресурса на клиенте
       * </pre>
       *
       * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error}
       */
      public static final class Error extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)
          ErrorOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Error.newBuilder() to construct.
        private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Error() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new Error();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder.class);
        }

        public interface UnknownErrorOrBuilder extends
            // @@protoc_insertion_point(interface_extends:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)
            com.google.protobuf.MessageOrBuilder {

          /**
           * <pre>
           * Произвольный текст ошибки на стороне клиента.
           * Отправляется в случае если в спецификации нет подходящей ошибки.
           * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
           * </pre>
           *
           * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           * @return The message.
           */
          java.lang.String getMessage();
          /**
           * <pre>
           * Произвольный текст ошибки на стороне клиента.
           * Отправляется в случае если в спецификации нет подходящей ошибки.
           * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
           * </pre>
           *
           * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           * @return The bytes for message.
           */
          com.google.protobuf.ByteString
              getMessageBytes();
        }
        /**
         * <pre>
         * Неизвестная ошибка на стороне клиента
         * </pre>
         *
         * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError}
         */
        public static final class UnknownError extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)
            UnknownErrorOrBuilder {
        private static final long serialVersionUID = 0L;
          // Use UnknownError.newBuilder() to construct.
          private UnknownError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
          }
          private UnknownError() {
            message_ = "";
          }

          @java.lang.Override
          @SuppressWarnings({"unused"})
          protected java.lang.Object newInstance(
              UnusedPrivateParameter unused) {
            return new UnknownError();
          }

          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder.class);
          }

          public static final int MESSAGE_FIELD_NUMBER = 1;
          @SuppressWarnings("serial")
          private volatile java.lang.Object message_ = "";
          /**
           * <pre>
           * Произвольный текст ошибки на стороне клиента.
           * Отправляется в случае если в спецификации нет подходящей ошибки.
           * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
           * </pre>
           *
           * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           * @return The message.
           */
          @java.lang.Override
          public java.lang.String getMessage() {
            java.lang.Object ref = message_;
            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();
              message_ = s;
              return s;
            }
          }
          /**
           * <pre>
           * Произвольный текст ошибки на стороне клиента.
           * Отправляется в случае если в спецификации нет подходящей ошибки.
           * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
           * </pre>
           *
           * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
           * @return The bytes for message.
           */
          @java.lang.Override
          public com.google.protobuf.ByteString
              getMessageBytes() {
            java.lang.Object ref = message_;
            if (ref instanceof java.lang.String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              message_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }

          private byte memoizedIsInitialized = -1;
          @java.lang.Override
          public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1) return true;
            if (isInitialized == 0) return false;

            memoizedIsInitialized = 1;
            return true;
          }

          @java.lang.Override
          public void writeTo(com.google.protobuf.CodedOutputStream output)
                              throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
              com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
            }
            getUnknownFields().writeTo(output);
          }

          @java.lang.Override
          public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1) return size;

            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
              size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
          }

          @java.lang.Override
          public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
             return true;
            }
            if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)) {
              return super.equals(obj);
            }
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) obj;

            if (!getMessage()
                .equals(other.getMessage())) return false;
            if (!getUnknownFields().equals(other.getUnknownFields())) return false;
            return true;
          }

          @java.lang.Override
          public int hashCode() {
            if (memoizedHashCode != 0) {
              return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
            hash = (53 * hash) + getMessage().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
          }

          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              java.nio.ByteBuffer data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              java.nio.ByteBuffer data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              com.google.protobuf.ByteString data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              com.google.protobuf.ByteString data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(byte[] data)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              byte[] data,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseDelimitedFrom(java.io.InputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseDelimitedWithIOException(PARSER, input);
          }

          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              com.google.protobuf.CodedInputStream input)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input);
          }
          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError parseFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                .parseWithIOException(PARSER, input, extensionRegistry);
          }

          @java.lang.Override
          public Builder newBuilderForType() { return newBuilder(); }
          public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
          }
          public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
          }
          @java.lang.Override
          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;
          }
          /**
           * <pre>
           * Неизвестная ошибка на стороне клиента
           * </pre>
           *
           * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError}
           */
          public static final class Builder extends
              com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
              // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
                getDescriptor() {
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
                internalGetFieldAccessorTable() {
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_fieldAccessorTable
                  .ensureFieldAccessorsInitialized(
                      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder.class);
            }

            // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.newBuilder()
            private Builder() {

            }

            private Builder(
                com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
              super(parent);

            }
            @java.lang.Override
            public Builder clear() {
              super.clear();
              bitField0_ = 0;
              message_ = "";
              return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
                getDescriptorForType() {
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor;
            }

            @java.lang.Override
            public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getDefaultInstanceForType() {
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
            }

            @java.lang.Override
            public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError build() {
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError result = buildPartial();
              if (!result.isInitialized()) {
                throw newUninitializedMessageException(result);
              }
              return result;
            }

            @java.lang.Override
            public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError buildPartial() {
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError(this);
              if (bitField0_ != 0) { buildPartial0(result); }
              onBuilt();
              return result;
            }

            private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError result) {
              int from_bitField0_ = bitField0_;
              if (((from_bitField0_ & 0x00000001) != 0)) {
                result.message_ = message_;
              }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
              if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) {
                return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)other);
              } else {
                super.mergeFrom(other);
                return this;
              }
            }

            public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError other) {
              if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance()) return this;
              if (!other.getMessage().isEmpty()) {
                message_ = other.message_;
                bitField0_ |= 0x00000001;
                onChanged();
              }
              this.mergeUnknownFields(other.getUnknownFields());
              onChanged();
              return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
              return true;
            }

            @java.lang.Override
            public Builder mergeFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws java.io.IOException {
              if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
              }
              try {
                boolean done = false;
                while (!done) {
                  int tag = input.readTag();
                  switch (tag) {
                    case 0:
                      done = true;
                      break;
                    case 10: {
                      message_ = input.readStringRequireUtf8();
                      bitField0_ |= 0x00000001;
                      break;
                    } // case 10
                    default: {
                      if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                        done = true; // was an endgroup tag
                      }
                      break;
                    } // default:
                  } // switch (tag)
                } // while (!done)
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.unwrapIOException();
              } finally {
                onChanged();
              } // finally
              return this;
            }
            private int bitField0_;

            private java.lang.Object message_ = "";
            /**
             * <pre>
             * Произвольный текст ошибки на стороне клиента.
             * Отправляется в случае если в спецификации нет подходящей ошибки.
             * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
             * </pre>
             *
             * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
             * @return The message.
             */
            public java.lang.String getMessage() {
              java.lang.Object ref = message_;
              if (!(ref instanceof java.lang.String)) {
                com.google.protobuf.ByteString bs =
                    (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                message_ = s;
                return s;
              } else {
                return (java.lang.String) ref;
              }
            }
            /**
             * <pre>
             * Произвольный текст ошибки на стороне клиента.
             * Отправляется в случае если в спецификации нет подходящей ошибки.
             * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
             * </pre>
             *
             * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
             * @return The bytes for message.
             */
            public com.google.protobuf.ByteString
                getMessageBytes() {
              java.lang.Object ref = message_;
              if (ref instanceof String) {
                com.google.protobuf.ByteString b = 
                    com.google.protobuf.ByteString.copyFromUtf8(
                        (java.lang.String) ref);
                message_ = b;
                return b;
              } else {
                return (com.google.protobuf.ByteString) ref;
              }
            }
            /**
             * <pre>
             * Произвольный текст ошибки на стороне клиента.
             * Отправляется в случае если в спецификации нет подходящей ошибки.
             * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
             * </pre>
             *
             * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
             * @param value The message to set.
             * @return This builder for chaining.
             */
            public Builder setMessage(
                java.lang.String value) {
              if (value == null) { throw new NullPointerException(); }
              message_ = value;
              bitField0_ |= 0x00000001;
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Произвольный текст ошибки на стороне клиента.
             * Отправляется в случае если в спецификации нет подходящей ошибки.
             * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
             * </pre>
             *
             * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
             * @return This builder for chaining.
             */
            public Builder clearMessage() {
              message_ = getDefaultInstance().getMessage();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
              return this;
            }
            /**
             * <pre>
             * Произвольный текст ошибки на стороне клиента.
             * Отправляется в случае если в спецификации нет подходящей ошибки.
             * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
             * </pre>
             *
             * <code>string message = 1 [(.google.api.field_behavior) = REQUIRED];</code>
             * @param value The bytes for message to set.
             * @return This builder for chaining.
             */
            public Builder setMessageBytes(
                com.google.protobuf.ByteString value) {
              if (value == null) { throw new NullPointerException(); }
              checkByteStringIsUtf8(value);
              message_ = value;
              bitField0_ |= 0x00000001;
              onChanged();
              return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(
                final com.google.protobuf.UnknownFieldSet unknownFields) {
              return super.mergeUnknownFields(unknownFields);
            }


            // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)
          }

          // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError)
          private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError DEFAULT_INSTANCE;
          static {
            DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError();
          }

          public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getDefaultInstance() {
            return DEFAULT_INSTANCE;
          }

          private static final com.google.protobuf.Parser<UnknownError>
              PARSER = new com.google.protobuf.AbstractParser<UnknownError>() {
            @java.lang.Override
            public UnknownError parsePartialFrom(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
              Builder builder = newBuilder();
              try {
                builder.mergeFrom(input, extensionRegistry);
              } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(builder.buildPartial());
              } catch (com.google.protobuf.UninitializedMessageException e) {
                throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
              } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(e)
                    .setUnfinishedMessage(builder.buildPartial());
              }
              return builder.buildPartial();
            }
          };

          public static com.google.protobuf.Parser<UnknownError> parser() {
            return PARSER;
          }

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

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
          }

        }

        private int reasonCase_ = 0;
        @SuppressWarnings("serial")
        private java.lang.Object reason_;
        public enum ReasonCase
            implements com.google.protobuf.Internal.EnumLite,
                com.google.protobuf.AbstractMessage.InternalOneOfEnum {
          UNKNOWN(1),
          REASON_NOT_SET(0);
          private final int value;
          private ReasonCase(int value) {
            this.value = value;
          }
          /**
           * @param value The number of the enum to look for.
           * @return The enum associated with the given number.
           * @deprecated Use {@link #forNumber(int)} instead.
           */
          @java.lang.Deprecated
          public static ReasonCase valueOf(int value) {
            return forNumber(value);
          }

          public static ReasonCase forNumber(int value) {
            switch (value) {
              case 1: return UNKNOWN;
              case 0: return REASON_NOT_SET;
              default: return null;
            }
          }
          public int getNumber() {
            return this.value;
          }
        };

        public ReasonCase
        getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public static final int UNKNOWN_FIELD_NUMBER = 1;
        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         * @return Whether the unknown field is set.
         */
        @java.lang.Override
        public boolean hasUnknown() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         * @return The unknown.
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getUnknown() {
          if (reasonCase_ == 1) {
             return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
        }
        /**
         * <pre>
         * Неизвестная ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder getUnknownOrBuilder() {
          if (reasonCase_ == 1) {
             return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (reasonCase_ == 1) {
            output.writeMessage(1, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_);
          }
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          if (reasonCase_ == 1) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)) {
            return super.equals(obj);
          }
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) obj;

          if (!getReasonCase().equals(other.getReasonCase())) return false;
          switch (reasonCase_) {
            case 1:
              if (!getUnknown()
                  .equals(other.getUnknown())) return false;
              break;
            case 0:
            default:
          }
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          switch (reasonCase_) {
            case 1:
              hash = (37 * hash) + UNKNOWN_FIELD_NUMBER;
              hash = (53 * hash) + getUnknown().hashCode();
              break;
            case 0:
            default:
          }
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        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;
        }
        /**
         * <pre>
         * Ошибки обработки ресурса на клиенте
         * </pre>
         *
         * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder.class);
          }

          // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            if (unknownBuilder_ != null) {
              unknownBuilder_.clear();
            }
            reasonCase_ = 0;
            reason_ = null;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getDefaultInstanceForType() {
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error build() {
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error buildPartial() {
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            buildPartialOneofs(result);
            onBuilt();
            return result;
          }

          private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error result) {
            int from_bitField0_ = bitField0_;
          }

          private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error result) {
            result.reasonCase_ = reasonCase_;
            result.reason_ = this.reason_;
            if (reasonCase_ == 1 &&
                unknownBuilder_ != null) {
              result.reason_ = unknownBuilder_.build();
            }
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) {
              return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error other) {
            if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance()) return this;
            switch (other.getReasonCase()) {
              case UNKNOWN: {
                mergeUnknown(other.getUnknown());
                break;
              }
              case REASON_NOT_SET: {
                break;
              }
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    input.readMessage(
                        getUnknownFieldBuilder().getBuilder(),
                        extensionRegistry);
                    reasonCase_ = 1;
                    break;
                  } // case 10
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int reasonCase_ = 0;
          private java.lang.Object reason_;
          public ReasonCase
              getReasonCase() {
            return ReasonCase.forNumber(
                reasonCase_);
          }

          public Builder clearReason() {
            reasonCase_ = 0;
            reason_ = null;
            onChanged();
            return this;
          }

          private int bitField0_;

          private com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder> unknownBuilder_;
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           * @return Whether the unknown field is set.
           */
          @java.lang.Override
          public boolean hasUnknown() {
            return reasonCase_ == 1;
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           * @return The unknown.
           */
          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError getUnknown() {
            if (unknownBuilder_ == null) {
              if (reasonCase_ == 1) {
                return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_;
              }
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
            } else {
              if (reasonCase_ == 1) {
                return unknownBuilder_.getMessage();
              }
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
            }
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          public Builder setUnknown(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError value) {
            if (unknownBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              reason_ = value;
              onChanged();
            } else {
              unknownBuilder_.setMessage(value);
            }
            reasonCase_ = 1;
            return this;
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          public Builder setUnknown(
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder builderForValue) {
            if (unknownBuilder_ == null) {
              reason_ = builderForValue.build();
              onChanged();
            } else {
              unknownBuilder_.setMessage(builderForValue.build());
            }
            reasonCase_ = 1;
            return this;
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          public Builder mergeUnknown(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError value) {
            if (unknownBuilder_ == null) {
              if (reasonCase_ == 1 &&
                  reason_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance()) {
                reason_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_)
                    .mergeFrom(value).buildPartial();
              } else {
                reason_ = value;
              }
              onChanged();
            } else {
              if (reasonCase_ == 1) {
                unknownBuilder_.mergeFrom(value);
              } else {
                unknownBuilder_.setMessage(value);
              }
            }
            reasonCase_ = 1;
            return this;
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          public Builder clearUnknown() {
            if (unknownBuilder_ == null) {
              if (reasonCase_ == 1) {
                reasonCase_ = 0;
                reason_ = null;
                onChanged();
              }
            } else {
              if (reasonCase_ == 1) {
                reasonCase_ = 0;
                reason_ = null;
              }
              unknownBuilder_.clear();
            }
            return this;
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder getUnknownBuilder() {
            return getUnknownFieldBuilder().getBuilder();
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          @java.lang.Override
          public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder getUnknownOrBuilder() {
            if ((reasonCase_ == 1) && (unknownBuilder_ != null)) {
              return unknownBuilder_.getMessageOrBuilder();
            } else {
              if (reasonCase_ == 1) {
                return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_;
              }
              return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
            }
          }
          /**
           * <pre>
           * Неизвестная ошибка
           * </pre>
           *
           * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError unknown = 1;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder> 
              getUnknownFieldBuilder() {
            if (unknownBuilder_ == null) {
              if (!(reasonCase_ == 1)) {
                reason_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.getDefaultInstance();
              }
              unknownBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownErrorOrBuilder>(
                      (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.UnknownError) reason_,
                      getParentForChildren(),
                      isClean());
              reason_ = null;
            }
            reasonCase_ = 1;
            onChanged();
            return unknownBuilder_;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)
        }

        // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error)
        private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error();
        }

        public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Error>
            PARSER = new com.google.protobuf.AbstractParser<Error>() {
          @java.lang.Override
          public Error parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<Error> parser() {
          return PARSER;
        }

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

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int typeCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object type_;
      public enum TypeCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        DATA(2),
        ERROR(3),
        TYPE_NOT_SET(0);
        private final int value;
        private TypeCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static TypeCase valueOf(int value) {
          return forNumber(value);
        }

        public static TypeCase forNumber(int value) {
          switch (value) {
            case 2: return DATA;
            case 3: return ERROR;
            case 0: return TYPE_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public TypeCase
      getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public static final int RESOURCE_ID_FIELD_NUMBER = 1;
      private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId resourceId_;
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the resourceId field is set.
       */
      @java.lang.Override
      public boolean hasResourceId() {
        return resourceId_ != null;
      }
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The resourceId.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId() {
        return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
      }
      /**
       * <pre>
       * Идентификатор ресурса
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder() {
        return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
      }

      public static final int DATA_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getData() {
        if (typeCase_ == 2) {
           return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_;
        }
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
      }
      /**
       * <pre>
       * Успех
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder getDataOrBuilder() {
        if (typeCase_ == 2) {
           return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_;
        }
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
      }

      public static final int ERROR_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 3;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getError() {
        if (typeCase_ == 3) {
           return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_;
        }
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder getErrorOrBuilder() {
        if (typeCase_ == 3) {
           return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_;
        }
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (resourceId_ != null) {
          output.writeMessage(1, getResourceId());
        }
        if (typeCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_);
        }
        if (typeCase_ == 3) {
          output.writeMessage(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (resourceId_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getResourceId());
        }
        if (typeCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_);
        }
        if (typeCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus)) {
          return super.equals(obj);
        }
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) obj;

        if (hasResourceId() != other.hasResourceId()) return false;
        if (hasResourceId()) {
          if (!getResourceId()
              .equals(other.getResourceId())) return false;
        }
        if (!getTypeCase().equals(other.getTypeCase())) return false;
        switch (typeCase_) {
          case 2:
            if (!getData()
                .equals(other.getData())) return false;
            break;
          case 3:
            if (!getError()
                .equals(other.getError())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasResourceId()) {
          hash = (37 * hash) + RESOURCE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getResourceId().hashCode();
        }
        switch (typeCase_) {
          case 2:
            hash = (37 * hash) + DATA_FIELD_NUMBER;
            hash = (53 * hash) + getData().hashCode();
            break;
          case 3:
            hash = (37 * hash) + ERROR_FIELD_NUMBER;
            hash = (53 * hash) + getError().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      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;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus)
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder.class);
        }

        // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          resourceId_ = null;
          if (resourceIdBuilder_ != null) {
            resourceIdBuilder_.dispose();
            resourceIdBuilder_ = null;
          }
          if (dataBuilder_ != null) {
            dataBuilder_.clear();
          }
          if (errorBuilder_ != null) {
            errorBuilder_.clear();
          }
          typeCase_ = 0;
          type_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getDefaultInstanceForType() {
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus build() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus buildPartial() {
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.resourceId_ = resourceIdBuilder_ == null
                ? resourceId_
                : resourceIdBuilder_.build();
          }
        }

        private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus result) {
          result.typeCase_ = typeCase_;
          result.type_ = this.type_;
          if (typeCase_ == 2 &&
              dataBuilder_ != null) {
            result.type_ = dataBuilder_.build();
          }
          if (typeCase_ == 3 &&
              errorBuilder_ != null) {
            result.type_ = errorBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) {
            return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus other) {
          if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance()) return this;
          if (other.hasResourceId()) {
            mergeResourceId(other.getResourceId());
          }
          switch (other.getTypeCase()) {
            case DATA: {
              mergeData(other.getData());
              break;
            }
            case ERROR: {
              mergeError(other.getError());
              break;
            }
            case TYPE_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getResourceIdFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getDataFieldBuilder().getBuilder(),
                      extensionRegistry);
                  typeCase_ = 2;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getErrorFieldBuilder().getBuilder(),
                      extensionRegistry);
                  typeCase_ = 3;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int typeCase_ = 0;
        private java.lang.Object type_;
        public TypeCase
            getTypeCase() {
          return TypeCase.forNumber(
              typeCase_);
        }

        public Builder clearType() {
          typeCase_ = 0;
          type_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId resourceId_;
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder> resourceIdBuilder_;
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return Whether the resourceId field is set.
         */
        public boolean hasResourceId() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The resourceId.
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId getResourceId() {
          if (resourceIdBuilder_ == null) {
            return resourceId_ == null ? ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
          } else {
            return resourceIdBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResourceId(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId value) {
          if (resourceIdBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            resourceId_ = value;
          } else {
            resourceIdBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder setResourceId(
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder builderForValue) {
          if (resourceIdBuilder_ == null) {
            resourceId_ = builderForValue.build();
          } else {
            resourceIdBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder mergeResourceId(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId value) {
          if (resourceIdBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              resourceId_ != null &&
              resourceId_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance()) {
              getResourceIdBuilder().mergeFrom(value);
            } else {
              resourceId_ = value;
            }
          } else {
            resourceIdBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public Builder clearResourceId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          resourceId_ = null;
          if (resourceIdBuilder_ != null) {
            resourceIdBuilder_.dispose();
            resourceIdBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder getResourceIdBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getResourceIdFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder getResourceIdOrBuilder() {
          if (resourceIdBuilder_ != null) {
            return resourceIdBuilder_.getMessageOrBuilder();
          } else {
            return resourceId_ == null ?
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.getDefaultInstance() : resourceId_;
          }
        }
        /**
         * <pre>
         * Идентификатор ресурса
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.ResourceId resource_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder> 
            getResourceIdFieldBuilder() {
          if (resourceIdBuilder_ == null) {
            resourceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceId.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.ResourceIdOrBuilder>(
                    getResourceId(),
                    getParentForChildren(),
                    isClean());
            resourceId_ = null;
          }
          return resourceIdBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder> dataBuilder_;
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         * @return Whether the data field is set.
         */
        @java.lang.Override
        public boolean hasData() {
          return typeCase_ == 2;
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         * @return The data.
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success getData() {
          if (dataBuilder_ == null) {
            if (typeCase_ == 2) {
              return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_;
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
          } else {
            if (typeCase_ == 2) {
              return dataBuilder_.getMessage();
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        public Builder setData(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success value) {
          if (dataBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            type_ = value;
            onChanged();
          } else {
            dataBuilder_.setMessage(value);
          }
          typeCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        public Builder setData(
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder builderForValue) {
          if (dataBuilder_ == null) {
            type_ = builderForValue.build();
            onChanged();
          } else {
            dataBuilder_.setMessage(builderForValue.build());
          }
          typeCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        public Builder mergeData(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success value) {
          if (dataBuilder_ == null) {
            if (typeCase_ == 2 &&
                type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance()) {
              type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_)
                  .mergeFrom(value).buildPartial();
            } else {
              type_ = value;
            }
            onChanged();
          } else {
            if (typeCase_ == 2) {
              dataBuilder_.mergeFrom(value);
            } else {
              dataBuilder_.setMessage(value);
            }
          }
          typeCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        public Builder clearData() {
          if (dataBuilder_ == null) {
            if (typeCase_ == 2) {
              typeCase_ = 0;
              type_ = null;
              onChanged();
            }
          } else {
            if (typeCase_ == 2) {
              typeCase_ = 0;
              type_ = null;
            }
            dataBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder getDataBuilder() {
          return getDataFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder getDataOrBuilder() {
          if ((typeCase_ == 2) && (dataBuilder_ != null)) {
            return dataBuilder_.getMessageOrBuilder();
          } else {
            if (typeCase_ == 2) {
              return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_;
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Успех
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success data = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder> 
            getDataFieldBuilder() {
          if (dataBuilder_ == null) {
            if (!(typeCase_ == 2)) {
              type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.getDefaultInstance();
            }
            dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.SuccessOrBuilder>(
                    (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Success) type_,
                    getParentForChildren(),
                    isClean());
            type_ = null;
          }
          typeCase_ = 2;
          onChanged();
          return dataBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder> errorBuilder_;
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         * @return Whether the error field is set.
         */
        @java.lang.Override
        public boolean hasError() {
          return typeCase_ == 3;
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         * @return The error.
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error getError() {
          if (errorBuilder_ == null) {
            if (typeCase_ == 3) {
              return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_;
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
          } else {
            if (typeCase_ == 3) {
              return errorBuilder_.getMessage();
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        public Builder setError(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error value) {
          if (errorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            type_ = value;
            onChanged();
          } else {
            errorBuilder_.setMessage(value);
          }
          typeCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        public Builder setError(
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder builderForValue) {
          if (errorBuilder_ == null) {
            type_ = builderForValue.build();
            onChanged();
          } else {
            errorBuilder_.setMessage(builderForValue.build());
          }
          typeCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        public Builder mergeError(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error value) {
          if (errorBuilder_ == null) {
            if (typeCase_ == 3 &&
                type_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance()) {
              type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_)
                  .mergeFrom(value).buildPartial();
            } else {
              type_ = value;
            }
            onChanged();
          } else {
            if (typeCase_ == 3) {
              errorBuilder_.mergeFrom(value);
            } else {
              errorBuilder_.setMessage(value);
            }
          }
          typeCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        public Builder clearError() {
          if (errorBuilder_ == null) {
            if (typeCase_ == 3) {
              typeCase_ = 0;
              type_ = null;
              onChanged();
            }
          } else {
            if (typeCase_ == 3) {
              typeCase_ = 0;
              type_ = null;
            }
            errorBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder getErrorBuilder() {
          return getErrorFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder getErrorOrBuilder() {
          if ((typeCase_ == 3) && (errorBuilder_ != null)) {
            return errorBuilder_.getMessageOrBuilder();
          } else {
            if (typeCase_ == 3) {
              return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_;
            }
            return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка
         * </pre>
         *
         * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error error = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder> 
            getErrorFieldBuilder() {
          if (errorBuilder_ == null) {
            if (!(typeCase_ == 3)) {
              type_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.getDefaultInstance();
            }
            errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.ErrorOrBuilder>(
                    (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Error) type_,
                    getParentForChildren(),
                    isClean());
            type_ = null;
          }
          typeCase_ = 3;
          onChanged();
          return errorBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus)
      }

      // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus)
      private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus();
      }

      public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ResourceAsyncStatus>
          PARSER = new com.google.protobuf.AbstractParser<ResourceAsyncStatus>() {
        @java.lang.Override
        public ResourceAsyncStatus parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<ResourceAsyncStatus> parser() {
        return PARSER;
      }

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

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int taskCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object task_;
    public enum TaskCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      RESOURCE_ASYNC_STATUS(2),
      TASK_NOT_SET(0);
      private final int value;
      private TaskCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TaskCase valueOf(int value) {
        return forNumber(value);
      }

      public static TaskCase forNumber(int value) {
        switch (value) {
          case 2: return RESOURCE_ASYNC_STATUS;
          case 0: return TASK_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TaskCase
    getTaskCase() {
      return TaskCase.forNumber(
          taskCase_);
    }

    public static final int REQUEST_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object requestId_ = "";
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      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();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор запроса
     * </pre>
     *
     * <code>string request_id = 1;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCE_ASYNC_STATUS_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     * @return Whether the resourceAsyncStatus field is set.
     */
    @java.lang.Override
    public boolean hasResourceAsyncStatus() {
      return taskCase_ == 2;
    }
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     * @return The resourceAsyncStatus.
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getResourceAsyncStatus() {
      if (taskCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
    }
    /**
     * <pre>
     * Результат обработки ресурса на клиенте
     * </pre>
     *
     * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder getResourceAsyncStatusOrBuilder() {
      if (taskCase_ == 2) {
         return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_;
      }
      return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, requestId_);
      }
      if (taskCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, requestId_);
      }
      if (taskCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest other = (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest) obj;

      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (!getTaskCase().equals(other.getTaskCase())) return false;
      switch (taskCase_) {
        case 2:
          if (!getResourceAsyncStatus()
              .equals(other.getResourceAsyncStatus())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REQUEST_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      switch (taskCase_) {
        case 2:
          hash = (37 * hash) + RESOURCE_ASYNC_STATUS_FIELD_NUMBER;
          hash = (53 * hash) + getResourceAsyncStatus().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest 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 ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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;
    }
    /**
     * <pre>
     * Запрос создания задачи с клиента на сервере
     * </pre>
     *
     * Protobuf type {@code keyapis.telemetry_control.v1.PostResourceFullDuplexRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest)
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.class, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.Builder.class);
      }

      // Construct using ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        requestId_ = "";
        if (resourceAsyncStatusBuilder_ != null) {
          resourceAsyncStatusBuilder_.clear();
        }
        taskCase_ = 0;
        task_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest getDefaultInstanceForType() {
        return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest build() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest buildPartial() {
        ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest result = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.requestId_ = requestId_;
        }
      }

      private void buildPartialOneofs(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest result) {
        result.taskCase_ = taskCase_;
        result.task_ = this.task_;
        if (taskCase_ == 2 &&
            resourceAsyncStatusBuilder_ != null) {
          result.task_ = resourceAsyncStatusBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest) {
          return mergeFrom((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest other) {
        if (other == ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.getDefaultInstance()) return this;
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        switch (other.getTaskCase()) {
          case RESOURCE_ASYNC_STATUS: {
            mergeResourceAsyncStatus(other.getResourceAsyncStatus());
            break;
          }
          case TASK_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                requestId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getResourceAsyncStatusFieldBuilder().getBuilder(),
                    extensionRegistry);
                taskCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int taskCase_ = 0;
      private java.lang.Object task_;
      public TaskCase
          getTaskCase() {
        return TaskCase.forNumber(
            taskCase_);
      }

      public Builder clearTask() {
        taskCase_ = 0;
        task_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        requestId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        requestId_ = getDefaultInstance().getRequestId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор запроса
       * </pre>
       *
       * <code>string request_id = 1;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        requestId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder> resourceAsyncStatusBuilder_;
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       * @return Whether the resourceAsyncStatus field is set.
       */
      @java.lang.Override
      public boolean hasResourceAsyncStatus() {
        return taskCase_ == 2;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       * @return The resourceAsyncStatus.
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus getResourceAsyncStatus() {
        if (resourceAsyncStatusBuilder_ == null) {
          if (taskCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
        } else {
          if (taskCase_ == 2) {
            return resourceAsyncStatusBuilder_.getMessage();
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      public Builder setResourceAsyncStatus(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus value) {
        if (resourceAsyncStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          task_ = value;
          onChanged();
        } else {
          resourceAsyncStatusBuilder_.setMessage(value);
        }
        taskCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      public Builder setResourceAsyncStatus(
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder builderForValue) {
        if (resourceAsyncStatusBuilder_ == null) {
          task_ = builderForValue.build();
          onChanged();
        } else {
          resourceAsyncStatusBuilder_.setMessage(builderForValue.build());
        }
        taskCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      public Builder mergeResourceAsyncStatus(ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus value) {
        if (resourceAsyncStatusBuilder_ == null) {
          if (taskCase_ == 2 &&
              task_ != ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance()) {
            task_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.newBuilder((ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_)
                .mergeFrom(value).buildPartial();
          } else {
            task_ = value;
          }
          onChanged();
        } else {
          if (taskCase_ == 2) {
            resourceAsyncStatusBuilder_.mergeFrom(value);
          } else {
            resourceAsyncStatusBuilder_.setMessage(value);
          }
        }
        taskCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      public Builder clearResourceAsyncStatus() {
        if (resourceAsyncStatusBuilder_ == null) {
          if (taskCase_ == 2) {
            taskCase_ = 0;
            task_ = null;
            onChanged();
          }
        } else {
          if (taskCase_ == 2) {
            taskCase_ = 0;
            task_ = null;
          }
          resourceAsyncStatusBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder getResourceAsyncStatusBuilder() {
        return getResourceAsyncStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder getResourceAsyncStatusOrBuilder() {
        if ((taskCase_ == 2) && (resourceAsyncStatusBuilder_ != null)) {
          return resourceAsyncStatusBuilder_.getMessageOrBuilder();
        } else {
          if (taskCase_ == 2) {
            return (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_;
          }
          return ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Результат обработки ресурса на клиенте
       * </pre>
       *
       * <code>.keyapis.telemetry_control.v1.PostResourceFullDuplexRequest.ResourceAsyncStatus resource_async_status = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder> 
          getResourceAsyncStatusFieldBuilder() {
        if (resourceAsyncStatusBuilder_ == null) {
          if (!(taskCase_ == 2)) {
            task_ = ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.getDefaultInstance();
          }
          resourceAsyncStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus.Builder, ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatusOrBuilder>(
                  (ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest.ResourceAsyncStatus) task_,
                  getParentForChildren(),
                  isClean());
          task_ = null;
        }
        taskCase_ = 2;
        onChanged();
        return resourceAsyncStatusBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.telemetry_control.v1.PostResourceFullDuplexRequest)
    private static final ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest();
    }

    public static ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostResourceFullDuplexRequest>
        PARSER = new com.google.protobuf.AbstractParser<PostResourceFullDuplexRequest>() {
      @java.lang.Override
      public PostResourceFullDuplexRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PostResourceFullDuplexRequest> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.PostResourceFullDuplexRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_ResourceId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_Resource_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_Resource_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nFkeyapis/telemetry_control/v1/keyapis_t" +
      "elemetry_control_stream_v1.proto\022\034keyapi" +
      "s.telemetry_control.v1\032\037google/api/field" +
      "_behavior.proto\032Hkeyapis/telemetry_contr" +
      "ol/v1/keyapis_telemetry_control_building" +
      "_v1.proto\032Fkeyapis/telemetry_control/v1/" +
      "keyapis_telemetry_control_device_v1.prot" +
      "o\"\331\003\n\036PostResourceFullDuplexResponse\022\027\n\n" +
      "request_id\030\001 \001(\tB\003\340A\002\022q\n\025upsert_resource" +
      "_event\030\002 \001(\0132P.keyapis.telemetry_control" +
      ".v1.PostResourceFullDuplexResponse.Upser" +
      "tResourceEventH\000\022q\n\025remove_resource_even" +
      "t\030\003 \001(\0132P.keyapis.telemetry_control.v1.P" +
      "ostResourceFullDuplexResponse.RemoveReso" +
      "urceEventH\000\032Y\n\023RemoveResourceEvent\022B\n\013re" +
      "source_id\030\001 \001(\0132(.keyapis.telemetry_cont" +
      "rol.v1.ResourceIdB\003\340A\002\032T\n\023UpsertResource" +
      "Event\022=\n\010resource\030\001 \001(\0132&.keyapis.teleme" +
      "try_control.v1.ResourceB\003\340A\002B\007\n\005event\"\317\001" +
      "\n\nResourceId\022\025\n\013building_id\030\001 \001(\005H\000\022\023\n\td" +
      "evice_id\030\002 \001(\005H\000\022\031\n\017metric_point_id\030\003 \001(" +
      "\tH\000\022\026\n\014indicator_id\030\004 \001(\005H\000\022Z\n\026indicator" +
      "_metric_point\030\005 \001(\01328.keyapis.telemetry_" +
      "control.v1.DeviceIndicatorMetricPointH\000B" +
      "\006\n\004type\"\352\002\n\010Resource\022:\n\010building\030\001 \001(\0132&" +
      ".keyapis.telemetry_control.v1.BuildingH\000" +
      "\0226\n\006device\030\002 \001(\0132$.keyapis.telemetry_con" +
      "trol.v1.DeviceH\000\022H\n\014metric_point\030\003 \001(\01320" +
      ".keyapis.telemetry_control.v1.Device.Met" +
      "ricPointH\000\022<\n\tindicator\030\004 \001(\0132\'.keyapis." +
      "telemetry_control.v1.IndicatorH\000\022Z\n\026indi" +
      "cator_metric_point\030\005 \001(\01328.keyapis.telem" +
      "etry_control.v1.DeviceIndicatorMetricPoi" +
      "ntH\000B\006\n\004type\"\236\005\n\035PostResourceFullDuplexR" +
      "equest\022\022\n\nrequest_id\030\001 \001(\t\022p\n\025resource_a" +
      "sync_status\030\002 \001(\0132O.keyapis.telemetry_co" +
      "ntrol.v1.PostResourceFullDuplexRequest.R" +
      "esourceAsyncStatusH\000\032\356\003\n\023ResourceAsyncSt" +
      "atus\022B\n\013resource_id\030\001 \001(\0132(.keyapis.tele" +
      "metry_control.v1.ResourceIdB\003\340A\002\022g\n\004data" +
      "\030\002 \001(\0132W.keyapis.telemetry_control.v1.Po" +
      "stResourceFullDuplexRequest.ResourceAsyn" +
      "cStatus.SuccessH\000\022f\n\005error\030\003 \001(\0132U.keyap" +
      "is.telemetry_control.v1.PostResourceFull" +
      "DuplexRequest.ResourceAsyncStatus.ErrorH" +
      "\000\032\t\n\007Success\032\256\001\n\005Error\022u\n\007unknown\030\001 \001(\0132" +
      "b.keyapis.telemetry_control.v1.PostResou" +
      "rceFullDuplexRequest.ResourceAsyncStatus" +
      ".Error.UnknownErrorH\000\032$\n\014UnknownError\022\024\n" +
      "\007message\030\001 \001(\tB\003\340A\002B\010\n\006reasonB\006\n\004typeB\006\n" +
      "\004task2\253\001\n\rStreamService\022\231\001\n\026PostResource" +
      "FullDuplex\022;.keyapis.telemetry_control.v" +
      "1.PostResourceFullDuplexRequest\032<.keyapi" +
      "s.telemetry_control.v1.PostResourceFullD" +
      "uplexResponse\"\000(\0010\001B\342\001\n\037ru.keyapis.telem" +
      "etry_control.v1B\036KeyapisTelemetryControl" +
      "V1ProtoH\003P\000Z\035/keyapis_telemetry_control_" +
      "v1\330\001\001\370\001\001\242\002\031KEYAPISTELEMETRYCONTROLV1\252\002\033K" +
      "eyapis.TelemetryControl.V1\312\002\033Keyapis\\Tel" +
      "emetryControl\\V1\352\002\035Keyapis::TelemetryCon" +
      "trol::V1b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.api.FieldBehaviorProto.getDescriptor(),
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.getDescriptor(),
          ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.getDescriptor(),
        });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor,
        new java.lang.String[] { "RequestId", "UpsertResourceEvent", "RemoveResourceEvent", "Event", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_RemoveResourceEvent_descriptor,
        new java.lang.String[] { "ResourceId", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexResponse_UpsertResourceEvent_descriptor,
        new java.lang.String[] { "Resource", });
    internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_telemetry_control_v1_ResourceId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_ResourceId_descriptor,
        new java.lang.String[] { "BuildingId", "DeviceId", "MetricPointId", "IndicatorId", "IndicatorMetricPoint", "Type", });
    internal_static_keyapis_telemetry_control_v1_Resource_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_telemetry_control_v1_Resource_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_Resource_descriptor,
        new java.lang.String[] { "Building", "Device", "MetricPoint", "Indicator", "IndicatorMetricPoint", "Type", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor,
        new java.lang.String[] { "RequestId", "ResourceAsyncStatus", "Task", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor,
        new java.lang.String[] { "ResourceId", "Data", "Error", "Type", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Success_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor,
        new java.lang.String[] { "Unknown", "Reason", });
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor =
      internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_telemetry_control_v1_PostResourceFullDuplexRequest_ResourceAsyncStatus_Error_UnknownError_descriptor,
        new java.lang.String[] { "Message", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.api.FieldBehaviorProto.getDescriptor();
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.getDescriptor();
    ru.keyapis.telemetry_control.v1.KeyapisTelemetryControlV1Proto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
